)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"a856325d8e012efb6e56cb05227170d6a5b156ed","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-22 17:03:21 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support distributed dhcp agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic84b47cb1aae0bd50995e01bc9c83de978a31bc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_97df52d5","line":7,"updated":"2015-05-22 23:09:44.000000000","message":"Blueprint?","commit_id":"9d8e7ccb2191ececf4f6c0bebc3a838068fc47f9"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"006b18156082f505f686f66c3c3f2e786ce2d6db","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-17 12:02:12 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support distributed dhcp agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic84b47cb1aae0bd50995e01bc9c83de978a31bc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa32b979_b633a713","line":7,"updated":"2015-06-17 12:44:53.000000000","message":"Commit message to develop: description, reference to a bug/bp, etc.","commit_id":"958dda43525fef0c1db7a11347d60ca1a6ff07b6"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"05cf659eacab4feb9eeab358ac863fe1dd00430a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     shihanzhang \u003cshihanzhang@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-17 12:02:12 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"support distributed dhcp agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ic84b47cb1aae0bd50995e01bc9c83de978a31bc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa32b979_5ee6cde8","line":7,"in_reply_to":"fa32b979_b633a713","updated":"2015-06-18 03:49:08.000000000","message":"when all works finished, I will add description and bp reference","commit_id":"958dda43525fef0c1db7a11347d60ca1a6ff07b6"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Currently this patch only works for OVS agent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: 1468236"},{"line_number":13,"context_line":"Partially-Implements: blueprint distributed-dhcp"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic84b47cb1aae0bd50995e01bc9c83de978a31bc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a50d1a3_de7453ff","line":13,"updated":"2015-07-28 04:23:55.000000000","message":"#DocImpact since new config options","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Currently this patch only works for OVS agent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: 1468236"},{"line_number":13,"context_line":"Partially-Implements: blueprint distributed-dhcp"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic84b47cb1aae0bd50995e01bc9c83de978a31bc6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a50d1a3_324a4627","line":13,"in_reply_to":"3a50d1a3_de7453ff","updated":"2015-07-28 07:09:21.000000000","message":"agree","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"9026be1d06a6f9a47d5d26eecb3ab2ca915ecd97","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support distributed dhcp agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this patch enable neutron support distributed DHCP agent."},{"line_number":10,"context_line":"Currently this patch only works for OVS agent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1a4dcd0f_65040315","line":9,"updated":"2015-08-04 01:19:13.000000000","message":"This patch enables neutron support of distributed DHCP agent.","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"0c6d2edd58a67f08e975b08f4c9597afba45316a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support distributed dhcp agent"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this patch enable neutron support distributed DHCP agent."},{"line_number":10,"context_line":"Currently this patch only works for OVS agent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1a4dcd0f_a573eb4c","line":9,"in_reply_to":"1a4dcd0f_65040315","updated":"2015-08-04 01:33:05.000000000","message":"thx for your review and suggestion","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9d103d03b39513ffa5f4dc8780b1bf9222981867","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch enables neutron support of distributed DHCP"},{"line_number":10,"context_line":"agent. Currently this patch only works for OVS agent."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":"Related-Bug: 1468236"},{"line_number":14,"context_line":"Partially-Implements: blueprint distributed-dhcp"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7a740942_724db471","line":12,"updated":"2015-12-04 01:21:01.000000000","message":"Please follow guidelines as detailed here:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2015-November/080294.html\n\n\"you will need to add a description whenever you add a DocImpact flag in your commit message.\"","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"}],"etc/dhcp_agent.ini":[{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# If the timeout expires, ovs commands will fail with ALARMCLOCK error."},{"line_number":92,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# The working mode for the agent. Allowed values are:"},{"line_number":95,"context_line":"# - legacy:"},{"line_number":96,"context_line":"# - distributed:"},{"line_number":97,"context_line":"# dhcp_agent_mode \u003d legacy"}],"source_content_type":"text/x-properties","patch_set":9,"id":"3a50d1a3_1edddbdf","line":94,"updated":"2015-07-28 04:23:55.000000000","message":"Please add a little more description to this options for the end user.   For instance,  why would end user want to set \"working mode\" for the agent to \"distributed\" ... and what else needs to be done in that case (i.e. run DHCP agent on all compute nodes) ?","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# If the timeout expires, ovs commands will fail with ALARMCLOCK error."},{"line_number":92,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# The working mode for the agent. Allowed values are:"},{"line_number":95,"context_line":"# - legacy:"},{"line_number":96,"context_line":"# - distributed:"},{"line_number":97,"context_line":"# dhcp_agent_mode \u003d legacy"}],"source_content_type":"text/x-properties","patch_set":9,"id":"3a50d1a3_52235258","line":94,"in_reply_to":"3a50d1a3_1edddbdf","updated":"2015-07-28 07:09:21.000000000","message":"got it","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"# The working mode for the agent. Allowed values are:"},{"line_number":95,"context_line":"# - legacy:"},{"line_number":96,"context_line":"# - distributed:"},{"line_number":97,"context_line":"# dhcp_agent_mode \u003d legacy"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"[AGENT]"},{"line_number":100,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":9,"id":"3a50d1a3_be9b8717","line":97,"updated":"2015-07-28 04:23:55.000000000","message":"Maybe this should be distributed_dhcp_agent \u003d True/False  to match what is used in neutron.conf.","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"# The working mode for the agent. Allowed values are:"},{"line_number":95,"context_line":"# - legacy:"},{"line_number":96,"context_line":"# - distributed:"},{"line_number":97,"context_line":"# dhcp_agent_mode \u003d legacy"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"[AGENT]"},{"line_number":100,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":9,"id":"3a50d1a3_12e94ae6","line":97,"in_reply_to":"3a50d1a3_be9b8717","updated":"2015-07-28 07:09:21.000000000","message":"Done","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"307c6698cdc63d1252792b95df407ae652e0dbdc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"#   deployed on a centralized networking node to provide DHCP services"},{"line_number":97,"context_line":"# - distributed: this mode enables Distributed DHCP functionality, and"},{"line_number":98,"context_line":"#   must be used for an DHCP agent that runs on a compute host."},{"line_number":99,"context_line":"# dhcp_agent_mode \u003d legacy"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"[AGENT]"},{"line_number":102,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":10,"id":"3a50d1a3_39c63869","line":99,"updated":"2015-07-30 05:33:29.000000000","message":"Since there are only 2 modes, maybe it would be better if this was:\n\n   distributed_dhcp_agent \u003d True/False \n\nIt would then match the property being added to neutron.conf","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"40c966b9757443f0d8e9dfd3d622322598d03085","unresolved":false,"context_lines":[{"line_number":96,"context_line":"#   deployed on a centralized networking node to provide DHCP services"},{"line_number":97,"context_line":"# - distributed: this mode enables Distributed DHCP functionality, and"},{"line_number":98,"context_line":"#   must be used for an DHCP agent that runs on a compute host."},{"line_number":99,"context_line":"# dhcp_agent_mode \u003d legacy"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"[AGENT]"},{"line_number":102,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":10,"id":"3a50d1a3_3c9146f2","line":99,"in_reply_to":"3a50d1a3_39c63869","updated":"2015-07-30 06:45:41.000000000","message":"agree","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"9026be1d06a6f9a47d5d26eecb3ab2ca915ecd97","unresolved":false,"context_lines":[{"line_number":92,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# (BoolOpt) Set True to enable DHCP agent runing on distribued mode."},{"line_number":95,"context_line":"# dist_dhcp_mode \u003d False"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"[AGENT]"},{"line_number":98,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":13,"id":"1a4dcd0f_455ea7ea","line":95,"updated":"2015-08-04 01:19:13.000000000","message":"Nit: I think \"dist_\" should be expanded to \"distributed_\".","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"0c6d2edd58a67f08e975b08f4c9597afba45316a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# (BoolOpt) Set True to enable DHCP agent runing on distribued mode."},{"line_number":95,"context_line":"# dist_dhcp_mode \u003d False"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"[AGENT]"},{"line_number":98,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":13,"id":"1a4dcd0f_05b09fdc","line":95,"in_reply_to":"1a4dcd0f_455ea7ea","updated":"2015-08-04 01:33:05.000000000","message":"Done","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":96,"context_line":"# If the timeout expires, ovs commands will fail with ALARMCLOCK error."},{"line_number":97,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# (BoolOpt) Set True to enable DHCP agent runing on distribued mode."},{"line_number":100,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"[AGENT]"}],"source_content_type":"text/x-properties","patch_set":17,"id":"fa1b9901_732fb7f6","line":99,"updated":"2015-08-18 18:09:25.000000000","message":"runNing on distribuTed","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"# If the timeout expires, ovs commands will fail with ALARMCLOCK error."},{"line_number":97,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# (BoolOpt) Set True to enable DHCP agent runing on distribued mode."},{"line_number":100,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"[AGENT]"}],"source_content_type":"text/x-properties","patch_set":17,"id":"fa1b9901_b509c5df","line":99,"in_reply_to":"fa1b9901_732fb7f6","updated":"2015-08-24 12:15:21.000000000","message":"got it","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"75457ba152ff93ca610c9c26541a641c45bcdb61","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (BoolOpt) Set True to enable DHCP agent running on distributed mode."},{"line_number":108,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"[AGENT]"},{"line_number":111,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":18,"id":"fa1b9901_a1d38e5e","line":108,"updated":"2015-08-25 10:53:22.000000000","message":"I don\u0027t see why we have to add this flag in more than one config file. Either you have DHCP distributed or you don\u0027t. It doesn\u0027t make sense to set it distributed in some dhcp agent and in some not or to set it in the agent and not in the server.\nCan we have this flag only in one place?","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"37fc434460e5250f40d757e669283835edf21ed0","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (BoolOpt) Set True to enable DHCP agent running on distributed mode."},{"line_number":108,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"[AGENT]"},{"line_number":111,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":18,"id":"fa1b9901_27e78be5","line":108,"in_reply_to":"fa1b9901_49a898db","updated":"2015-08-25 12:48:27.000000000","message":"that is a good idea","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"beeceb60872b69e63e45683cc50a4725618b721b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (BoolOpt) Set True to enable DHCP agent running on distributed mode."},{"line_number":108,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"[AGENT]"},{"line_number":111,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":18,"id":"fa1b9901_49a898db","line":108,"in_reply_to":"fa1b9901_96080fdb","updated":"2015-08-25 12:03:08.000000000","message":"Take a look at:\nhttps://github.com/openstack/neutron/blob/master/neutron/agent/l3/agent.py#L177\n\nWe could do something like that, where the setting is persisted only on the server and the agents get it via RPC. I generally think we should be doing more of that and reduce configuration complexity.","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"511f0bae72c1c8256c1923d6bf52b3eb5ab34f4f","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# ovs_vsctl_timeout \u003d 10"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# (BoolOpt) Set True to enable DHCP agent running on distributed mode."},{"line_number":108,"context_line":"# distributed_dhcp_mode \u003d False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"[AGENT]"},{"line_number":111,"context_line":"# Log agent heartbeats from this DHCP agent"}],"source_content_type":"text/x-properties","patch_set":18,"id":"fa1b9901_96080fdb","line":108,"in_reply_to":"fa1b9901_a1d38e5e","updated":"2015-08-25 11:51:43.000000000","message":"Now we assume neutron-server and dhcp-agent read different config file, but I think you are right, from user perspective, it is complex to add this flag in more than one config file.","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"}],"etc/neutron.conf":[{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"# mac_generation_retries \u003d 16"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"#"},{"line_number":114,"context_line":"# distributed_dhcp_agent \u003d False"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# DHCP Lease duration (in seconds).  Use -1 to"},{"line_number":117,"context_line":"# tell dnsmasq to use infinite lease times."}],"source_content_type":"text/plain","patch_set":9,"id":"3a50d1a3_3eda17e9","line":114,"updated":"2015-07-28 04:23:55.000000000","message":"Description needed","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"# mac_generation_retries \u003d 16"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"#"},{"line_number":114,"context_line":"# distributed_dhcp_agent \u003d False"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# DHCP Lease duration (in seconds).  Use -1 to"},{"line_number":117,"context_line":"# tell dnsmasq to use infinite lease times."}],"source_content_type":"text/plain","patch_set":9,"id":"3a50d1a3_32cd6685","line":114,"in_reply_to":"3a50d1a3_3eda17e9","updated":"2015-07-28 07:09:21.000000000","message":"Done","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"9026be1d06a6f9a47d5d26eecb3ab2ca915ecd97","unresolved":false,"context_lines":[{"line_number":111,"context_line":"# mac_generation_retries \u003d 16"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# Enable Neutron server support distributed DHCP agent."},{"line_number":114,"context_line":"# dist_dhcp_agent \u003d False"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# DHCP Lease duration (in seconds).  Use -1 to"},{"line_number":117,"context_line":"# tell dnsmasq to use infinite lease times."}],"source_content_type":"text/plain","patch_set":13,"id":"1a4dcd0f_c5f957ca","line":114,"updated":"2015-08-04 01:19:13.000000000","message":"Nit:  \"Distributed\" is not abbreviated in other properties in this file... such as \"router_distributed\" on line 10.   Please switch to \"distributed_dhcp_agent\".","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"0c6d2edd58a67f08e975b08f4c9597afba45316a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"# mac_generation_retries \u003d 16"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# Enable Neutron server support distributed DHCP agent."},{"line_number":114,"context_line":"# dist_dhcp_agent \u003d False"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"# DHCP Lease duration (in seconds).  Use -1 to"},{"line_number":117,"context_line":"# tell dnsmasq to use infinite lease times."}],"source_content_type":"text/plain","patch_set":13,"id":"1a4dcd0f_85490fd3","line":114,"in_reply_to":"1a4dcd0f_c5f957ca","updated":"2015-08-04 01:33:05.000000000","message":"Done","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"}],"etc/neutron/plugins/ml2/openvswitch_agent.ini":[{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"9026be1d06a6f9a47d5d26eecb3ab2ca915ecd97","unresolved":false,"context_lines":[{"line_number":131,"context_line":"# (BoolOpt) Set to True on L2 agents to enable support"},{"line_number":132,"context_line":"# for distributed dhcp agent."},{"line_number":133,"context_line":"#"},{"line_number":134,"context_line":"# dist_dhcp_port \u003d False"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"# (IntOpt) Set new timeout in seconds for new rpc calls after agent receives"},{"line_number":137,"context_line":"# SIGTERM. If value is set to 0, rpc timeout won\u0027t be changed\""}],"source_content_type":"text/x-properties","patch_set":13,"id":"1a4dcd0f_c5c4f793","line":134,"updated":"2015-08-04 01:19:13.000000000","message":"Nit:  I think  \"dist_\" should be expanded to \"distributed_\" to match the previous option  \"enable_distributed_routing\".","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"0c6d2edd58a67f08e975b08f4c9597afba45316a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"# (BoolOpt) Set to True on L2 agents to enable support"},{"line_number":132,"context_line":"# for distributed dhcp agent."},{"line_number":133,"context_line":"#"},{"line_number":134,"context_line":"# dist_dhcp_port \u003d False"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"# (IntOpt) Set new timeout in seconds for new rpc calls after agent receives"},{"line_number":137,"context_line":"# SIGTERM. If value is set to 0, rpc timeout won\u0027t be changed\""}],"source_content_type":"text/x-properties","patch_set":13,"id":"1a4dcd0f_451227b6","line":134,"in_reply_to":"1a4dcd0f_c5c4f793","updated":"2015-08-04 01:33:05.000000000","message":"Done","commit_id":"6211a2b6a2b7fc336f7eaa0b77e127514c9a4816"}],"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"619de58e6133b82af72d03aeda9f633fa19b515c","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            self.cache.put_port(updated_port)"},{"line_number":335,"context_line":"            self.call_driver(driver_action, network)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _is_distributed(self):"},{"line_number":338,"context_line":"        return self.conf.dhcp_agent_mode \u003d\u003d \u0027distributed\u0027"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def _is_port_on_this_agent(self, port):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_7c1ac370","line":337,"updated":"2015-07-28 17:17:52.000000000","message":"This function is pretty short. Is it worth being a function instead of inline?","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"619de58e6133b82af72d03aeda9f633fa19b515c","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            self.call_driver(driver_action, network)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _is_distributed(self):"},{"line_number":338,"context_line":"        return self.conf.dhcp_agent_mode \u003d\u003d \u0027distributed\u0027"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def _is_port_on_this_agent(self, port):"},{"line_number":341,"context_line":"        host \u003d \u0027\u0027 if self._is_distributed() else self.conf.host"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_9148d8b4","line":338,"updated":"2015-07-28 17:17:52.000000000","message":"could do:\n\nreturn self.conf.dhcp_agent_mode is \u0027distributed\u0027","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":16053,"name":"Pengtao Huang","email":"huangpengtao@huawei.com","username":"huangpengtao"},"change_message_id":"9f2525d6bdd6b926d387afd7ff7de519f8076b61","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            self.call_driver(driver_action, network)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _is_port_on_this_agent(self, port):"},{"line_number":338,"context_line":"        host \u003d \u0027\u0027 if self.conf.distributed_dhcp_mode else self.conf.host"},{"line_number":339,"context_line":"        thishost \u003d utils.get_dhcp_agent_device_id(port[\u0027network_id\u0027], host)"},{"line_number":340,"context_line":"        return port[\u0027device_id\u0027] \u003d\u003d thishost"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_4453796b","line":338,"updated":"2015-08-26 01:43:53.000000000","message":"if you have many host with different distributed_dhcp_mode,\nget_dhcp_agent_device_id will be same.Is it correct?","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"}],"neutron/agent/dhcp/config.py":[{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027dhcp_agent_mode\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027legacy\u0027,"},{"line_number":35,"context_line":"               help\u003d_(\u0027Dhcp agent mode\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_1e04fb47","line":35,"updated":"2015-07-28 04:23:55.000000000","message":"Additional help text","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027dhcp_agent_mode\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027legacy\u0027,"},{"line_number":35,"context_line":"               help\u003d_(\u0027Dhcp agent mode\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_92a23aad","line":35,"in_reply_to":"3a50d1a3_1e04fb47","updated":"2015-07-28 07:09:21.000000000","message":"Done","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"307c6698cdc63d1252792b95df407ae652e0dbdc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027dhcp_agent_mode\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027legacy\u0027,"},{"line_number":35,"context_line":"               help\u003d_(\u0027Dhcp agent mode\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_f985300a","line":35,"updated":"2015-07-30 05:33:29.000000000","message":"Consider changing to distributed_dhcp_agent to match neutron.conf","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"40c966b9757443f0d8e9dfd3d622322598d03085","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027dhcp_agent_mode\u0027,"},{"line_number":34,"context_line":"               default\u003d\u0027legacy\u0027,"},{"line_number":35,"context_line":"               help\u003d_(\u0027Dhcp agent mode\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_5c8e92d1","line":35,"in_reply_to":"3a50d1a3_f985300a","updated":"2015-07-30 06:45:41.000000000","message":"Done","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.BoolOpt(\u0027distributed_dhcp_mode\u0027,"},{"line_number":34,"context_line":"                default\u003dFalse,"},{"line_number":35,"context_line":"                help\u003d_(\u0027Enable DHCP agent runing on distribued mode.\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_9307eb1b","line":35,"updated":"2015-08-18 18:09:25.000000000","message":"runNing on distribuTed :)","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d_(\u0027Number of threads to use during sync process.\u0027)),"},{"line_number":33,"context_line":"    cfg.BoolOpt(\u0027distributed_dhcp_mode\u0027,"},{"line_number":34,"context_line":"                default\u003dFalse,"},{"line_number":35,"context_line":"                help\u003d_(\u0027Enable DHCP agent runing on distribued mode.\u0027)),"},{"line_number":36,"context_line":"]"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"DHCP_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_752a4d2e","line":35,"in_reply_to":"fa1b9901_9307eb1b","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"}],"neutron/agent/linux/dhcp.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"c0d0e1cc71af59d1f5e19649e847ccb2b4301146","unresolved":false,"context_lines":[{"line_number":978,"context_line":""},{"line_number":979,"context_line":"            device.route.delete_gateway(gateway)"},{"line_number":980,"context_line":""},{"line_number":981,"context_line":"    def _is_distributed(self):"},{"line_number":982,"context_line":"        return self.conf.dhcp_agent_mode \u003d\u003d \u0027distributed\u0027"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"    def setup_dhcp_port(self, network):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_a828dfe2","line":981,"updated":"2015-07-29 12:48:40.000000000","message":"I see only one use of this function - I\u0027d just inline it.","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"7258ef5fed0fc5eab1fe5d3958a06800d699186a","unresolved":false,"context_lines":[{"line_number":978,"context_line":""},{"line_number":979,"context_line":"            device.route.delete_gateway(gateway)"},{"line_number":980,"context_line":""},{"line_number":981,"context_line":"    def _is_distributed(self):"},{"line_number":982,"context_line":"        return self.conf.dhcp_agent_mode \u003d\u003d \u0027distributed\u0027"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"    def setup_dhcp_port(self, network):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a50d1a3_50499cb6","line":981,"in_reply_to":"3a50d1a3_a828dfe2","updated":"2015-07-30 00:45:39.000000000","message":"agree","commit_id":"7061e838fe1239001a13c673820e55fccb506a9a"}],"neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        # data is {\u0027key\u0027 : \u0027value\u0027} with only one key"},{"line_number":200,"context_line":"        if method_name not in self.VALID_METHOD_NAMES:"},{"line_number":201,"context_line":"            return"},{"line_number":202,"context_line":"        obj_type \u003d data.keys()[0]"},{"line_number":203,"context_line":"        if obj_type not in self.VALID_RESOURCES:"},{"line_number":204,"context_line":"            return"},{"line_number":205,"context_line":"        obj_value \u003d data[obj_type]"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_0ecbb0a6","line":202,"updated":"2015-08-18 18:09:25.000000000","message":"prefer:\n\n  obj_type \u003d next(iter(data))\n  # or directly\n  obj_type, obj_value \u003d next(iter(data.items()))\n\nwhich is py3K compliant","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        # data is {\u0027key\u0027 : \u0027value\u0027} with only one key"},{"line_number":200,"context_line":"        if method_name not in self.VALID_METHOD_NAMES:"},{"line_number":201,"context_line":"            return"},{"line_number":202,"context_line":"        obj_type \u003d data.keys()[0]"},{"line_number":203,"context_line":"        if obj_type not in self.VALID_RESOURCES:"},{"line_number":204,"context_line":"            return"},{"line_number":205,"context_line":"        obj_value \u003d data[obj_type]"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_70801b47","line":202,"in_reply_to":"fa1b9901_0ecbb0a6","updated":"2015-08-24 12:15:21.000000000","message":"agree","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":14154,"name":"Takanori Miyagishi","email":"miyagishi.t@jp.fujitsu.com","username":"takanorimiyagishi"},"change_message_id":"0f11b9a9fff1c91c7df1e461492fc1efadc01e2f","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        dhcp_ports \u003d self.plugin.get_ports(context, filters\u003dfilters)"},{"line_number":248,"context_line":"        subnets \u003d self.plugin.get_subnets(context,"},{"line_number":249,"context_line":"                                          {\u0027network_id\u0027: [network_id]})"},{"line_number":250,"context_line":"        if not dhcp_ports:"},{"line_number":251,"context_line":"            port \u003d dict("},{"line_number":252,"context_line":"                admin_state_up\u003dTrue,"},{"line_number":253,"context_line":"                device_id\u003dconstants.DEVICE_ID_RESERVED_DHCP_PORT,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_a3b40ad1","line":250,"updated":"2015-08-28 06:55:40.000000000","message":"If all subnets disabled dhcp, I think we shouldn\u0027t create distributed dhcp_port for prevent unnecessary port creation.","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"fc228f170e41e78e3651754ff3bb5a6e3d6ec1d9","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        dhcp_ports \u003d self.plugin.get_ports(context, filters\u003dfilters)"},{"line_number":248,"context_line":"        subnets \u003d self.plugin.get_subnets(context,"},{"line_number":249,"context_line":"                                          {\u0027network_id\u0027: [network_id]})"},{"line_number":250,"context_line":"        if not dhcp_ports:"},{"line_number":251,"context_line":"            port \u003d dict("},{"line_number":252,"context_line":"                admin_state_up\u003dTrue,"},{"line_number":253,"context_line":"                device_id\u003dconstants.DEVICE_ID_RESERVED_DHCP_PORT,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_f7eddc25","line":250,"in_reply_to":"da20952f_a3b40ad1","updated":"2015-08-28 08:26:38.000000000","message":"you are right, this is a good catch!","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"}],"neutron/api/rpc/handlers/dhcp_rpc.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"a856325d8e012efb6e56cb05227170d6a5b156ed","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            try:"},{"line_number":179,"context_line":"                plugin.add_network_by_agent_host_id(context, host, network_id)"},{"line_number":180,"context_line":"            except Exception:"},{"line_number":181,"context_line":"                LOG.warn(_LW(\"Can\u0027t add network to specail host.\"))"},{"line_number":182,"context_line":"            self._ensure_dhcp_port_binding(context, plugin, network, host)"},{"line_number":183,"context_line":"            filters \u003d {\u0027binding:host_id\u0027: [host]}"},{"line_number":184,"context_line":"        ports \u003d plugin.get_ports(context, filters\u003dfilters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_57f43a59","line":181,"updated":"2015-05-22 23:09:44.000000000","message":"Spelling error, although the error itself is not very informative","commit_id":"9d8e7ccb2191ececf4f6c0bebc3a838068fc47f9"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        return self._port_action(plugin, context, port, \u0027update_port\u0027)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class DestDhcpRpcCallback(DhcpRpcCallback):"},{"line_number":240,"context_line":"    def _update_dhcp_port_binding(self, context, plugin, host, network):"},{"line_number":241,"context_line":"        try:"},{"line_number":242,"context_line":"            plugin.add_network_by_agent_host_id("}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_7eb89f75","line":239,"updated":"2015-07-28 04:23:55.000000000","message":"DestDhcpRpcCallback  or  DistDhcpRpcCallback ?","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        return self._port_action(plugin, context, port, \u0027update_port\u0027)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class DestDhcpRpcCallback(DhcpRpcCallback):"},{"line_number":240,"context_line":"    def _update_dhcp_port_binding(self, context, plugin, host, network):"},{"line_number":241,"context_line":"        try:"},{"line_number":242,"context_line":"            plugin.add_network_by_agent_host_id("}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_32948641","line":239,"in_reply_to":"3a50d1a3_7eb89f75","updated":"2015-07-28 07:09:21.000000000","message":"yes, DistDhcpRpcCallback is better","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        \u0027device_owner\u0027: ["},{"line_number":281,"context_line":"                            constants.DEVICE_OWNER_NOVA_INSTANCE]}"},{"line_number":282,"context_line":"        ports \u003d plugin.get_ports(context, filters\u003dport_filters)"},{"line_number":283,"context_line":"        network_ids \u003d set()"},{"line_number":284,"context_line":"        for port in ports:"},{"line_number":285,"context_line":"            network_ids.add(port[\u0027network_id\u0027])"},{"line_number":286,"context_line":"        if not network_ids:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_2eb8f4e4","line":283,"updated":"2015-08-18 18:09:25.000000000","message":"network_ids \u003d {p[\u0027network_id\u0027] for p in ports}","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                        \u0027device_owner\u0027: ["},{"line_number":281,"context_line":"                            constants.DEVICE_OWNER_NOVA_INSTANCE]}"},{"line_number":282,"context_line":"        ports \u003d plugin.get_ports(context, filters\u003dport_filters)"},{"line_number":283,"context_line":"        network_ids \u003d set()"},{"line_number":284,"context_line":"        for port in ports:"},{"line_number":285,"context_line":"            network_ids.add(port[\u0027network_id\u0027])"},{"line_number":286,"context_line":"        if not network_ids:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_50b3970a","line":283,"in_reply_to":"fa1b9901_2eb8f4e4","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        network_ids \u003d set()"},{"line_number":284,"context_line":"        for port in ports:"},{"line_number":285,"context_line":"            network_ids.add(port[\u0027network_id\u0027])"},{"line_number":286,"context_line":"        if not network_ids:"},{"line_number":287,"context_line":"            return {}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        network_filters \u003d {\u0027network_id\u0027: [id for id in network_ids]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_8ea020a1","line":286,"updated":"2015-08-18 18:09:25.000000000","message":"you can do:\n\n  if not ports:\n    return {}\n  network_ids \u003d {p[\u0027network_id\u0027] for p in ports}","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        network_ids \u003d set()"},{"line_number":284,"context_line":"        for port in ports:"},{"line_number":285,"context_line":"            network_ids.add(port[\u0027network_id\u0027])"},{"line_number":286,"context_line":"        if not network_ids:"},{"line_number":287,"context_line":"            return {}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        network_filters \u003d {\u0027network_id\u0027: [id for id in network_ids]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_90b92fef","line":286,"in_reply_to":"fa1b9901_8ea020a1","updated":"2015-08-24 12:15:21.000000000","message":"good suggestion","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        if not network_ids:"},{"line_number":287,"context_line":"            return {}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        network_filters \u003d {\u0027network_id\u0027: [id for id in network_ids]}"},{"line_number":290,"context_line":"        networks \u003d plugin.get_networks(context, filters\u003dnetwork_filters)"},{"line_number":291,"context_line":"        ports +\u003d self._get_dhcp_ports(context, plugin, networks)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_0eb170e1","line":289,"updated":"2015-08-18 18:09:25.000000000","message":"network_filters \u003d {\u0027...\u0027: list(network_ids)}","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        if not network_ids:"},{"line_number":287,"context_line":"            return {}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        network_filters \u003d {\u0027network_id\u0027: [id for id in network_ids]}"},{"line_number":290,"context_line":"        networks \u003d plugin.get_networks(context, filters\u003dnetwork_filters)"},{"line_number":291,"context_line":"        ports +\u003d self._get_dhcp_ports(context, plugin, networks)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_90628f15","line":289,"in_reply_to":"fa1b9901_0eb170e1","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"75457ba152ff93ca610c9c26541a641c45bcdb61","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return self._port_action(plugin, context, port, \u0027update_port\u0027)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class DistDhcpRpcCallback(DhcpRpcCallback):"},{"line_number":249,"context_line":"    def _update_dhcp_port_binding(self, context, plugin, host, network):"},{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            plugin.add_network_by_agent_host_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_46440873","line":248,"updated":"2015-08-25 10:53:22.000000000","message":"I don\u0027t like the idea of creating a completely new class, how would you handle rolling upgrades? Can you modify the existing class to support both cases (distributed and not distributed) ?","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"511f0bae72c1c8256c1923d6bf52b3eb5ab34f4f","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return self._port_action(plugin, context, port, \u0027update_port\u0027)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class DistDhcpRpcCallback(DhcpRpcCallback):"},{"line_number":249,"context_line":"    def _update_dhcp_port_binding(self, context, plugin, host, network):"},{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            plugin.add_network_by_agent_host_id("}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_36ab438b","line":248,"in_reply_to":"fa1b9901_46440873","updated":"2015-08-25 11:51:43.000000000","message":"In my previous patch set, I modify the existing class to support both cases, but I don\u0027t think that is good idea, because the codes will be more complex","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"}],"neutron/db/agentschedulers_db.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    if not binding:"},{"line_number":385,"context_line":"                        self.add_network_to_dhcp_agent(context, agent_db.id,"},{"line_number":386,"context_line":"                                                       network_id)"},{"line_number":387,"context_line":"        except Exception:"},{"line_number":388,"context_line":"            LOG.warn(_LW(\u0027Bind network %(network_id) to DHCP agent \u0027"},{"line_number":389,"context_line":"                         \u0027%(host_id) failed.\u0027),"},{"line_number":390,"context_line":"                     {\u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_0eff3068","line":387,"updated":"2015-08-18 18:09:25.000000000","message":"too broad exception catch?","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                    if not binding:"},{"line_number":385,"context_line":"                        self.add_network_to_dhcp_agent(context, agent_db.id,"},{"line_number":386,"context_line":"                                                       network_id)"},{"line_number":387,"context_line":"        except Exception:"},{"line_number":388,"context_line":"            LOG.warn(_LW(\u0027Bind network %(network_id) to DHCP agent \u0027"},{"line_number":389,"context_line":"                         \u0027%(host_id) failed.\u0027),"},{"line_number":390,"context_line":"                     {\u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_8246c24d","line":387,"in_reply_to":"fa1b9901_0eff3068","updated":"2015-08-24 12:15:21.000000000","message":"whether there has any exception, it should not be handle","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            if agent_db:"},{"line_number":398,"context_line":"                self.remove_network_from_dhcp_agent(context, agent_db[\u0027id\u0027],"},{"line_number":399,"context_line":"                                                    network_id, False)"},{"line_number":400,"context_line":"        except Exception:"},{"line_number":401,"context_line":"            LOG.warn(_LW(\u0027The network %(network_id)s is not hosted by the \u0027"},{"line_number":402,"context_line":"                         \u0027DHCP agent %(host_id)s.\u0027),"},{"line_number":403,"context_line":"                     {\u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_cef93882","line":400,"updated":"2015-08-18 18:09:25.000000000","message":"itto","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            if agent_db:"},{"line_number":398,"context_line":"                self.remove_network_from_dhcp_agent(context, agent_db[\u0027id\u0027],"},{"line_number":399,"context_line":"                                                    network_id, False)"},{"line_number":400,"context_line":"        except Exception:"},{"line_number":401,"context_line":"            LOG.warn(_LW(\u0027The network %(network_id)s is not hosted by the \u0027"},{"line_number":402,"context_line":"                         \u0027DHCP agent %(host_id)s.\u0027),"},{"line_number":403,"context_line":"                     {\u0027network_id\u0027: network_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_42298a88","line":400,"in_reply_to":"fa1b9901_cef93882","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"}],"neutron/db/migration/alembic_migrations/versions/2809c0760880_add_ml2_dhcp_port_bindings.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"cb5fe5df81aede8a6da45849c3805b4a424d2028","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    sa.Column(\u0027status\u0027, sa.String(length\u003d16), nullable\u003dFalse),"},{"line_number":42,"context_line":"    sa.ForeignKeyConstraint([\u0027port_id\u0027], [\u0027ports.id\u0027], ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"    sa.PrimaryKeyConstraint(\u0027port_id\u0027, \u0027host\u0027),"},{"line_number":44,"context_line":"    mysql_engine\u003d\u0027InnoDB\u0027"},{"line_number":45,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_34131a5d","line":44,"updated":"2015-06-17 09:09:51.000000000","message":"This is not needed, it sets automatically.","commit_id":"958dda43525fef0c1db7a11347d60ca1a6ff07b6"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"05cf659eacab4feb9eeab358ac863fe1dd00430a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    sa.Column(\u0027status\u0027, sa.String(length\u003d16), nullable\u003dFalse),"},{"line_number":42,"context_line":"    sa.ForeignKeyConstraint([\u0027port_id\u0027], [\u0027ports.id\u0027], ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":43,"context_line":"    sa.PrimaryKeyConstraint(\u0027port_id\u0027, \u0027host\u0027),"},{"line_number":44,"context_line":"    mysql_engine\u003d\u0027InnoDB\u0027"},{"line_number":45,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa32b979_dec3bd36","line":44,"in_reply_to":"fa32b979_34131a5d","updated":"2015-06-18 03:49:08.000000000","message":"agree, thx for your review and suggetion!","commit_id":"958dda43525fef0c1db7a11347d60ca1a6ff07b6"}],"neutron/plugins/ml2/db.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    hosts \u003d set()"},{"line_number":377,"context_line":"    query \u003d session.query(models.DHCPPortBinding)"},{"line_number":378,"context_line":"    for bind in query.filter(models.DHCPPortBinding.port_id \u003d\u003d port_id):"},{"line_number":379,"context_line":"        if bind.status \u003d\u003d n_const.PORT_STATUS_ACTIVE:"},{"line_number":380,"context_line":"            hosts.add(bind.host)"},{"line_number":381,"context_line":"    return hosts"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_4e61a838","line":379,"updated":"2015-08-18 18:09:25.000000000","message":"why not doing:\n\n  return query.filter(...).filter(models.DHCPPortBinding.status \u003d\u003d n_const.PORT_STATUS_ACTIVE).all()","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    hosts \u003d set()"},{"line_number":377,"context_line":"    query \u003d session.query(models.DHCPPortBinding)"},{"line_number":378,"context_line":"    for bind in query.filter(models.DHCPPortBinding.port_id \u003d\u003d port_id):"},{"line_number":379,"context_line":"        if bind.status \u003d\u003d n_const.PORT_STATUS_ACTIVE:"},{"line_number":380,"context_line":"            hosts.add(bind.host)"},{"line_number":381,"context_line":"    return hosts"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_62e7ee40","line":379,"in_reply_to":"fa1b9901_4e61a838","updated":"2015-08-24 12:15:21.000000000","message":"maybe, this is more better","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        if bind.status \u003d\u003d n_const.PORT_STATUS_ACTIVE:"},{"line_number":391,"context_line":"            return bind.status"},{"line_number":392,"context_line":"        elif bind.status \u003d\u003d n_const.PORT_STATUS_DOWN:"},{"line_number":393,"context_line":"            final_status \u003d bind.status"},{"line_number":394,"context_line":"    return final_status"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_2ed554b8","line":393,"updated":"2015-08-18 18:09:25.000000000","message":"using the following is faster:\n\n final_status \u003d n_const.PORT_STATUS_DOWN","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        if bind.status \u003d\u003d n_const.PORT_STATUS_ACTIVE:"},{"line_number":391,"context_line":"            return bind.status"},{"line_number":392,"context_line":"        elif bind.status \u003d\u003d n_const.PORT_STATUS_DOWN:"},{"line_number":393,"context_line":"            final_status \u003d bind.status"},{"line_number":394,"context_line":"    return final_status"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_02ae3298","line":393,"in_reply_to":"fa1b9901_2ed554b8","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"def get_dhcp_port_binding_by_host(session, port_id, host):"},{"line_number":409,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":410,"context_line":"        binding \u003d (session.query(models.DHCPPortBinding)."},{"line_number":411,"context_line":"                   filter(models.DHCPPortBinding.port_id.startswith(port_id),"},{"line_number":412,"context_line":"                          models.DHCPPortBinding.host \u003d\u003d host).first())"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_2eec748e","line":409,"updated":"2015-08-18 18:09:25.000000000","message":"no need to use a subtransaction to perform a db select","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"def get_dhcp_port_bindings(session, port_id):"},{"line_number":420,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":421,"context_line":"        bindings \u003d (session.query(models.DHCPPortBinding)."},{"line_number":422,"context_line":"                    filter(models.DHCPPortBinding.port_id.startswith(port_id))."},{"line_number":423,"context_line":"                    all())"},{"line_number":424,"context_line":"    if not bindings:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_eefe7c37","line":421,"updated":"2015-08-18 18:09:25.000000000","message":"itto","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"def get_dhcp_port_bindings(session, port_id):"},{"line_number":420,"context_line":"    with session.begin(subtransactions\u003dTrue):"},{"line_number":421,"context_line":"        bindings \u003d (session.query(models.DHCPPortBinding)."},{"line_number":422,"context_line":"                    filter(models.DHCPPortBinding.port_id.startswith(port_id))."},{"line_number":423,"context_line":"                    all())"},{"line_number":424,"context_line":"    if not bindings:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_42f18a69","line":421,"in_reply_to":"fa1b9901_eefe7c37","updated":"2015-08-24 12:15:21.000000000","message":"Done","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/br_phys.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1de32a41d3509e2bef66c64e6d4cc73da92c3004","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                                 src_port, in_port):"},{"line_number":65,"context_line":"        self.add_flow(priority\u003d2,"},{"line_number":66,"context_line":"                      dl_vlan\u003dvlan,"},{"line_number":67,"context_line":"                      proto\u003d\u0027udp\u0027,"},{"line_number":68,"context_line":"                      tp_dst\u003ddst_port,"},{"line_number":69,"context_line":"                      tp_src\u003dsrc_port,"},{"line_number":70,"context_line":"                      in_port\u003din_port,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_ceb13891","line":67,"updated":"2015-08-18 18:09:25.000000000","message":"why only udp? iirc, dhcp client uses tcp to renew their ip?","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"ade5c27418921600167defdea68422250ed2f0a3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                                 src_port, in_port):"},{"line_number":65,"context_line":"        self.add_flow(priority\u003d2,"},{"line_number":66,"context_line":"                      dl_vlan\u003dvlan,"},{"line_number":67,"context_line":"                      proto\u003d\u0027udp\u0027,"},{"line_number":68,"context_line":"                      tp_dst\u003ddst_port,"},{"line_number":69,"context_line":"                      tp_src\u003dsrc_port,"},{"line_number":70,"context_line":"                      in_port\u003din_port,"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa1b9901_82532239","line":67,"in_reply_to":"fa1b9901_ceb13891","updated":"2015-08-24 12:15:21.000000000","message":"to avoid using layer 3 or layer 4 flow tables, I will remove this flows","commit_id":"b0da9a55f8ab3c5072c75224316b95f4dcf4191c"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/br_tun.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d948e395101a0b8b7caa6a8487152f75fb9154b1","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    def deferred(self):"},{"line_number":241,"context_line":"        return DeferredOVSTunnelBridge(self)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def install_disable_dhcp_port(self, vlan, in_port, mac, deferred_br\u003dNone):"},{"line_number":244,"context_line":"        br \u003d deferred_br if deferred_br else self"},{"line_number":245,"context_line":"        br.add_flow(priority\u003d3,"},{"line_number":246,"context_line":"                    dl_vlan\u003dvlan,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_e2949ce9","line":243,"updated":"2015-08-26 16:43:00.000000000","message":"The original spec talked about DHCP requests from VMs not leaving the local host, so that they don\u0027t reach the other distributed DHCP agents. Thoughts on this? (I see this is only blocking traffic from the local DHCP port to leave the host).","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"b04d96659eb5982e1e58815e5e3cb18b9c9c0919","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    def deferred(self):"},{"line_number":241,"context_line":"        return DeferredOVSTunnelBridge(self)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def install_disable_dhcp_port(self, vlan, in_port, mac, deferred_br\u003dNone):"},{"line_number":244,"context_line":"        br \u003d deferred_br if deferred_br else self"},{"line_number":245,"context_line":"        br.add_flow(priority\u003d3,"},{"line_number":246,"context_line":"                    dl_vlan\u003dvlan,"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_862fdda0","line":243,"in_reply_to":"da20952f_e2949ce9","updated":"2015-08-27 02:33:04.000000000","message":"yes, the original spec talked about DHCP requests from VMs not leaving the local host, in my previous patch I also do it \nlike this, but when we test it on our production, we found if \nwe use layer 3 or layer 4 ovs flow tables, the performance is very bad in some cases, and now the lease file are local, so I make a tradeoff, just blocking traffic from the local DHCP port to leave the host. I will update the SPEC, and describe the advantage of these two approach","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"75457ba152ff93ca610c9c26541a641c45bcdb61","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            bridge \u003d self.tun_br"},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"        if bridge:"},{"line_number":785,"context_line":"            bridge.install_disable_dhcp_port(local_vlam_map.vlan,"},{"line_number":786,"context_line":"                                             self.patch_int_ofport,"},{"line_number":787,"context_line":"                                             port.vif_mac)"},{"line_number":788,"context_line":"        self.dhcp_ports[port.vif_id] \u003d dhcp_port"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_66234ca8","line":785,"updated":"2015-08-25 10:53:22.000000000","message":"I don\u0027t think the OVS agent should care if a port is owned by the DHCP or not. Can we move the needed logic somewhere else maybe in the InterfaceDriver used by the DHCP agent? If I good understand the blueprint the idea is to have a DHCP agent on every compute node so I don\u0027t see why we need to modify the ovs agent here. What kind of logic is needed, can you give more details? all this function is doing is installing a drop flow. Can you explain?","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"511f0bae72c1c8256c1923d6bf52b3eb5ab34f4f","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            bridge \u003d self.tun_br"},{"line_number":783,"context_line":""},{"line_number":784,"context_line":"        if bridge:"},{"line_number":785,"context_line":"            bridge.install_disable_dhcp_port(local_vlam_map.vlan,"},{"line_number":786,"context_line":"                                             self.patch_int_ofport,"},{"line_number":787,"context_line":"                                             port.vif_mac)"},{"line_number":788,"context_line":"        self.dhcp_ports[port.vif_id] \u003d dhcp_port"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_d6d687f0","line":785,"in_reply_to":"fa1b9901_66234ca8","updated":"2015-08-25 11:51:43.000000000","message":"on compute node, all TAP device are managed by l2 agent(ovs-agent), like VM\u0027s vnic TAP, router qr-xx TAP and DHCP TAP, l2 agent will get these TAP device info from neutron-server through RPC and set them tag","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"}],"neutron/plugins/ml2/models.py":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"a856325d8e012efb6e56cb05227170d6a5b156ed","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                            cascade\u003d\u0027delete\u0027))"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"class DHCPPortBinding(model_base.BASEV2):"},{"line_number":135,"context_line":"    \"\"\"Represent binding-related state of a DHCP port."},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_77f1766a","line":134,"updated":"2015-05-22 23:09:44.000000000","message":"There needs to be an alembic migration for this addition to the database schema","commit_id":"9d8e7ccb2191ececf4f6c0bebc3a838068fc47f9"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d948e395101a0b8b7caa6a8487152f75fb9154b1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    __tablename__ \u003d \u0027ml2_dhcp_port_bindings\u0027"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    port_id \u003d sa.Column(sa.String(36),"},{"line_number":141,"context_line":"                        sa.ForeignKey(\u0027ports.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":142,"context_line":"                        primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_02d51042","line":139,"updated":"2015-08-26 16:43:00.000000000","message":"Shouldn\u0027t this table just be port_id, host and the relationship? Why do you need to duplicate all of this data? (network_id, vif_type, vnic_type, profile and status).\n\nAlso, why can\u0027t you infer the DHCP port bindings from the port and the DHCP scheduling tables?","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"b04d96659eb5982e1e58815e5e3cb18b9c9c0919","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    __tablename__ \u003d \u0027ml2_dhcp_port_bindings\u0027"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    port_id \u003d sa.Column(sa.String(36),"},{"line_number":141,"context_line":"                        sa.ForeignKey(\u0027ports.id\u0027, ondelete\u003d\"CASCADE\"),"},{"line_number":142,"context_line":"                        primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_a6e2219e","line":139,"in_reply_to":"da20952f_02d51042","updated":"2015-08-27 02:33:04.000000000","message":"for your questions: 1.in a network, all compute nodes will share a DHCP port, so we can know these info (network_id, vif_type, vnic_type, profile and status) from the shared DHCP port, so we need add this table to record them. 2. sorry, I can\u0027t well know your question, could you make this question more clearly?","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"96b6ed03c04100c78d3047446d8d79db48d91d1e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.notifier \u003d rpc.AgentNotifierApi(topics.AGENT)"},{"line_number":146,"context_line":"        if cfg.CONF.distributed_dhcp_agent:"},{"line_number":147,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DistDhcpAgentNotifyAPI()"},{"line_number":148,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DestDhcpRpcCallback()"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DhcpAgentNotifyAPI()"},{"line_number":151,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DhcpRpcCallback()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_fe7b4fbc","line":148,"updated":"2015-07-28 04:23:55.000000000","message":"DestDhcpRpcCallback  or  DistDhcpRpcCallback ?","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"f4b5c529f3e36483b3467e3f02fd2590cae53a4c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.notifier \u003d rpc.AgentNotifierApi(topics.AGENT)"},{"line_number":146,"context_line":"        if cfg.CONF.distributed_dhcp_agent:"},{"line_number":147,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DistDhcpAgentNotifyAPI()"},{"line_number":148,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DestDhcpRpcCallback()"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DhcpAgentNotifyAPI()"},{"line_number":151,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DhcpRpcCallback()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_12a5caa0","line":148,"in_reply_to":"3a50d1a3_fe7b4fbc","updated":"2015-07-28 07:09:21.000000000","message":"Done","commit_id":"f805b8041c7ff422711a87ce9439c804ed6f6f7d"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"75457ba152ff93ca610c9c26541a641c45bcdb61","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    def _setup_rpc(self):"},{"line_number":155,"context_line":"        \"\"\"Initialize components to support agent communication.\"\"\""},{"line_number":156,"context_line":"        self.notifier \u003d rpc.AgentNotifierApi(topics.AGENT)"},{"line_number":157,"context_line":"        if cfg.CONF.distributed_dhcp_agent:"},{"line_number":158,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DistDhcpAgentNotifyAPI()"},{"line_number":159,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DistDhcpRpcCallback()"},{"line_number":160,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_a102ae07","line":157,"updated":"2015-08-25 10:53:22.000000000","message":"echoing my previous comment. It would be nice to have only one rpc class","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"511f0bae72c1c8256c1923d6bf52b3eb5ab34f4f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    def _setup_rpc(self):"},{"line_number":155,"context_line":"        \"\"\"Initialize components to support agent communication.\"\"\""},{"line_number":156,"context_line":"        self.notifier \u003d rpc.AgentNotifierApi(topics.AGENT)"},{"line_number":157,"context_line":"        if cfg.CONF.distributed_dhcp_agent:"},{"line_number":158,"context_line":"            dhcp_agent_notify \u003d dhcp_rpc_agent_api.DistDhcpAgentNotifyAPI()"},{"line_number":159,"context_line":"            dhcp_rpc_callback \u003d dhcp_rpc.DistDhcpRpcCallback()"},{"line_number":160,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa1b9901_56011769","line":157,"in_reply_to":"fa1b9901_a102ae07","updated":"2015-08-25 11:51:43.000000000","message":"Done","commit_id":"b084804551b5e30b8904448c12277d8329917c9d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"d948e395101a0b8b7caa6a8487152f75fb9154b1","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"                self._process_dvr_port_binding(mech_context, context, attrs)"},{"line_number":1301,"context_line":"            self._bind_port_if_needed(mech_context)"},{"line_number":1302,"context_line":""},{"line_number":1303,"context_line":"    def _is_distributed_dhcp_port(self, port_owner):"},{"line_number":1304,"context_line":"        return (port_owner \u003d\u003d const.DEVICE_OWNER_DHCP"},{"line_number":1305,"context_line":"                and cfg.CONF.enable_distributed_dhcp)"},{"line_number":1306,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_c28718d6","line":1303,"updated":"2015-08-26 16:43:00.000000000","message":"Is this correct? What if after an upgrade you turn on CONF.enable_distributed_dhcp. Existing (Centralized) DHCP ports will be marked as distributed, should they be?","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"b04d96659eb5982e1e58815e5e3cb18b9c9c0919","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"                self._process_dvr_port_binding(mech_context, context, attrs)"},{"line_number":1301,"context_line":"            self._bind_port_if_needed(mech_context)"},{"line_number":1302,"context_line":""},{"line_number":1303,"context_line":"    def _is_distributed_dhcp_port(self, port_owner):"},{"line_number":1304,"context_line":"        return (port_owner \u003d\u003d const.DEVICE_OWNER_DHCP"},{"line_number":1305,"context_line":"                and cfg.CONF.enable_distributed_dhcp)"},{"line_number":1306,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"da20952f_661729a4","line":1303,"in_reply_to":"da20952f_c28718d6","updated":"2015-08-27 02:33:04.000000000","message":"my idea is that after an upgrade, we just need to delete the current DHCP port, it will automatically create a new distributed dhcp port, current implement already support it","commit_id":"d217549a5d50c42aeb15eace7b94fd3bc1b4dba5"}]}
