)]}'
{"quantum/agent/common/config.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def register_root_helper(conf):"},{"line_number":30,"context_line":"    conf.register_opts(ROOT_HELPER_OPTS, \u0027AGENT\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FRck%3D","line":29,"updated":"2013-01-30 19:07:39.000000000","message":"How about init_agent_config(conf)?\nWe may have shared opt between agent in future.","commit_id":"fd18a9d83a312b70021af7c715cbdf26cc5e8008"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def register_root_helper(conf):"},{"line_number":30,"context_line":"    conf.register_opts(ROOT_HELPER_OPTS, \u0027AGENT\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FPgk%3D","line":29,"in_reply_to":"AAAAM3%2F%2FQAs%3D","updated":"2013-01-31 18:58:01.000000000","message":"OK I got it. May be we should work on common agent infrastructure in H","commit_id":"fd18a9d83a312b70021af7c715cbdf26cc5e8008"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def register_root_helper(conf):"},{"line_number":30,"context_line":"    conf.register_opts(ROOT_HELPER_OPTS, \u0027AGENT\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FQAs%3D","line":29,"in_reply_to":"AAAAM3%2F%2FRck%3D","updated":"2013-01-31 11:07:54.000000000","message":"i would prefer that this stay specific to the root helper at the moment. i think that it may be confusing to have this as a general agent init function. in addition to this it need to be backward compatible","commit_id":"fd18a9d83a312b70021af7c715cbdf26cc5e8008"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":44,"context_line":"    root_helper \u003d conf.root_helper"},{"line_number":45,"context_line":"    if root_helper is not None:"},{"line_number":46,"context_line":"        LOG.deprecated(_(\u0027DEFAULT.root_helper is deprecated!\u0027))"},{"line_number":47,"context_line":"        return root_helper"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    return \u0027sudo\u0027"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMcQ%3D","line":47,"updated":"2013-02-04 04:56:47.000000000","message":"Both conf.root_helper and conf.AGENT.root_helper have the default value of \u0027sudo\u0027. Assume that I use the old style of quantum.conf (root_helper in DEFAULT). In this case the default value of conf.AGENT.root_helper is used and conf.root_helper is not used.\n\nPerhaps you try to use conf.root_helper in DEFAULT section if specified. If so we need to set default value of root_helper in DEFAULT section to None and check root_helper in DEFAULT section first. Does it make sense?","commit_id":"412476521d4758960d52745e20e27512d9579417"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":44,"context_line":"    root_helper \u003d conf.root_helper"},{"line_number":45,"context_line":"    if root_helper is not None:"},{"line_number":46,"context_line":"        LOG.deprecated(_(\u0027DEFAULT.root_helper is deprecated!\u0027))"},{"line_number":47,"context_line":"        return root_helper"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    return \u0027sudo\u0027"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMWs%3D","line":47,"in_reply_to":"AAAAM3%2F%2FMcQ%3D","updated":"2013-02-04 09:16:17.000000000","message":"Yes, what you have written makes sense. Good catch.","commit_id":"412476521d4758960d52745e20e27512d9579417"}],"quantum/agent/dhcp_agent.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"486d48ce906e1a9f783e8822a0ccee82d12ac9f7","unresolved":false,"context_lines":[{"line_number":544,"context_line":"def main():"},{"line_number":545,"context_line":"    eventlet.monkey_patch()"},{"line_number":546,"context_line":"    cfg.CONF.register_opts(DhcpAgent.OPTS)"},{"line_number":547,"context_line":"    cfg.CONF.register_opts(DhcpAgent.AGENT_OPTS, \u0027AGENT\u0027)"},{"line_number":548,"context_line":"    cfg.CONF.register_opts(DeviceManager.OPTS)"},{"line_number":549,"context_line":"    cfg.CONF.register_opts(DhcpLeaseRelay.OPTS)"},{"line_number":550,"context_line":"    cfg.CONF.register_opts(dhcp.OPTS)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FSu8%3D","line":547,"updated":"2013-01-29 23:49:55.000000000","message":"This code looks duplicated on many agent files.\nHow about create agent config package and use it even if it is just two line.\nMay be in future, we could have common configuration between agents.","commit_id":"c3a5126b487abcf327b01ac5856cf50631217c17"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":544,"context_line":"def main():"},{"line_number":545,"context_line":"    eventlet.monkey_patch()"},{"line_number":546,"context_line":"    cfg.CONF.register_opts(DhcpAgent.OPTS)"},{"line_number":547,"context_line":"    cfg.CONF.register_opts(DhcpAgent.AGENT_OPTS, \u0027AGENT\u0027)"},{"line_number":548,"context_line":"    cfg.CONF.register_opts(DeviceManager.OPTS)"},{"line_number":549,"context_line":"    cfg.CONF.register_opts(DhcpLeaseRelay.OPTS)"},{"line_number":550,"context_line":"    cfg.CONF.register_opts(dhcp.OPTS)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FSCw%3D","line":547,"in_reply_to":"AAAAM3%2F%2FSu8%3D","updated":"2013-01-30 11:45:51.000000000","message":"Done","commit_id":"c3a5126b487abcf327b01ac5856cf50631217c17"}],"quantum/tests/unit/test_agent_netns_cleanup.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":114,"context_line":"                util.unplug_device(conf, device)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                mock_get_bridge_for_iface.assert_called_once_with("},{"line_number":117,"context_line":"                    conf.AGENT.root_helper, \u0027tap1\u0027)"},{"line_number":118,"context_line":"                ovs_br_cls.called_once_with(\u0027br-int\u0027, \u0027sudo\u0027)"},{"line_number":119,"context_line":"                ovs_bridge.assert_has_calls("},{"line_number":120,"context_line":"                    [mock.call.delete_port(device.name)])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMdo%3D","line":117,"updated":"2013-02-04 04:56:47.000000000","message":"(suggestion) it would be better to use \u0027sudo\u0027 directly rather than conf.AGENT.root_helper since it checks if a proper root_helper is called.","commit_id":"412476521d4758960d52745e20e27512d9579417"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":114,"context_line":"                util.unplug_device(conf, device)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                mock_get_bridge_for_iface.assert_called_once_with("},{"line_number":117,"context_line":"                    conf.AGENT.root_helper, \u0027tap1\u0027)"},{"line_number":118,"context_line":"                ovs_br_cls.called_once_with(\u0027br-int\u0027, \u0027sudo\u0027)"},{"line_number":119,"context_line":"                ovs_bridge.assert_has_calls("},{"line_number":120,"context_line":"                    [mock.call.delete_port(device.name)])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FKXM%3D","line":117,"in_reply_to":"AAAAM3%2F%2FMWo%3D","updated":"2013-02-05 06:28:45.000000000","message":"Agree with you. Thanks for the clarification.","commit_id":"412476521d4758960d52745e20e27512d9579417"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":114,"context_line":"                util.unplug_device(conf, device)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                mock_get_bridge_for_iface.assert_called_once_with("},{"line_number":117,"context_line":"                    conf.AGENT.root_helper, \u0027tap1\u0027)"},{"line_number":118,"context_line":"                ovs_br_cls.called_once_with(\u0027br-int\u0027, \u0027sudo\u0027)"},{"line_number":119,"context_line":"                ovs_bridge.assert_has_calls("},{"line_number":120,"context_line":"                    [mock.call.delete_port(device.name)])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMWo%3D","line":117,"in_reply_to":"AAAAM3%2F%2FMdo%3D","updated":"2013-02-04 09:16:17.000000000","message":"We need this due to the fact that the mock conf is used.\n\u0027sudo\u0027 fails as it expects the mock structure with sudo","commit_id":"412476521d4758960d52745e20e27512d9579417"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    util.unplug_device(conf, device)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"                    mock_get_bridge_for_iface.assert_called_once_with("},{"line_number":143,"context_line":"                        conf.AGENT.root_helper, \u0027tap1\u0027)"},{"line_number":144,"context_line":"                    self.assertEqual(ovs_br_cls.mock_calls, [])"},{"line_number":145,"context_line":"                    self.assertTrue(debug.called)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMdk%3D","line":143,"updated":"2013-02-04 04:56:47.000000000","message":"(suggestion) Same as the above","commit_id":"412476521d4758960d52745e20e27512d9579417"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":140,"context_line":"                    util.unplug_device(conf, device)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"                    mock_get_bridge_for_iface.assert_called_once_with("},{"line_number":143,"context_line":"                        conf.AGENT.root_helper, \u0027tap1\u0027)"},{"line_number":144,"context_line":"                    self.assertEqual(ovs_br_cls.mock_calls, [])"},{"line_number":145,"context_line":"                    self.assertTrue(debug.called)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FMWk%3D","line":143,"in_reply_to":"AAAAM3%2F%2FMdk%3D","updated":"2013-02-04 09:16:17.000000000","message":"Same as above","commit_id":"412476521d4758960d52745e20e27512d9579417"}],"quantum/tests/unit/test_l3_agent.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c9b4f502dfb6557bcaa8d7583cbc4158b8f44011","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.conf.register_opts(interface.OPTS)"},{"line_number":44,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027,"},{"line_number":45,"context_line":"                               \u0027quantum.agent.linux.interface.NullDriver\u0027)"},{"line_number":46,"context_line":"        self.conf.root_helper \u003d \u0027sudo\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.device_exists_p \u003d mock.patch("},{"line_number":49,"context_line":"            \u0027quantum.agent.linux.ip_lib.device_exists\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FSLc%3D","line":46,"updated":"2013-01-30 10:30:15.000000000","message":"We should use self.conf.AGENT.root_helper at here?","commit_id":"7ee3301b893e3aa9d57731df220ba27dfe9541df"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.conf.register_opts(interface.OPTS)"},{"line_number":44,"context_line":"        self.conf.set_override(\u0027interface_driver\u0027,"},{"line_number":45,"context_line":"                               \u0027quantum.agent.linux.interface.NullDriver\u0027)"},{"line_number":46,"context_line":"        self.conf.root_helper \u003d \u0027sudo\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.device_exists_p \u003d mock.patch("},{"line_number":49,"context_line":"            \u0027quantum.agent.linux.ip_lib.device_exists\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FSJg%3D","line":46,"in_reply_to":"AAAAM3%2F%2FSLc%3D","updated":"2013-01-30 10:45:08.000000000","message":"Yes, this is required as it was once part of the L3NATAgent. Without the tests failed.","commit_id":"7ee3301b893e3aa9d57731df220ba27dfe9541df"}]}
