)]}'
{"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"30bad46a91021ad82534bd04ae597ed84077e5e3","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_3f974e91","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"updated":"2016-05-16 16:19:18.000000000","message":"I just wonder if there will be many false negatives on this causing it to restart more often than necessary.  Is the ordering of everything pretty stable?  The only thing that makes me wonder is that the old code uses sets before comparing the cidrs.  But, I\u0027m not very concerned about it.","commit_id":"3b48a73ef90779f482bbad42895015319f326970"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a7367ac6e34398a6285032b8231526aecbdf0b24","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_bfa17eab","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"updated":"2016-05-16 16:37:00.000000000","message":"rather then restarting dnsmasq each time when server returns same set of subnets just in different order, should we better return sorted list of subnets?","commit_id":"3b48a73ef90779f482bbad42895015319f326970"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"bfabc751c5ba2739bb9b0c86af96674d5fa5b64a","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_003dbe8e","line":288,"updated":"2016-05-16 20:49:17.000000000","message":"sorting in agent/linux/dhcp.py will be too late because this function will have already decided whether or not a restart is necessary. If this makes a mistake and thinks a reload is enough, the sort that late won\u0027t matter.\n\nHowever, I do agree that we should also just sort subnets server side before sending them back.\n\n@Carl, the old code not paying attention to order changes was actually one of the paths that could lead to the bug. An order change means that the tags change, which means that the service must be restarted, which was not being done.","commit_id":"3b48a73ef90779f482bbad42895015319f326970"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"feb1b0ac0f48dd1f403f642c56d0d0662bd5f978","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_75e1f729","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"in_reply_to":"dab17558_bfa17eab","updated":"2016-05-16 16:49:51.000000000","message":"or to be more clear, just sorting them in agent/linux/dhcp.py right before processing","commit_id":"3b48a73ef90779f482bbad42895015319f326970"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d15b8544d140d92ef71b69abff60d488fd9dbe96","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_9569fb8e","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"in_reply_to":"dab17558_bfa17eab","updated":"2016-05-16 16:51:38.000000000","message":"server is definitely tossing subnets, so i would agree with that.","commit_id":"3b48a73ef90779f482bbad42895015319f326970"},{"author":{"_account_id":9423,"name":"Roey Chen","email":"roeyc@vmware.com","username":"roeyc"},"change_message_id":"5c4f31ef7c290c4a939b8bd3fcece336215182ea","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        if not network:"},{"line_number":282,"context_line":"            return"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if not any(s for s in network.subnets if s.enable_dhcp):"},{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_82d52344","line":284,"range":{"start_line":284,"start_character":15,"end_line":284,"end_character":19},"updated":"2016-05-17 07:13:56.000000000","message":"nit: \u0027any\u0027 is redundant (i think), for example, this will do the same - \n\nif not [s for s in network.subnets if s.enable_dhcp]:\n    ...","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4d90f2339b20928e006e2c4ba1f4090f054b94d9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        if not network:"},{"line_number":282,"context_line":"            return"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        if not any(s for s in network.subnets if s.enable_dhcp):"},{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_618f0024","line":284,"range":{"start_line":284,"start_character":15,"end_line":284,"end_character":19},"in_reply_to":"dab17558_82d52344","updated":"2016-05-18 14:53:53.000000000","message":"any will avoid iterating over the whole list and return on the first true occurence","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2409b348e050b9113bc9f1959551ded6f99c7e90","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_3b48e2b2","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"updated":"2016-05-17 08:38:37.000000000","message":"Given we have sorted lists of subnets, will this ever be True? refresh_dhcp_helper() is called when subnet is created/updated/deleted so either we have different number of subnets or some difference in subnets dicts. And also does it makes sense to reload if nothing changed?","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4d90f2339b20928e006e2c4ba1f4090f054b94d9","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.disable_dhcp_helper(network.id)"},{"line_number":286,"context_line":"            return"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        if old_network.subnets \u003d\u003d network.subnets:"},{"line_number":289,"context_line":"            self.call_driver(\u0027reload_allocations\u0027, network)"},{"line_number":290,"context_line":"            self.cache.put(network)"},{"line_number":291,"context_line":"        elif self.call_driver(\u0027restart\u0027, network):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_811144af","line":288,"range":{"start_line":288,"start_character":11,"end_line":288,"end_character":49},"in_reply_to":"dab17558_3b48e2b2","updated":"2016-05-18 14:53:53.000000000","message":"Good point. This should only reload if the cidrs change. Let me adjust it.","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"}],"neutron/api/rpc/handlers/dhcp_rpc.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2409b348e050b9113bc9f1959551ded6f99c7e90","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        filters \u003d {\u0027network_id\u0027: [network[\u0027id\u0027] for network in networks]}"},{"line_number":142,"context_line":"        ports \u003d plugin.get_ports(context, filters\u003dfilters)"},{"line_number":143,"context_line":"        filters[\u0027enable_dhcp\u0027] \u003d [True]"},{"line_number":144,"context_line":"        subnets \u003d sorted(plugin.get_subnets(context, filters\u003dfilters),"},{"line_number":145,"context_line":"                         key\u003doperator.itemgetter(\u0027id\u0027))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        grouped_subnets \u003d self._group_by_network_id(subnets)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_fbadba31","line":144,"updated":"2016-05-17 08:38:37.000000000","message":"may want to comment why we need sorted list of subnets here","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4d90f2339b20928e006e2c4ba1f4090f054b94d9","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        filters \u003d {\u0027network_id\u0027: [network[\u0027id\u0027] for network in networks]}"},{"line_number":142,"context_line":"        ports \u003d plugin.get_ports(context, filters\u003dfilters)"},{"line_number":143,"context_line":"        filters[\u0027enable_dhcp\u0027] \u003d [True]"},{"line_number":144,"context_line":"        subnets \u003d sorted(plugin.get_subnets(context, filters\u003dfilters),"},{"line_number":145,"context_line":"                         key\u003doperator.itemgetter(\u0027id\u0027))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        grouped_subnets \u003d self._group_by_network_id(subnets)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_2194d8e0","line":144,"in_reply_to":"dab17558_fbadba31","updated":"2016-05-18 14:53:53.000000000","message":"Done","commit_id":"e271192e9141b171fa4febb74d37d4c4f6474a4b"}]}
