)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Any time the DHCP server is updated this new code will maintain a"},{"line_number":10,"context_line":"default route in the DHCP namespace using the gateway_ip attribute of"},{"line_number":11,"context_line":"the first subnet in the list of subnets."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0807550a848e1b610c7775d215643ad9c83629ed"},{"line_number":14,"context_line":"Fixes: Bug #1181378"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAPX%2F%2F6Tk%3D","line":11,"updated":"2013-06-06 07:23:45.000000000","message":"This design is depending on if the so-called first subnet\u0027s gateway is realized.\ngateway realization is:\n1. there is a quantum router\u0027s interface is on the subnet which is taking the gateway ip\n2. and the gateway ip is physical one itself.\n3. ...\n\njust to guess to use the first subnet\u0027s gateway does not seem a good solution since it is likely unrealized at all.\n\nHope I have made myself clear.\nThanks","commit_id":"b2cce378619cf80fba41dec58c1ac995b02e2e9d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Any time the DHCP server is updated this new code will maintain a"},{"line_number":10,"context_line":"default route in the DHCP namespace using the gateway_ip attribute of"},{"line_number":11,"context_line":"the first subnet in the list of subnets."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0807550a848e1b610c7775d215643ad9c83629ed"},{"line_number":14,"context_line":"Fixes: Bug #1181378"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAPX%2F%2FxhM%3D","line":11,"in_reply_to":"AAAAPX%2F%2F4Qk%3D","updated":"2013-06-10 22:22:29.000000000","message":"Reported https://bugs.launchpad.net/python-quantumclient/+bug/1189658 to track this.","commit_id":"b2cce378619cf80fba41dec58c1ac995b02e2e9d"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Any time the DHCP server is updated this new code will maintain a"},{"line_number":10,"context_line":"default route in the DHCP namespace using the gateway_ip attribute of"},{"line_number":11,"context_line":"the first subnet in the list of subnets."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0807550a848e1b610c7775d215643ad9c83629ed"},{"line_number":14,"context_line":"Fixes: Bug #1181378"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAPX%2F%2F4Qk%3D","line":11,"in_reply_to":"AAAAPX%2F%2F6Tk%3D","updated":"2013-06-06 20:53:21.000000000","message":"You raise a very good point about the realization status of the gateway.  However, allow me to explain why I chose this particular implementation as it was not a arbitrary decision.\n\nI tested this with devstack to determine what the behavior should be before I implemented this.  I found that when I had multiple dhcp enabled subnets, the VMs that booted came up configured with an ip on the first subnet and the gateway too.  I chose this implementation to be consistent with that behavior.\n\nI also examined _output_opts_file in in dhcp.py and found that it did not consider any of the criteria that you mentioned above.\n\nI propose that the issue of the dhcp server and namespace being aware of the \"realization\" status of a gateway should be raised as a new bug and handled separately from this patch.  At the least, I think that the DHCP server should hand out the same gateway that is chosen as the gateway for the namespace itself.","commit_id":"b2cce378619cf80fba41dec58c1ac995b02e2e9d"}],"quantum/agent/dhcp_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":545,"context_line":"        it would change it from what it already is.  This makes it safe to call"},{"line_number":546,"context_line":"        and avoids unnecessary perturbation of the system."},{"line_number":547,"context_line":"        \"\"\""},{"line_number":548,"context_line":"        if not self.conf.use_namespaces:"},{"line_number":549,"context_line":"            return"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        device \u003d self._get_device(network)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2F6Ro%3D","line":548,"updated":"2013-06-18 14:04:54.000000000","message":"i would prefer it if this check was done outside of the function. for example of lines 638 and 644","commit_id":"3a0e536b3f737d6c32f22751d477405d7239363f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        it would change it from what it already is.  This makes it safe to call"},{"line_number":546,"context_line":"        and avoids unnecessary perturbation of the system."},{"line_number":547,"context_line":"        \"\"\""},{"line_number":548,"context_line":"        if not self.conf.use_namespaces:"},{"line_number":549,"context_line":"            return"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        device \u003d self._get_device(network)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2F3V4%3D","line":548,"in_reply_to":"AAAAPn%2F%2F6Ro%3D","updated":"2013-06-19 14:54:22.000000000","message":"Gary, no problem.  Will submit a new patch soon.","commit_id":"3a0e536b3f737d6c32f22751d477405d7239363f"}],"quantum/agent/linux/dhcp.py":[{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    # This call is idempotent and will only adjust the route if adjusting it"},{"line_number":183,"context_line":"    # would change it from what it already is.  This makes it safe to call and"},{"line_number":184,"context_line":"    # avoids unnecessary perturbation of the system."},{"line_number":185,"context_line":"    def _set_default_route(self):"},{"line_number":186,"context_line":"        if not self.namespace:"},{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fcb4%3D","line":185,"updated":"2013-06-03 20:05:16.000000000","message":"should have a docstring here","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"516045bfe6aa60da66169c5306b1b7d763f5c8ed","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        if not self.namespace:"},{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        for i, subnet in enumerate(self.network.subnets):"},{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcS8%3D","line":189,"updated":"2013-06-03 20:46:49.000000000","message":"i is not used so no need for enumerate","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        if not self.namespace:"},{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        for i, subnet in enumerate(self.network.subnets):"},{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcSM%3D","line":189,"in_reply_to":"AAAAPH%2F%2FcS8%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        for i, subnet in enumerate(self.network.subnets):"},{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcZk%3D","line":190,"updated":"2013-06-03 20:05:16.000000000","message":"that feels like an entirely different problem... or is there really a TODO here because of it?","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        for i, subnet in enumerate(self.network.subnets):"},{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcMY%3D","line":190,"in_reply_to":"AAAAPH%2F%2FcZk%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcaI%3D","line":193,"updated":"2013-06-03 20:05:16.000000000","message":"will this work for IPv6 subnets?  the code in _output_opts_file that writes the default gateway option for DHCP does so for IPv4 subnets only.","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            # TODO(carl-baldwin) Do we need to limit to dhcp enabled subnets?"},{"line_number":191,"context_line":"            if not subnet.enable_dhcp:"},{"line_number":192,"context_line":"                continue"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcMU%3D","line":193,"in_reply_to":"AAAAPH%2F%2FcaI%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            msg \u003d _(\u0027Setting dhcp gateway for network %(net) to %(ip)\u0027)"},{"line_number":198,"context_line":"            LOG.debug(msg, {\u0027net\u0027: self.network.id, \u0027ip\u0027: subnet.gateway_ip})"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcaA%3D","line":197,"updated":"2013-06-03 20:05:16.000000000","message":"s/dhcp/default as in \"setting default gateway\"","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":195,"context_line":"                continue"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"            msg \u003d _(\u0027Setting dhcp gateway for network %(net) to %(ip)\u0027)"},{"line_number":198,"context_line":"            LOG.debug(msg, {\u0027net\u0027: self.network.id, \u0027ip\u0027: subnet.gateway_ip})"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcLM%3D","line":197,"in_reply_to":"AAAAPH%2F%2FcaA%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"},{"line_number":201,"context_line":"            # command.  This is idempotent but does it qualify as not"},{"line_number":202,"context_line":"            # perturbing the system if the route does not change?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            cmd \u003d ["},{"line_number":205,"context_line":"                \u0027ip\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcZw%3D","line":202,"updated":"2013-06-03 20:05:16.000000000","message":"maybe use IpRouteCommand.get_gateway to check?","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"},{"line_number":201,"context_line":"            # command.  This is idempotent but does it qualify as not"},{"line_number":202,"context_line":"            # perturbing the system if the route does not change?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            cmd \u003d ["},{"line_number":205,"context_line":"                \u0027ip\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcMQ%3D","line":202,"in_reply_to":"AAAAPH%2F%2FcZw%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"},{"line_number":201,"context_line":"            # command.  This is idempotent but does it qualify as not"},{"line_number":202,"context_line":"            # perturbing the system if the route does not change?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            cmd \u003d ["},{"line_number":205,"context_line":"                \u0027ip\u0027,"},{"line_number":206,"context_line":"                \u0027route\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fcak%3D","line":203,"updated":"2013-06-03 20:05:16.000000000","message":"Can you use IpRouteCommand.add_gateway here?","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            # TODO(carl-baldwin) This unconditionally executes the ip route"},{"line_number":201,"context_line":"            # command.  This is idempotent but does it qualify as not"},{"line_number":202,"context_line":"            # perturbing the system if the route does not change?"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"            cmd \u003d ["},{"line_number":205,"context_line":"                \u0027ip\u0027,"},{"line_number":206,"context_line":"                \u0027route\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcMM%3D","line":203,"in_reply_to":"AAAAPH%2F%2Fcak%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            return"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        msg \u003d _(\u0027Removing dhcp gateway for network %s\u0027)"},{"line_number":220,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        cmd \u003d [\u0027ip\u0027, \u0027route\u0027, \u0027del\u0027, \u0027default\u0027, ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcZg%3D","line":219,"updated":"2013-06-03 20:05:16.000000000","message":"s/dhcp/default","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            return"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        msg \u003d _(\u0027Removing dhcp gateway for network %s\u0027)"},{"line_number":220,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        cmd \u003d [\u0027ip\u0027, \u0027route\u0027, \u0027del\u0027, \u0027default\u0027, ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcRw%3D","line":219,"in_reply_to":"AAAAPH%2F%2FcZg%3D","updated":"2013-06-03 22:23:01.000000000","message":"Re-worded this to make it more clear what I was trying to say.","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        msg \u003d _(\u0027Removing dhcp gateway for network %s\u0027)"},{"line_number":220,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        cmd \u003d [\u0027ip\u0027, \u0027route\u0027, \u0027del\u0027, \u0027default\u0027, ]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper, self.namespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fcag%3D","line":221,"updated":"2013-06-03 20:05:16.000000000","message":"can you use IpRouteCommand.delete_gateway here?","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        msg \u003d _(\u0027Removing dhcp gateway for network %s\u0027)"},{"line_number":220,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        cmd \u003d [\u0027ip\u0027, \u0027route\u0027, \u0027del\u0027, \u0027default\u0027, ]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper, self.namespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcMI%3D","line":221,"in_reply_to":"AAAAPH%2F%2Fcag%3D","updated":"2013-06-03 22:23:01.000000000","message":"Done","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1038,"name":"Jack McCann","username":"jack-mccann"},"change_message_id":"bad649b1bb8393607a9f5b4f9bc5ed1babce95b0","unresolved":false,"context_lines":[{"line_number":382,"context_line":"            cmd \u003d [\u0027kill\u0027, \u0027-HUP\u0027, self.pid]"},{"line_number":383,"context_line":"            utils.execute(cmd, self.root_helper)"},{"line_number":384,"context_line":"        else:"},{"line_number":385,"context_line":"            LOG.debug(_(\u0027Pid %d is stale, relaunching dnsmasq\u0027), self.pid)"},{"line_number":386,"context_line":"        LOG.debug(_(\u0027Reloading allocations for network: %s\u0027), self.network.id)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        self._set_default_route()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcYw%3D","line":385,"updated":"2013-06-03 20:05:16.000000000","message":"unrelated to your change, and not suggesting you try to fix it as part of this, but is there some code missing here to do the actual relaunch of dnsmasq in stale pid case?","commit_id":"e23404f56f02cbfa5d7cab172beb6c241c99a776"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":196,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":197,"context_line":"                continue"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"            msg \u003d _(\u0027Setting gateway for dhcp namespace on net %(n) to %(ip)\u0027)"},{"line_number":200,"context_line":"            LOG.debug(msg, {\u0027n\u0027: self.network.id, \u0027ip\u0027: subnet.gateway_ip})"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"            ip_dev \u003d ip_lib.IPDevice("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F86w%3D","line":199,"updated":"2013-06-05 11:18:58.000000000","message":"Would it not be better to call this log message on line 208?","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            if subnet.gateway_ip is None:"},{"line_number":197,"context_line":"                continue"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"            msg \u003d _(\u0027Setting gateway for dhcp namespace on net %(n) to %(ip)\u0027)"},{"line_number":200,"context_line":"            LOG.debug(msg, {\u0027n\u0027: self.network.id, \u0027ip\u0027: subnet.gateway_ip})"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"            ip_dev \u003d ip_lib.IPDevice("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F8eQ%3D","line":199,"in_reply_to":"AAAAPX%2F%2F86w%3D","updated":"2013-06-05 16:01:52.000000000","message":"Done","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":208,"context_line":"                ip_dev.route.add_gateway(subnet.gateway_ip)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        msg \u003d _(\u0027Removing gateway for dhcp namespace on net %s\u0027)"},{"line_number":213,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F86k%3D","line":211,"updated":"2013-06-05 11:18:58.000000000","message":"Can you please clarify why you need to delete the gateway here?","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                ip_dev.route.add_gateway(subnet.gateway_ip)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        msg \u003d _(\u0027Removing gateway for dhcp namespace on net %s\u0027)"},{"line_number":213,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F8Yc%3D","line":211,"in_reply_to":"AAAAPX%2F%2F86k%3D","updated":"2013-06-05 16:01:52.000000000","message":"Certainly.  Given that we\u0027ve reached this point in the code, there are no subnets on the network with a valid gateway.  I thought it better to clean it up to avoid any confusion from seeing an invalid gateway here.\n\nAdditionally, it makes it truely idempotent in that running this method with a given set of subnets will produce the same result regardless of the state before running it.","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        msg \u003d _(\u0027Removing gateway for dhcp namespace on net %s\u0027)"},{"line_number":213,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        ip_dev \u003d ip_lib.IPDevice("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F86o%3D","line":212,"updated":"2013-06-05 11:18:58.000000000","message":"Please move this to line 222","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        msg \u003d _(\u0027Removing gateway for dhcp namespace on net %s\u0027)"},{"line_number":213,"context_line":"        LOG.debug(msg, self.network.id)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        ip_dev \u003d ip_lib.IPDevice("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F8eM%3D","line":212,"in_reply_to":"AAAAPX%2F%2F86o%3D","updated":"2013-06-05 16:01:52.000000000","message":"Done","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":218,"context_line":"            self.namespace)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        gateway \u003d ip_dev.route.get_gateway()"},{"line_number":221,"context_line":"        if gateway !\u003d None:"},{"line_number":222,"context_line":"            ip_dev.route.delete_gateway(gateway)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F860%3D","line":221,"updated":"2013-06-05 11:18:58.000000000","message":"Consider:\nif gateway is not None:","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            self.namespace)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        gateway \u003d ip_dev.route.get_gateway()"},{"line_number":221,"context_line":"        if gateway !\u003d None:"},{"line_number":222,"context_line":"            ip_dev.route.delete_gateway(gateway)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2F8eI%3D","line":221,"in_reply_to":"AAAAPX%2F%2F860%3D","updated":"2013-06-05 16:01:52.000000000","message":"Done","commit_id":"3207c76e707c2459663df9404fd4cf4439b2ecb5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":182,"context_line":"    def _set_default_route(self):"},{"line_number":183,"context_line":"        # This method is idempotent and will only adjust the route if adjusting"},{"line_number":184,"context_line":"        # it would change it from what it already is.  This makes it safe to"},{"line_number":185,"context_line":"        # call and avoids unnecessary perturbation of the system."},{"line_number":186,"context_line":"        if not self.namespace:"},{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPX%2F%2F71E%3D","line":185,"updated":"2013-06-05 18:55:49.000000000","message":"Make this a docstring. It should be hacking H404 compliant (see https://review.openstack.org/31511 for examples).","commit_id":"37e6240d613be6efac1ebfbbcaef9864139e17e0"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    def _set_default_route(self):"},{"line_number":183,"context_line":"        # This method is idempotent and will only adjust the route if adjusting"},{"line_number":184,"context_line":"        # it would change it from what it already is.  This makes it safe to"},{"line_number":185,"context_line":"        # call and avoids unnecessary perturbation of the system."},{"line_number":186,"context_line":"        if not self.namespace:"},{"line_number":187,"context_line":"            return"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPX%2F%2F7IU%3D","line":185,"in_reply_to":"AAAAPX%2F%2F71E%3D","updated":"2013-06-05 22:22:12.000000000","message":"Yes, I meant to address this before with Jack brought it up. \n\nDone.","commit_id":"37e6240d613be6efac1ebfbbcaef9864139e17e0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":208,"context_line":"                ip_dev.route.add_gateway(subnet.gateway_ip)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        ip_dev \u003d ip_lib.IPDevice("},{"line_number":213,"context_line":"            self.interface_name,"},{"line_number":214,"context_line":"            self.root_helper,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPX%2F%2F7z4%3D","line":211,"updated":"2013-06-05 18:55:49.000000000","message":"Summarize your answer to Gary\u0027s question in patch set 3 in a comment explaining why the gateway is deleted here.","commit_id":"37e6240d613be6efac1ebfbbcaef9864139e17e0"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                ip_dev.route.add_gateway(subnet.gateway_ip)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            return"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        ip_dev \u003d ip_lib.IPDevice("},{"line_number":213,"context_line":"            self.interface_name,"},{"line_number":214,"context_line":"            self.root_helper,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPX%2F%2F7H0%3D","line":211,"in_reply_to":"AAAAPX%2F%2F7z4%3D","updated":"2013-06-05 22:22:12.000000000","message":"Done","commit_id":"37e6240d613be6efac1ebfbbcaef9864139e17e0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        Also, for true idempotence removing any gateway here ensures that"},{"line_number":221,"context_line":"        running with a set of subnets will produce the same result each time."},{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        ip_dev \u003d ip_lib.IPDevice("},{"line_number":224,"context_line":"            self.interface_name,"},{"line_number":225,"context_line":"            self.root_helper,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPX%2F%2F7AM%3D","line":222,"updated":"2013-06-05 22:58:12.000000000","message":"This should be a comment not a string. Also make it more concise -- I think the middle paragraph will suffice.","commit_id":"ae52855607a1384e9471526d6952009dbbc212d8"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        Also, for true idempotence removing any gateway here ensures that"},{"line_number":221,"context_line":"        running with a set of subnets will produce the same result each time."},{"line_number":222,"context_line":"        \"\"\""},{"line_number":223,"context_line":"        ip_dev \u003d ip_lib.IPDevice("},{"line_number":224,"context_line":"            self.interface_name,"},{"line_number":225,"context_line":"            self.root_helper,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPX%2F%2F6%2Bs%3D","line":222,"in_reply_to":"AAAAPX%2F%2F7AM%3D","updated":"2013-06-12 16:08:02.000000000","message":"Done","commit_id":"ae52855607a1384e9471526d6952009dbbc212d8"}],"quantum/tests/unit/test_linux_dhcp.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":408,"context_line":"            lp._set_default_route()"},{"line_number":409,"context_line":"            assert not route.get_gateway.called"},{"line_number":410,"context_line":"            assert not route.delete_gateway.called"},{"line_number":411,"context_line":"            assert not route.add_gateway.called"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    def test_set_default_route_no_subnet(self):"},{"line_number":414,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FJw%3D","line":411,"updated":"2013-06-04 14:49:33.000000000","message":"Should use self.assertFalse","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            lp._set_default_route()"},{"line_number":409,"context_line":"            assert not route.get_gateway.called"},{"line_number":410,"context_line":"            assert not route.delete_gateway.called"},{"line_number":411,"context_line":"            assert not route.add_gateway.called"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    def test_set_default_route_no_subnet(self):"},{"line_number":414,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FDU%3D","line":411,"in_reply_to":"AAAAPX%2F%2F%2FJw%3D","updated":"2013-06-04 15:01:08.000000000","message":"Done","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":423,"context_line":"            route.delete_gateway.assert_called_once_with(\u0027192.168.0.1\u0027)"},{"line_number":424,"context_line":"            assert not route.add_gateway.called"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    def test_set_default_route_no_subnet_do_nothing(self):"},{"line_number":427,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FJs%3D","line":424,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":436,"context_line":"            assert not route.delete_gateway.called"},{"line_number":437,"context_line":"            assert not route.add_gateway.called"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def test_set_default_route_no_gateway(self):"},{"line_number":440,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FJo%3D","line":437,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":448,"context_line":"            route.delete_gateway.assert_called_once_with(\u0027192.168.0.1\u0027)"},{"line_number":449,"context_line":"            assert not route.add_gateway.called"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def test_set_default_route(self):"},{"line_number":452,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FJk%3D","line":449,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":458,"context_line":"            lp._set_default_route()"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":461,"context_line":"            assert not route.delete_gateway.called"},{"line_number":462,"context_line":"            route.add_gateway.assert_called_once_with(\u0027192.168.0.1\u0027)"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def test_set_default_route_do_nothing(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FII%3D","line":461,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":474,"context_line":"            assert not route.delete_gateway.called"},{"line_number":475,"context_line":"            assert not route.add_gateway.called"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def test_set_default_route_change_gateway(self):"},{"line_number":478,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FFc%3D","line":475,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":484,"context_line":"            lp._set_default_route()"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":487,"context_line":"            assert not route.delete_gateway.called"},{"line_number":488,"context_line":"            route.add_gateway.assert_called_once_with(\u0027192.168.0.1\u0027)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    def test_set_default_route_two_subnets(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FFk%3D","line":487,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"unresolved":false,"context_lines":[{"line_number":502,"context_line":"            lp._set_default_route()"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"            route.get_gateway.assert_called_once()"},{"line_number":505,"context_line":"            assert not route.delete_gateway.called"},{"line_number":506,"context_line":"            route.add_gateway.assert_called_once_with(\u0027192.168.0.1\u0027)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F%2FFM%3D","line":505,"updated":"2013-06-04 14:49:33.000000000","message":"ditto","commit_id":"18d04fe4e8abbe8e70fb7cc66198f35204509ebf"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"061412ecf6c6e4309135e57b9c13e91a608dd7aa","unresolved":false,"context_lines":[{"line_number":401,"context_line":"    def test_set_default_route_no_namespaces(self):"},{"line_number":402,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ip_lib.IPDevice\u0027) as ip_dev:"},{"line_number":403,"context_line":"            route \u003d ip_dev.return_value.route"},{"line_number":404,"context_line":"            route.get_gateway.return_value \u003d \u0027192.168.0.1\u0027"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"            # Try without a namespace.  Should do nothing."},{"line_number":407,"context_line":"            lp \u003d LocalChild(self.conf, FakeV4NetworkNoSubnet)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPX%2F%2Fw14%3D","line":404,"updated":"2013-06-11 04:54:35.000000000","message":"This line isn\u0027t needed in this test.  Take it out.","commit_id":"c7a54fb1bbf685e105b0dc4ad2e6bd16926b4ab4"}]}
