)]}'
{"neutron/agent/linux/dhcp.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"be61f4d7cd8906e4eb1c9c8a3f2b30ad47dae98b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        shutil.rmtree(self.network_conf_dir, ignore_errors\u003dTrue)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _enable_dhcp(self):"},{"line_number":202,"context_line":"        \"\"\"check if there is a subnet within the network with dhcp enabled.\"\"\""},{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_80af85e2","line":202,"range":{"start_line":202,"start_character":11,"end_line":202,"end_character":75},"updated":"2016-11-23 13:34:02.000000000","message":"This is no longer true now. s/enabled/capability. \n\nBecause we are no longer checking for the dhcp being enabled, we are checking for other properties so capability or something that says \"the subnet meets dhcp requirements\" would be better.","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"fe54495e627e5f89248898252265cfe462484bca","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        shutil.rmtree(self.network_conf_dir, ignore_errors\u003dTrue)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _enable_dhcp(self):"},{"line_number":202,"context_line":"        \"\"\"check if there is a subnet within the network with dhcp enabled.\"\"\""},{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_2684e4d2","line":202,"range":{"start_line":202,"start_character":11,"end_line":202,"end_character":75},"in_reply_to":"5a74a57a_80af85e2","updated":"2016-11-24 04:33:36.000000000","message":"Ok, will do that","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"be61f4d7cd8906e4eb1c9c8a3f2b30ad47dae98b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"},{"line_number":206,"context_line":"                if(subnet.ip_version \u003d\u003d 4 or ("},{"line_number":207,"context_line":"                   subnet.ip_version \u003d\u003d 6 and address_mode and"},{"line_number":208,"context_line":"                   address_mode !\u003d constants.IPV6_SLAAC)):"},{"line_number":209,"context_line":"                    return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_a0c1e182","line":208,"range":{"start_line":206,"start_character":16,"end_line":208,"end_character":57},"updated":"2016-11-23 13:34:02.000000000","message":"I\u0027m curious why is this not tied into the logic of the setter for subnet.enable_dhcp?","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"056a0bbce15fe30b3ec0ef6e4534163eb93f7da1","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"},{"line_number":206,"context_line":"                if(subnet.ip_version \u003d\u003d 4 or ("},{"line_number":207,"context_line":"                   subnet.ip_version \u003d\u003d 6 and address_mode and"},{"line_number":208,"context_line":"                   address_mode !\u003d constants.IPV6_SLAAC)):"},{"line_number":209,"context_line":"                    return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_80bae208","line":208,"range":{"start_line":206,"start_character":16,"end_line":208,"end_character":57},"in_reply_to":"3a71b18c_5bee1e8c","updated":"2017-03-20 08:29:01.000000000","message":"I checked, validation wont be easily done in th above requested format ( i.e. in the API )","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":10558,"name":"Dustin Lundquist","email":"dustin@null-ptr.net","username":"dlundquist"},"change_message_id":"2065b6a1b9cc23346b7636cc233a67bc4b4ce50f","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"},{"line_number":206,"context_line":"                if(subnet.ip_version \u003d\u003d 4 or ("},{"line_number":207,"context_line":"                   subnet.ip_version \u003d\u003d 6 and address_mode and"},{"line_number":208,"context_line":"                   address_mode !\u003d constants.IPV6_SLAAC)):"},{"line_number":209,"context_line":"                    return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_fd9e6461","line":208,"range":{"start_line":206,"start_character":16,"end_line":208,"end_character":57},"in_reply_to":"5a74a57a_067d28e7","updated":"2016-11-29 00:40:57.000000000","message":"I agree, it would be preferable to make this decision on the server side  and only create a DHCP port and namespace in the case it is required by `any` subnet belonging to that network.","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"fe54495e627e5f89248898252265cfe462484bca","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"},{"line_number":206,"context_line":"                if(subnet.ip_version \u003d\u003d 4 or ("},{"line_number":207,"context_line":"                   subnet.ip_version \u003d\u003d 6 and address_mode and"},{"line_number":208,"context_line":"                   address_mode !\u003d constants.IPV6_SLAAC)):"},{"line_number":209,"context_line":"                    return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_067d28e7","line":208,"range":{"start_line":206,"start_character":16,"end_line":208,"end_character":57},"in_reply_to":"5a74a57a_a0c1e182","updated":"2016-11-24 04:33:36.000000000","message":"So you mean we can set it on the API side as a converter, right?\n\nThat would work actually....\nLet me know what you think!","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bb0360280b20bd08e1fe061f1479416f7c928adf","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        for subnet in self.network.subnets:"},{"line_number":204,"context_line":"            address_mode \u003d getattr(subnet, \u0027ipv6_address_mode\u0027, None)"},{"line_number":205,"context_line":"            if subnet.enable_dhcp:"},{"line_number":206,"context_line":"                if(subnet.ip_version \u003d\u003d 4 or ("},{"line_number":207,"context_line":"                   subnet.ip_version \u003d\u003d 6 and address_mode and"},{"line_number":208,"context_line":"                   address_mode !\u003d constants.IPV6_SLAAC)):"},{"line_number":209,"context_line":"                    return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5bee1e8c","line":208,"range":{"start_line":206,"start_character":16,"end_line":208,"end_character":57},"in_reply_to":"5a74a57a_fd9e6461","updated":"2016-12-02 06:04:53.000000000","message":"So as per the above statement, the following conditions seem to be met for the logic :\n\n- User passes --enable-dhcp for the subnet as True\n- User sets IPv6 address in the subnet\n- User sets address_mode as None/SLAAC\n\nIn case the above condition is satisfied, we need to run a validator which validates and returns the decision if DHCP needs to be enabled for the subnet or not ( also pass a message to the user in the Log)","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"}],"neutron/tests/unit/agent/linux/test_dhcp.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"be61f4d7cd8906e4eb1c9c8a3f2b30ad47dae98b","unresolved":false,"context_lines":[{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    def test_enable_ipv6_dnsmasq_notspawned(self):"},{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_3b57c403","line":1158,"range":{"start_line":1158,"start_character":8,"end_line":1158,"end_character":29},"updated":"2016-11-23 13:34:02.000000000","message":"No need to mock here, test_pm is defaulted to mock.Mock() in self._get_dnsmasq().","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"fe54495e627e5f89248898252265cfe462484bca","unresolved":false,"context_lines":[{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    def test_enable_ipv6_dnsmasq_notspawned(self):"},{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_86693828","line":1158,"range":{"start_line":1158,"start_character":8,"end_line":1158,"end_character":29},"in_reply_to":"5a74a57a_3b57c403","updated":"2016-11-24 04:33:36.000000000","message":"Line#1130 : got it!","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"be61f4d7cd8906e4eb1c9c8a3f2b30ad47dae98b","unresolved":false,"context_lines":[{"line_number":1156,"context_line":"    def test_enable_ipv6_dnsmasq_notspawned(self):"},{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def test_spawn_infinite_lease_duration(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_7b413c39","line":1159,"range":{"start_line":1159,"start_character":34,"end_line":1159,"end_character":43},"updated":"2016-11-23 13:34:02.000000000","message":"can remove this argument","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"fe54495e627e5f89248898252265cfe462484bca","unresolved":false,"context_lines":[{"line_number":1156,"context_line":"    def test_enable_ipv6_dnsmasq_notspawned(self):"},{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def test_spawn_infinite_lease_duration(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_c6733014","line":1159,"range":{"start_line":1159,"start_character":34,"end_line":1159,"end_character":43},"in_reply_to":"5a74a57a_7b413c39","updated":"2016-11-24 04:33:36.000000000","message":"ok, thanks","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"be61f4d7cd8906e4eb1c9c8a3f2b30ad47dae98b","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def test_spawn_infinite_lease_duration(self):"},{"line_number":1163,"context_line":"        self.conf.set_override(\u0027dhcp_lease_duration\u0027, -1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_7b205c4a","line":1160,"range":{"start_line":1160,"start_character":8,"end_line":1160,"end_character":28},"updated":"2016-11-23 13:34:02.000000000","message":"When this test fails it will say something like error False is not True. Is there no other output we can test?","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"fe54495e627e5f89248898252265cfe462484bca","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        net \u003d FakeV6NetworkNotDHCPv6()"},{"line_number":1158,"context_line":"        test_pm \u003d mock.Mock()"},{"line_number":1159,"context_line":"        dm \u003d self._get_dnsmasq(net, test_pm)"},{"line_number":1160,"context_line":"        self.assertFalse(dm)"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def test_spawn_infinite_lease_duration(self):"},{"line_number":1163,"context_line":"        self.conf.set_override(\u0027dhcp_lease_duration\u0027, -1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_e6602c38","line":1160,"range":{"start_line":1160,"start_character":8,"end_line":1160,"end_character":28},"in_reply_to":"5a74a57a_7b205c4a","updated":"2016-11-24 04:33:36.000000000","message":"Let me find something more suitable, if possible","commit_id":"ae032e651d8844e94ca467efb7630a5899f285df"}]}
