)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"30fbb3f1cf81b78886eaf3e8f2f86b6d617f1442","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Track allocation_pools in SubnetRequest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To keep pluggable and non-pluggable ipam implementation consitent"},{"line_number":10,"context_line":"non-pluggable one has to be switched to track allocation_pools and"},{"line_number":11,"context_line":"gateway_ip using SubnetRequests."},{"line_number":12,"context_line":"SubnetRequest requires allocation_pools to be list of IPRanges."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_b7c29ae7","line":9,"updated":"2015-07-02 14:41:28.000000000","message":"s/consitent/consistent/","commit_id":"5c60b31dbef4a3a589360398872ac42b3e90adc0"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"09615a5b15d988661ae027d17d919ceebe715f36","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Track allocation_pools in SubnetRequest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To keep pluggable and non-pluggable ipam implementation consitent"},{"line_number":10,"context_line":"non-pluggable one has to be switched to track allocation_pools and"},{"line_number":11,"context_line":"gateway_ip using SubnetRequests."},{"line_number":12,"context_line":"SubnetRequest requires allocation_pools to be list of IPRanges."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_c888dc73","line":9,"in_reply_to":"ba3cc151_b7c29ae7","updated":"2015-07-02 15:34:21.000000000","message":"will fix with other changes(if any requested) or before merge","commit_id":"5c60b31dbef4a3a589360398872ac42b3e90adc0"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"30fbb3f1cf81b78886eaf3e8f2f86b6d617f1442","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To keep pluggable and non-pluggable ipam implementation consitent"},{"line_number":10,"context_line":"non-pluggable one has to be switched to track allocation_pools and"},{"line_number":11,"context_line":"gateway_ip using SubnetRequests."},{"line_number":12,"context_line":"SubnetRequest requires allocation_pools to be list of IPRanges."},{"line_number":13,"context_line":"Previously allocation_pools were tracked as list of dicts."},{"line_number":14,"context_line":"So allocation_pools generating and validating was moved before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_773df2db","line":11,"updated":"2015-07-02 14:41:28.000000000","message":"Why should there still be a non-pluggable IPAM implementation?  Would it not be equivalent to use pluggable IPAM with a reference driver that does the same thing as the old non-pluggable implementation used to do?\n\n(Sorry if this is a FAQ - I\u0027m new to looking at the details of pluggable IPAM.)","commit_id":"5c60b31dbef4a3a589360398872ac42b3e90adc0"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"834932b34e743acc5a67f38d8d5cba041752f457","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To keep pluggable and non-pluggable ipam implementation consitent"},{"line_number":10,"context_line":"non-pluggable one has to be switched to track allocation_pools and"},{"line_number":11,"context_line":"gateway_ip using SubnetRequests."},{"line_number":12,"context_line":"SubnetRequest requires allocation_pools to be list of IPRanges."},{"line_number":13,"context_line":"Previously allocation_pools were tracked as list of dicts."},{"line_number":14,"context_line":"So allocation_pools generating and validating was moved before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_a56101ab","line":11,"in_reply_to":"ba3cc151_773df2db","updated":"2015-07-02 15:24:06.000000000","message":"Current plan for IPAM and Liberty release is to use non-pluggable ipam implementation by default, since it is treated as stable one.\nAnd pluggable IPAM implemetation will be available for usage as option.\nProbably after Liberty non-ipam implementation will be removed (or just deprecated),\nand pluggable implementation will become default one.","commit_id":"5c60b31dbef4a3a589360398872ac42b3e90adc0"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"4dfba119a4917967278aa6780d11a570af4ba0f5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To keep pluggable and non-pluggable ipam implementation consitent"},{"line_number":10,"context_line":"non-pluggable one has to be switched to track allocation_pools and"},{"line_number":11,"context_line":"gateway_ip using SubnetRequests."},{"line_number":12,"context_line":"SubnetRequest requires allocation_pools to be list of IPRanges."},{"line_number":13,"context_line":"Previously allocation_pools were tracked as list of dicts."},{"line_number":14,"context_line":"So allocation_pools generating and validating was moved before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba3cc151_c8d69c4e","line":11,"in_reply_to":"ba3cc151_a56101ab","updated":"2015-07-02 15:34:50.000000000","message":"Oh, OK, so it\u0027s just a transition thing.  That makes sense - thanks.","commit_id":"5c60b31dbef4a3a589360398872ac42b3e90adc0"}],"neutron/db/db_base_plugin_common.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"2ed3330e2bdf3a12987ed6950b85c135c841c33b","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                \u0027subnetpool_id\u0027: subnetpool_id,"},{"line_number":239,"context_line":"                \u0027enable_dhcp\u0027: subnet[\u0027enable_dhcp\u0027],"},{"line_number":240,"context_line":"                \u0027gateway_ip\u0027:"},{"line_number":241,"context_line":"                    str(detail.gateway_ip) if detail.gateway_ip else None,"},{"line_number":242,"context_line":"                \u0027shared\u0027: shared}"},{"line_number":243,"context_line":"        if subnet[\u0027ip_version\u0027] \u003d\u003d 6 and subnet[\u0027enable_dhcp\u0027]:"},{"line_number":244,"context_line":"            if attributes.is_attr_set(subnet[\u0027ipv6_ra_mode\u0027]):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_8e3fced5","line":241,"updated":"2015-07-06 19:15:07.000000000","message":"nit:  Consider using a temporary to hold this value if you need to roll another patch.  But, I\u0027m fine with this.","commit_id":"feb0d5fa1aa6380d3be00d87c9c0f63e16418364"}],"neutron/db/ipam_non_pluggable_backend.py":[{"author":{"_account_id":12912,"name":"John Belamaric","email":"jbelamaric@infoblox.com","username":"johnbelamaric"},"change_message_id":"1a34d893d89264bdf37c29570cb213f683c6bbb1","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                subnet[\u0027allocation_pools\u0027],"},{"line_number":486,"context_line":"                subnet[\u0027cidr\u0027],"},{"line_number":487,"context_line":"                subnet[\u0027gateway_ip\u0027])"},{"line_number":488,"context_line":"            # convert allocation_pools to IPRange to match factory expectation"},{"line_number":489,"context_line":"            subnet[\u0027allocation_pools\u0027] \u003d ["},{"line_number":490,"context_line":"                netaddr.IPRange(p[\u0027start\u0027], p[\u0027end\u0027])"},{"line_number":491,"context_line":"                for p in subnet[\u0027allocation_pools\u0027]]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f793d44d","line":488,"updated":"2015-07-06 16:09:44.000000000","message":"Is there any reason why _prepare_allocation_pools does not just take care of this conversion.","commit_id":"c5b0e085b800b0aeca40a9cca092bb80a20c7ac2"},{"author":{"_account_id":13768,"name":"Pavel Bondar","email":"pbondar@infoblox.com","username":"pavel_bondar"},"change_message_id":"568372358f900257aaf362438daf91eb4134dc8c","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                subnet[\u0027allocation_pools\u0027],"},{"line_number":486,"context_line":"                subnet[\u0027cidr\u0027],"},{"line_number":487,"context_line":"                subnet[\u0027gateway_ip\u0027])"},{"line_number":488,"context_line":"            # convert allocation_pools to IPRange to match factory expectation"},{"line_number":489,"context_line":"            subnet[\u0027allocation_pools\u0027] \u003d ["},{"line_number":490,"context_line":"                netaddr.IPRange(p[\u0027start\u0027], p[\u0027end\u0027])"},{"line_number":491,"context_line":"                for p in subnet[\u0027allocation_pools\u0027]]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_9d394944","line":488,"in_reply_to":"ba3cc151_f793d44d","updated":"2015-07-06 16:42:30.000000000","message":"The only reason why it was moved outside _prepare_allocation_pools is to make more clear for reviewers and code readers that were are doing such type convertion.\n\nProbably moving this convertion back to _prepare_allocation_pools make more sense since it simplifies code a bit, and all changes in returned results can be described in method docstring.","commit_id":"c5b0e085b800b0aeca40a9cca092bb80a20c7ac2"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"2ed3330e2bdf3a12987ed6950b85c135c841c33b","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _save_allocation_pools(self, context, subnet, allocation_pools):"},{"line_number":190,"context_line":"        for pool in allocation_pools:"},{"line_number":191,"context_line":"            first_ip \u003d str(netaddr.IPAddress(pool.first))"},{"line_number":192,"context_line":"            last_ip \u003d str(netaddr.IPAddress(pool.last))"},{"line_number":193,"context_line":"            ip_pool \u003d models_v2.IPAllocationPool(subnet\u003dsubnet,"},{"line_number":194,"context_line":"                                                 first_ip\u003dfirst_ip,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_c99f10b3","line":191,"updated":"2015-07-06 19:15:07.000000000","message":"See the following...\n\n \u003e\u003e\u003e n \u003d netaddr.IPNetwork(\"::/64\")\n \u003e\u003e\u003e netaddr.IPAddress(n.first)\n IPAddress(\u00270.0.0.0\u0027)\n \u003e\u003e\u003e netaddr.IPAddress(n.first, 6)\n IPAddress(\u0027::\u0027)\n\nThis may be an inconsequential corner case but I think it would be better to pass pool.version to these constructors to avoid any chance of ambiguity.  This comment is based on the changes that I found in John Davidge\u0027s patch [1].  I\u0027ve asked him to post it as a bug fix.\n\n [1] https://review.openstack.org/#/c/158697/47/neutron/ipam/utils.py","commit_id":"feb0d5fa1aa6380d3be00d87c9c0f63e16418364"}]}
