)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c92baf8748f44e24e342af9e6cc7f67d7d503671","unresolved":false,"context_lines":[{"line_number":12,"context_line":"[1] https://review.opendev.org/#/c/684279/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I27b27ee48b8bb5b23a1fd05a97fe8d8f437d1b55"},{"line_number":15,"context_line":"Related-Bug: #1808595"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_6bba3272","line":15,"updated":"2019-11-06 01:14:44.000000000","message":"There is another bug reported for this issue already https://bugs.launchpad.net/neutron/+bug/1850292","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3617593465fd94d4e7575feb92d3459340e0c862","unresolved":false,"context_lines":[{"line_number":12,"context_line":"[1] https://review.opendev.org/#/c/684279/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I27b27ee48b8bb5b23a1fd05a97fe8d8f437d1b55"},{"line_number":15,"context_line":"Related-Bug: #1808595"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_dadd2ade","line":15,"in_reply_to":"3fa7e38b_1ad422bb","updated":"2019-11-06 11:17:40.000000000","message":"Actually, this bug is related to the original problem and that\u0027s why [1] was implemented.","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc282ba106dbdd8e10e4d0b1e402c05cbc27e8e8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"[1] https://review.opendev.org/#/c/684279/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I27b27ee48b8bb5b23a1fd05a97fe8d8f437d1b55"},{"line_number":15,"context_line":"Related-Bug: #1808595"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_1ad422bb","line":15,"in_reply_to":"3fa7e38b_6bba3272","updated":"2019-11-06 11:15:58.000000000","message":"You are right. My bad, I didn\u0027t check properly. I\u0027ll abandon this patch and mark my bug as a duplicate of yours.","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"}],"neutron/tests/fullstack/base.py":[{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"4eb94b8fb86615c88337741e617f6352d8eab4e6","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        used_ips.add(netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]))"},{"line_number":136,"context_line":"        ip_network \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":137,"context_line":"        valid_ips \u003d netaddr.IPSet(ip_network)"},{"line_number":138,"context_line":"        valid_ips \u003d valid_ips.difference(netaddr.IPSet([ip_network.broadcast,"},{"line_number":139,"context_line":"                                                        ip_network.network]))"},{"line_number":140,"context_line":"        valid_ips \u003d valid_ips.difference(used_ips)"},{"line_number":141,"context_line":"        if valid_ips.size \u003c num:"},{"line_number":142,"context_line":"            self.fail(\"Cannot find enough free IP addresses.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_995fc70e","line":139,"range":{"start_line":138,"start_character":0,"end_line":139,"end_character":77},"updated":"2019-11-05 21:55:09.000000000","message":"Note that for IPv6 addresses, the first address in a subnet block is a valid unicast address, usable for routers.  Would this permit or exclude it from that usage?  See https://review.opendev.org/#/c/647484/ for discussion.","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc282ba106dbdd8e10e4d0b1e402c05cbc27e8e8","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        used_ips.add(netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]))"},{"line_number":136,"context_line":"        ip_network \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":137,"context_line":"        valid_ips \u003d netaddr.IPSet(ip_network)"},{"line_number":138,"context_line":"        valid_ips \u003d valid_ips.difference(netaddr.IPSet([ip_network.broadcast,"},{"line_number":139,"context_line":"                                                        ip_network.network]))"},{"line_number":140,"context_line":"        valid_ips \u003d valid_ips.difference(used_ips)"},{"line_number":141,"context_line":"        if valid_ips.size \u003c num:"},{"line_number":142,"context_line":"            self.fail(\"Cannot find enough free IP addresses.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3acd5e30","line":139,"range":{"start_line":138,"start_character":0,"end_line":139,"end_character":77},"in_reply_to":"3fa7e38b_6b91d2f7","updated":"2019-11-06 11:15:58.000000000","message":"Those subnets allocation pools are created based in the subnet CIDR. But you are right, it\u0027s more accurate to use the allocations pools instead of the subnet CIDR.\n\nThe problem we are seeing in the bug is that, sometimes, the IPs given are the network or the broadcast ones (belong to the CIDR but are invalid).","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c92baf8748f44e24e342af9e6cc7f67d7d503671","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        used_ips.add(netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]))"},{"line_number":136,"context_line":"        ip_network \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":137,"context_line":"        valid_ips \u003d netaddr.IPSet(ip_network)"},{"line_number":138,"context_line":"        valid_ips \u003d valid_ips.difference(netaddr.IPSet([ip_network.broadcast,"},{"line_number":139,"context_line":"                                                        ip_network.network]))"},{"line_number":140,"context_line":"        valid_ips \u003d valid_ips.difference(used_ips)"},{"line_number":141,"context_line":"        if valid_ips.size \u003c num:"},{"line_number":142,"context_line":"            self.fail(\"Cannot find enough free IP addresses.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_6b91d2f7","line":139,"range":{"start_line":138,"start_character":0,"end_line":139,"end_character":77},"in_reply_to":"3fa7e38b_995fc70e","updated":"2019-11-06 01:14:44.000000000","message":"I think we should be even more strict here and return only IP addresses from allocation pools defined in the subnet.","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc282ba106dbdd8e10e4d0b1e402c05cbc27e8e8","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        used_ips.add(netaddr.IPAddress(subnet[\u0027gateway_ip\u0027]))"},{"line_number":136,"context_line":"        ip_network \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":137,"context_line":"        valid_ips \u003d netaddr.IPSet(ip_network)"},{"line_number":138,"context_line":"        valid_ips \u003d valid_ips.difference(netaddr.IPSet([ip_network.broadcast,"},{"line_number":139,"context_line":"                                                        ip_network.network]))"},{"line_number":140,"context_line":"        valid_ips \u003d valid_ips.difference(used_ips)"},{"line_number":141,"context_line":"        if valid_ips.size \u003c num:"},{"line_number":142,"context_line":"            self.fail(\"Cannot find enough free IP addresses.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_9a2c9202","line":139,"range":{"start_line":138,"start_character":0,"end_line":139,"end_character":77},"in_reply_to":"3fa7e38b_995fc70e","updated":"2019-11-06 11:15:58.000000000","message":"Your are right, the network address in IPv6 is valid.\n\nIn sake of simplicity, I\u0027ll remove both from IPv4 and IPv6 (in IPv6, the CIDR range will be so large that removing this IP will be irrelevant).","commit_id":"5c87e59d94bd9d37651d8fa03b75b606f60d77d8"}]}
