)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3d00fa756afd5aa8ab1c51654df6b0a1a497f6e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"DHCP servers not handled by neutron."},{"line_number":17,"context_line":"In this case, neutron will never create any DHCP port in the"},{"line_number":18,"context_line":"subnet."},{"line_number":19,"context_line":"This behavior can be set through neutron config file, for"},{"line_number":20,"context_line":"example by setting dhcp_agents_per_network\u003d0."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Also note that we cannot set the value to None because then the"},{"line_number":23,"context_line":"value would be discarded by the metadata API."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_2adf963a","line":20,"range":{"start_line":19,"start_character":0,"end_line":20,"end_character":45},"updated":"2019-05-15 13:54:41.000000000","message":"Interestingly the config docs don\u0027t mention anything about this scenario:\n\nhttps://docs.openstack.org/neutron/latest/configuration/neutron.html#DEFAULT.dhcp_agents_per_network\n\nMaybe something you\u0027d like to contribute to those docs in neutron.","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88b955acf331fa837084f1cc56b24c8c8594d0b1","unresolved":false,"context_lines":[{"line_number":3116,"context_line":"            # This behavior can be set through neutron config file, for"},{"line_number":3117,"context_line":"            # example by setting dhcp_agents_per_network\u003d0."},{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_ca4d9a3e","line":3120,"range":{"start_line":3119,"start_character":12,"end_line":3120,"end_character":59},"updated":"2019-05-15 13:52:18.000000000","message":"Ack, search for dhcp_server in here:\n\nhttps://github.com/openstack/nova/blob/daa2ac2287df12dfdee532d66ef97a03350ca6af/nova/virt/netutils.py","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"40f595c772f23c39aa2a89df9a87704670ba1907","unresolved":false,"context_lines":[{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":3124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_d9b943cc","line":3121,"range":{"start_line":3121,"start_character":14,"end_line":3121,"end_character":60},"updated":"2019-05-10 14:35:19.000000000","message":"So how can we get the \"dhcp_server\" value?","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"93b039f46930ba8ed3ae946e896b8ee330aa3c78","unresolved":false,"context_lines":[{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":3124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_bcb47dd2","line":3121,"range":{"start_line":3121,"start_character":14,"end_line":3121,"end_character":60},"in_reply_to":"dfbec78f_5c99c1c1","updated":"2019-05-10 15:27:35.000000000","message":"You said the dhcp_server will used for metadata API. My question is how the real dhcp_server value will get?","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"dc0ac3207cdf58ab14fd1317e097755c8e7881ce","unresolved":false,"context_lines":[{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":3124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_dc2cd103","line":3121,"range":{"start_line":3121,"start_character":14,"end_line":3121,"end_character":60},"in_reply_to":"dfbec78f_bcb47dd2","updated":"2019-05-10 15:32:21.000000000","message":"Ah yes.\nIn fact, the metadata server is only checking if a value exist on that key, but is not using the value at all.\nSee here: https://github.com/openstack/nova/blob/master/nova/virt/netutils.py#L104","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"},{"author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"change_message_id":"a57fcc2084373d34a3d072cf87936d55b3ebcda3","unresolved":false,"context_lines":[{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":3124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_5c99c1c1","line":3121,"range":{"start_line":3121,"start_character":14,"end_line":3121,"end_character":60},"in_reply_to":"dfbec78f_d9b943cc","updated":"2019-05-10 15:08:57.000000000","message":"What do you mean?\nIn that case, there is no DHCP server handled by neutron.","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"cdc3808807f52c30f4eb29603cd8c452c946c42c","unresolved":false,"context_lines":[{"line_number":3118,"context_line":"            #"},{"line_number":3119,"context_line":"            # Also note that we cannot set the value to None because then the"},{"line_number":3120,"context_line":"            # value would be discarded by the metadata API."},{"line_number":3121,"context_line":"            # So the subnet gateway will be used as fallback."},{"line_number":3122,"context_line":"            if subnet.get(\u0027enable_dhcp\u0027) and \u0027dhcp_server\u0027 not in subnet_dict:"},{"line_number":3123,"context_line":"                subnet_dict[\u0027dhcp_server\u0027] \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":3124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_c36edcfe","line":3121,"range":{"start_line":3121,"start_character":14,"end_line":3121,"end_character":60},"in_reply_to":"dfbec78f_dc2cd103","updated":"2019-05-16 05:57:24.000000000","message":"Got it, Thanks.","commit_id":"a8fd0a2bd9d9011bde3995cd86b2784c6fd76d94"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"04c711fc00cb00c3737fa1b59d8a9927d1d43f25","unresolved":false,"context_lines":[{"line_number":2517,"context_line":"        subnet_data1 \u003d copy.copy(self.subnet_data1)"},{"line_number":2518,"context_line":"        subnet_data1[0][\u0027enable_dhcp\u0027] \u003d True"},{"line_number":2519,"context_line":""},{"line_number":2520,"context_line":"        neutronapi.get_client(mox.IgnoreArg()).AndReturn(self.moxed_client)"},{"line_number":2521,"context_line":"        self.moxed_client.list_subnets("},{"line_number":2522,"context_line":"            id\u003d[port_data[\u0027fixed_ips\u0027][0][\u0027subnet_id\u0027]]"},{"line_number":2523,"context_line":"        ).AndReturn({\u0027subnets\u0027: subnet_data1})"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfbec78f_c33c9ce2","line":2520,"range":{"start_line":2520,"start_character":8,"end_line":2520,"end_character":75},"updated":"2019-05-16 06:02:10.000000000","message":"Please consider to use mock in the test, mox will remove in the future.[1]\n\n[1] https://blueprints.launchpad.net/nova/+spec/mox-removal-train","commit_id":"91c6d80e2dd7033c7689be1c9a6c5e4429fe0998"}],"releasenotes/notes/always-set-dhcp-server-if-enable-dhcp-b96bf720af235902.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"964ae266204a328434096c11a86a1eb7dab6d98a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When enable_dhcp is set on a subnet, but there is no DHCP port on neutron,"},{"line_number":4,"context_line":"    then the dhcp_server value in meta hash will contain the subnet"},{"line_number":5,"context_line":"    gateway_ip instead of being absent."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fb8cfa7_90648c4b","line":3,"range":{"start_line":3,"start_character":9,"end_line":3,"end_character":20},"updated":"2019-06-14 16:43:36.000000000","message":"``enable_dhcp``","commit_id":"1c0847283d541c7376a3f2e0d5452f51ef770943"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"964ae266204a328434096c11a86a1eb7dab6d98a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When enable_dhcp is set on a subnet, but there is no DHCP port on neutron,"},{"line_number":4,"context_line":"    then the dhcp_server value in meta hash will contain the subnet"},{"line_number":5,"context_line":"    gateway_ip instead of being absent."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fb8cfa7_505a9482","line":3,"range":{"start_line":3,"start_character":39,"end_line":3,"end_character":40},"updated":"2019-06-14 16:43:36.000000000","message":"drop","commit_id":"1c0847283d541c7376a3f2e0d5452f51ef770943"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"964ae266204a328434096c11a86a1eb7dab6d98a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When enable_dhcp is set on a subnet, but there is no DHCP port on neutron,"},{"line_number":4,"context_line":"    then the dhcp_server value in meta hash will contain the subnet"},{"line_number":5,"context_line":"    gateway_ip instead of being absent."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fb8cfa7_106f3c2b","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":24},"updated":"2019-06-14 16:43:36.000000000","message":"``dhcp_server``","commit_id":"1c0847283d541c7376a3f2e0d5452f51ef770943"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"964ae266204a328434096c11a86a1eb7dab6d98a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When enable_dhcp is set on a subnet, but there is no DHCP port on neutron,"},{"line_number":4,"context_line":"    then the dhcp_server value in meta hash will contain the subnet"},{"line_number":5,"context_line":"    gateway_ip instead of being absent."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fb8cfa7_d0744400","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":14},"updated":"2019-06-14 16:43:36.000000000","message":"gateway IP","commit_id":"1c0847283d541c7376a3f2e0d5452f51ef770943"}]}
