)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"c6b42ac8e9b9d326d5311d61dca7b3042a8da176","unresolved":false,"context_lines":[{"line_number":12,"context_line":"persisted. The code being removed is dead code."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I96cb67396b8e0ebbe7f98353fad1607405944e44"},{"line_number":15,"context_line":"Partial-Bug: #1543094"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bab6814e_c31206b4","line":15,"updated":"2016-05-19 10:03:36.000000000","message":"maybe add Depends-On: I52e4485e832cbe6798de6b4afb6a7cfd88db11e2 ?","commit_id":"c39891c1727fd6d7b95905873694fd1386e375e8"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c11561ccd46452eb288bb05c5d56ea397391edc0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"persisted. The code being removed is dead code."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I96cb67396b8e0ebbe7f98353fad1607405944e44"},{"line_number":15,"context_line":"Partial-Bug: #1543094"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7aa08908_d736af01","line":15,"in_reply_to":"bab6814e_c31206b4","updated":"2016-06-08 22:29:44.000000000","message":"No need, this is already dependent on https://review.openstack.org/#/c/292207/ and won\u0027t merge before it does.","commit_id":"c39891c1727fd6d7b95905873694fd1386e375e8"}],"neutron/db/ipam_non_pluggable_backend.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"14c9cb05e3fe86332c4e4deff5decdf3ec6535b6","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"                    # Create a new second range for after ip_address"},{"line_number":180,"context_line":"                    new_first_ip \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":181,"context_line":"                    new_ip_range \u003d models_v2.IPAvailabilityRange("},{"line_number":182,"context_line":"                        allocation_pool_id\u003dip_range[\u0027allocation_pool_id\u0027],"},{"line_number":183,"context_line":"                        first_ip\u003dnew_first_ip,"},{"line_number":184,"context_line":"                        last_ip\u003dold_last_ip)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_fb8b03c1","side":"PARENT","line":181,"range":{"start_line":181,"start_character":45,"end_line":181,"end_character":64},"updated":"2016-05-26 21:23:47.000000000","message":"All this code should come out too.  We should probably just add a contract migration to remove the model, no?","commit_id":"df8827d7f43eb07657cb7d45a1412a27b841b6f5"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c11561ccd46452eb288bb05c5d56ea397391edc0","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"                    # Create a new second range for after ip_address"},{"line_number":180,"context_line":"                    new_first_ip \u003d str(netaddr.IPAddress(ip_address) + 1)"},{"line_number":181,"context_line":"                    new_ip_range \u003d models_v2.IPAvailabilityRange("},{"line_number":182,"context_line":"                        allocation_pool_id\u003dip_range[\u0027allocation_pool_id\u0027],"},{"line_number":183,"context_line":"                        first_ip\u003dnew_first_ip,"},{"line_number":184,"context_line":"                        last_ip\u003dold_last_ip)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_77053b44","side":"PARENT","line":181,"range":{"start_line":181,"start_character":45,"end_line":181,"end_character":64},"in_reply_to":"bab6814e_fb8b03c1","updated":"2016-06-08 22:29:44.000000000","message":"Yes, we should remove this as well.\n\nYes, we need the contract migration. Haven\u0027t been able to think about that until now. I think we can put that together now.","commit_id":"df8827d7f43eb07657cb7d45a1412a27b841b6f5"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"8e8547267245b29e0b97e2a1e9bdc4f800526c60","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  net_id\u003dsubnets[0][\u0027network_id\u0027])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @staticmethod"},{"line_number":101,"context_line":"    def _rebuild_availability_ranges(context, subnets):"},{"line_number":102,"context_line":"        \"\"\"Rebuild availability ranges."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        This method is called only when there\u0027s no more IP available or by"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_0b2716b7","side":"PARENT","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":36},"updated":"2016-06-22 16:33:08.000000000","message":"I remember writing this a couple of years ago.  May it rest in peace.","commit_id":"26230eb840df18f2e866ed12221a942a206c1729"}],"neutron/ipam/drivers/neutrondb_ipam/driver.py":[{"author":{"_account_id":21273,"name":"Ilya Chukhnakov","email":"Ilya.chukhnakov@gmail.com","username":"ichukhnakov"},"change_message_id":"c6b42ac8e9b9d326d5311d61dca7b3042a8da176","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                session.add(av_range)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def _generate_ip(self, session):"},{"line_number":212,"context_line":"        \"\"\"Generate an IP address from availability ranges.\"\"\""},{"line_number":213,"context_line":"        ip_allocations \u003d netaddr.IPSet()"},{"line_number":214,"context_line":"        for ipallocation in self.subnet_manager.list_allocations(session):"},{"line_number":215,"context_line":"            ip_allocations.add(netaddr.IPAddress(ipallocation.ip_address))"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_2308322d","side":"PARENT","line":212,"updated":"2016-05-19 10:03:36.000000000","message":"this is not merged in \u0027master\u0027 yet and the version in master uses the removed method","commit_id":"df8827d7f43eb07657cb7d45a1412a27b841b6f5"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c11561ccd46452eb288bb05c5d56ea397391edc0","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                session.add(av_range)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def _generate_ip(self, session):"},{"line_number":212,"context_line":"        \"\"\"Generate an IP address from availability ranges.\"\"\""},{"line_number":213,"context_line":"        ip_allocations \u003d netaddr.IPSet()"},{"line_number":214,"context_line":"        for ipallocation in self.subnet_manager.list_allocations(session):"},{"line_number":215,"context_line":"            ip_allocations.add(netaddr.IPAddress(ipallocation.ip_address))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_b780438c","side":"PARENT","line":212,"in_reply_to":"bab6814e_2308322d","updated":"2016-06-08 22:29:44.000000000","message":"I\u0027m confused by this comment. This patch is dependent on https://review.openstack.org/#/c/292207/ which is where we stop calling _rebuild_availability_ranges().","commit_id":"df8827d7f43eb07657cb7d45a1412a27b841b6f5"}]}
