)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modify dhcp agent for agent management extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"2/3 part of blueprint quantum-scheduler"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I196691650a99ba865bf06081a1fc4546f9fac7bd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAM3%2F%2Byac%3D","line":9,"updated":"2013-02-19 11:26:42.000000000","message":"2/3 -\u003e 2nd part \nor\nPart 2 of 3","commit_id":"71d11afdba7351d34ae5a103ae6bcf61d1b8d179"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modify dhcp agent for agent management extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"2/3 part of blueprint quantum-scheduler"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I196691650a99ba865bf06081a1fc4546f9fac7bd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAM3%2F%2ByHE%3D","line":9,"in_reply_to":"AAAAM3%2F%2Byac%3D","updated":"2013-02-19 11:37:31.000000000","message":"Done","commit_id":"71d11afdba7351d34ae5a103ae6bcf61d1b8d179"}],"etc/dhcp_agent.ini":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":43,"context_line":"# dhcp_agent_manager \u003d quantum.agent.dhcp_agent.DhcpAgentWithStateReport"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# Allow the agent managed by agent extension."},{"line_number":46,"context_line":"# use_agent_ext \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAM3%2F%2B1RQ%3D","line":46,"updated":"2013-02-18 07:58:27.000000000","message":"please change to use_agent_extension","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":43,"context_line":"# dhcp_agent_manager \u003d quantum.agent.dhcp_agent.DhcpAgentWithStateReport"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"# Allow the agent managed by agent extension."},{"line_number":46,"context_line":"# use_agent_ext \u003d True"}],"source_content_type":"text/x-properties","patch_set":2,"id":"AAAAM3%2F%2B1Dk%3D","line":46,"in_reply_to":"AAAAM3%2F%2B1RQ%3D","updated":"2013-02-18 11:09:38.000000000","message":"removed","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"}],"quantum/agent/dhcp_agent.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"44f6f764e9e6171329b4a015413f9ec1d4777d37","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027use_namespaces\u0027, default\u003dTrue,"},{"line_number":62,"context_line":"                    help\u003d_(\"Allow overlapping IP.\")),"},{"line_number":63,"context_line":"        cfg.BoolOpt(\u0027use_agent_ext\u0027, default\u003dTrue,"},{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FLTo%3D","line":64,"updated":"2013-02-04 19:24:29.000000000","message":"IMO, this value should be retrieved from quantum server.","commit_id":"9708c0dd02f0ad859dc1b945811b980095defe48"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027use_namespaces\u0027, default\u003dTrue,"},{"line_number":62,"context_line":"                    help\u003d_(\"Allow overlapping IP.\")),"},{"line_number":63,"context_line":"        cfg.BoolOpt(\u0027use_agent_ext\u0027, default\u003dTrue,"},{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2By5w%3D","line":64,"in_reply_to":"AAAAM3%2F%2FLTo%3D","updated":"2013-02-19 01:48:14.000000000","message":"It is not easy to do that. Doing this will make system complicated.\nHope we can deal it later.","commit_id":"9708c0dd02f0ad859dc1b945811b980095defe48"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.common import topics"},{"line_number":34,"context_line":"from quantum import context"},{"line_number":35,"context_line":"from quantum import manager"},{"line_number":36,"context_line":"from quantum.openstack.common import cfg"},{"line_number":37,"context_line":"from quantum.openstack.common import importutils"},{"line_number":38,"context_line":"from quantum.openstack.common import jsonutils"},{"line_number":39,"context_line":"from quantum.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1RI%3D","line":36,"updated":"2013-02-18 07:58:27.000000000","message":"you will need to rebase this is no longer valid.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.common import topics"},{"line_number":34,"context_line":"from quantum import context"},{"line_number":35,"context_line":"from quantum import manager"},{"line_number":36,"context_line":"from quantum.openstack.common import cfg"},{"line_number":37,"context_line":"from quantum.openstack.common import importutils"},{"line_number":38,"context_line":"from quantum.openstack.common import jsonutils"},{"line_number":39,"context_line":"from quantum.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Dc%3D","line":36,"in_reply_to":"AAAAM3%2F%2B1RI%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027use_namespaces\u0027, default\u003dTrue,"},{"line_number":62,"context_line":"                    help\u003d_(\"Allow overlapping IP.\")),"},{"line_number":63,"context_line":"        cfg.BoolOpt(\u0027use_agent_ext\u0027, default\u003dTrue,"},{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1dk%3D","line":64,"updated":"2013-02-18 04:00:54.000000000","message":"typo?  \"allow this agent to be managed by agent extension\"\n\nis there a particular use case were enabling/disabling this for individual agents is beneficial?  Given that a plugin already needs to indicate whether it supports an extension,  ideally this information could be conveyed to the agent. \n\nWill there be errors if we run this with a plugin that has not been modified to expect \"report_state\" calls?  If so, we should not default to this being true, given that this patch-set is landing super late in G-3 and many plugins do not support the agent interface, but still use dhcp.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"74025d2618a45091e1be60f365a8f89494b97773","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        cfg.BoolOpt(\u0027use_namespaces\u0027, default\u003dTrue,"},{"line_number":62,"context_line":"                    help\u003d_(\"Allow overlapping IP.\")),"},{"line_number":63,"context_line":"        cfg.BoolOpt(\u0027use_agent_ext\u0027, default\u003dTrue,"},{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1bw%3D","line":64,"in_reply_to":"AAAAM3%2F%2B1dk%3D","updated":"2013-02-18 04:17:45.000000000","message":"use_agent_ext switch is used to be compatible with old dhcp agent communication interface. I will try to send a message to quantum server when dhcp agent starts to detect if quantum server supports agent extension.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"},{"line_number":68,"context_line":"        cfg.IntOpt(\u0027report_interval\u0027, default\u003d4,"},{"line_number":69,"context_line":"                   help\u003d\u0027seconds between nodes reporting state to server\u0027),"},{"line_number":70,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1NE%3D","line":67,"updated":"2013-02-18 09:21:19.000000000","message":"Need help message","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    help\u003d_(\"Allow the agent managed by agent extension.\")),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"},{"line_number":68,"context_line":"        cfg.IntOpt(\u0027report_interval\u0027, default\u003d4,"},{"line_number":69,"context_line":"                   help\u003d\u0027seconds between nodes reporting state to server\u0027),"},{"line_number":70,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1DA%3D","line":67,"in_reply_to":"AAAAM3%2F%2B1NE%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb941af0d43d485fbcea13223fba908aa507392a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"},{"line_number":68,"context_line":"        cfg.IntOpt(\u0027report_interval\u0027, default\u003d4,"},{"line_number":69,"context_line":"                   help\u003d\u0027seconds between nodes reporting state to server\u0027),"},{"line_number":70,"context_line":"    ]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Xk%3D","line":69,"updated":"2013-02-18 08:29:26.000000000","message":"this should be wrapped by \u0027_()\u0027","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":67,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027),"},{"line_number":68,"context_line":"        cfg.IntOpt(\u0027report_interval\u0027, default\u003d4,"},{"line_number":69,"context_line":"                   help\u003d\u0027seconds between nodes reporting state to server\u0027),"},{"line_number":70,"context_line":"    ]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1DY%3D","line":69,"in_reply_to":"AAAAM3%2F%2B1Xk%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":576,"context_line":"    def __init__(self):"},{"line_number":577,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B43I%3D","line":577,"updated":"2013-02-15 15:03:06.000000000","message":"There is no difference between DhcpAgentManager and DhcpAgent. \nWhy do we need a new class? Is it just to reduce the diff size?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":576,"context_line":"    def __init__(self):"},{"line_number":577,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1C8%3D","line":577,"in_reply_to":"AAAAM3%2F%2B1M4%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":576,"context_line":"    def __init__(self):"},{"line_number":577,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1M4%3D","line":577,"in_reply_to":"AAAAM3%2F%2B1cE%3D","updated":"2013-02-18 09:21:19.000000000","message":"I got it. I didn\u0027t notice that the paremeter of __init__ is different. last time I reviewed.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"74025d2618a45091e1be60f365a8f89494b97773","unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":576,"context_line":"    def __init__(self):"},{"line_number":577,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1cE%3D","line":577,"in_reply_to":"AAAAM3%2F%2B43I%3D","updated":"2013-02-18 04:17:45.000000000","message":"the __init__ method is different.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb941af0d43d485fbcea13223fba908aa507392a","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        self.state_rpc \u003d agent_rpc.PluginReportStateAPI(topics.PLUGIN)"},{"line_number":585,"context_line":"        self.agent_state \u003d {"},{"line_number":586,"context_line":"            \u0027binary\u0027: \u0027quantum-dhcp-agent\u0027,"},{"line_number":587,"context_line":"            \u0027host\u0027: cfg.CONF.host,"},{"line_number":588,"context_line":"            \u0027topic\u0027: topics.DHCP_AGENT,"},{"line_number":589,"context_line":"            \u0027configurations\u0027: {\u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":590,"context_line":"                               \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Vk%3D","line":587,"updated":"2013-02-18 08:29:26.000000000","message":"use variable \u0027host\u0027 at here?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":584,"context_line":"        self.state_rpc \u003d agent_rpc.PluginReportStateAPI(topics.PLUGIN)"},{"line_number":585,"context_line":"        self.agent_state \u003d {"},{"line_number":586,"context_line":"            \u0027binary\u0027: \u0027quantum-dhcp-agent\u0027,"},{"line_number":587,"context_line":"            \u0027host\u0027: cfg.CONF.host,"},{"line_number":588,"context_line":"            \u0027topic\u0027: topics.DHCP_AGENT,"},{"line_number":589,"context_line":"            \u0027configurations\u0027: {\u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":590,"context_line":"                               \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1C4%3D","line":587,"in_reply_to":"AAAAM3%2F%2B1Vk%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb941af0d43d485fbcea13223fba908aa507392a","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            \u0027configurations\u0027: {\u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":590,"context_line":"                               \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"},{"line_number":591,"context_line":"            \u0027type\u0027: constants.AGENT_TYPE_DHCP_AGENT}"},{"line_number":592,"context_line":"        lease_time \u003d getattr(cfg.CONF, \u0027dhcp_lease_time\u0027, None)"},{"line_number":593,"context_line":"        if lease_time is not None:"},{"line_number":594,"context_line":"            self.agent_state["},{"line_number":595,"context_line":"                \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d lease_time"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1U0%3D","line":592,"updated":"2013-02-18 08:29:26.000000000","message":"use \u0027cfg.CONF.dhcp_lease_time\u0027 directly","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":589,"context_line":"            \u0027configurations\u0027: {\u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":590,"context_line":"                               \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"},{"line_number":591,"context_line":"            \u0027type\u0027: constants.AGENT_TYPE_DHCP_AGENT}"},{"line_number":592,"context_line":"        lease_time \u003d getattr(cfg.CONF, \u0027dhcp_lease_time\u0027, None)"},{"line_number":593,"context_line":"        if lease_time is not None:"},{"line_number":594,"context_line":"            self.agent_state["},{"line_number":595,"context_line":"                \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d lease_time"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Cw%3D","line":592,"in_reply_to":"AAAAM3%2F%2B1U0%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":596,"context_line":"        report_interval \u003d cfg.CONF.report_interval"},{"line_number":597,"context_line":"        if cfg.CONF.report_interval:"},{"line_number":598,"context_line":"            pulse \u003d loopingcall.LoopingCall(self._report_state)"},{"line_number":599,"context_line":"            pulse.start(interval\u003dreport_interval)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    @periodic_task.periodic_task"},{"line_number":602,"context_line":"    def _resync_helper(self, context):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FILg%3D","line":599,"updated":"2013-02-06 09:08:04.000000000","message":"This thread should be stopped when service is stopped.\nI.e. shouldn\u0027t stop method be overrided to stop this looping call?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":596,"context_line":"        report_interval \u003d cfg.CONF.report_interval"},{"line_number":597,"context_line":"        if cfg.CONF.report_interval:"},{"line_number":598,"context_line":"            pulse \u003d loopingcall.LoopingCall(self._report_state)"},{"line_number":599,"context_line":"            pulse.start(interval\u003dreport_interval)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    @periodic_task.periodic_task"},{"line_number":602,"context_line":"    def _resync_helper(self, context):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B420%3D","line":599,"in_reply_to":"AAAAM3%2F%2FILg%3D","updated":"2013-02-15 15:03:06.000000000","message":"Isaku,\nI don\u0027t understand why we need to do that? When the process is stopped, the threads is also killed. Are there any concerns?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":630,"context_line":"    cfg.CONF(project\u003d\u0027quantum\u0027)"},{"line_number":631,"context_line":"    config.setup_logging(cfg.CONF)"},{"line_number":632,"context_line":"    if not cfg.CONF.use_agent_ext:"},{"line_number":633,"context_line":"        # the options are printed in quantum_service.Service already"},{"line_number":634,"context_line":"        cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)"},{"line_number":635,"context_line":"        mgr \u003d DhcpAgent(cfg.CONF)"},{"line_number":636,"context_line":"        mgr.run()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Lw%3D","line":633,"updated":"2013-02-18 09:21:19.000000000","message":"This comment is a little confusing.\nlog_opt_values is called to ensure the same behavior as the case where agent extension is used.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":630,"context_line":"    cfg.CONF(project\u003d\u0027quantum\u0027)"},{"line_number":631,"context_line":"    config.setup_logging(cfg.CONF)"},{"line_number":632,"context_line":"    if not cfg.CONF.use_agent_ext:"},{"line_number":633,"context_line":"        # the options are printed in quantum_service.Service already"},{"line_number":634,"context_line":"        cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)"},{"line_number":635,"context_line":"        mgr \u003d DhcpAgent(cfg.CONF)"},{"line_number":636,"context_line":"        mgr.run()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Co%3D","line":633,"in_reply_to":"AAAAM3%2F%2B1Lw%3D","updated":"2013-02-18 11:09:38.000000000","message":"Done","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    help\u003d_(\"Support Metadata requests on isolated networks.\")),"},{"line_number":64,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":65,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":66,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027,"},{"line_number":67,"context_line":"                   help\u003d_(\"The Quantum DHCP agent manager. Clear it to use \""},{"line_number":68,"context_line":"                          \"OpenStack notification RPC without agent \""},{"line_number":69,"context_line":"                          \"management extension support.\")),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B024%3D","line":66,"updated":"2013-02-18 13:35:57.000000000","message":"Does DhcpAgentWithStateReport work with plugins without agent extension? Or it requires additional configurations for such plugins?\n\nI just would like to clarify the requirement. If it does not work, the sample plugin ini file needs to be updated since the features are freezed and we cannot add new features to such plugins.\n\nEither default value is ok to me.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    help\u003d_(\"Support Metadata requests on isolated networks.\")),"},{"line_number":64,"context_line":"        cfg.StrOpt(\u0027dhcp_agent_manager\u0027,"},{"line_number":65,"context_line":"                   default\u003d\u0027quantum.agent.dhcp_agent.\u0027"},{"line_number":66,"context_line":"                   \u0027DhcpAgentWithStateReport\u0027,"},{"line_number":67,"context_line":"                   help\u003d_(\"The Quantum DHCP agent manager. Clear it to use \""},{"line_number":68,"context_line":"                          \"OpenStack notification RPC without agent \""},{"line_number":69,"context_line":"                          \"management extension support.\")),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B0yk%3D","line":66,"in_reply_to":"AAAAM3%2F%2B024%3D","updated":"2013-02-18 14:15:16.000000000","message":"DhcpAgentWithStateReport does not work with plugins which use openstack notification RPC to communicate with dhcp agent.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":248,"context_line":"    # Use the update handler for the port create event."},{"line_number":249,"context_line":"    port_create_end \u003d port_update_end"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def port_delete_end(self, context, payload):"},{"line_number":252,"context_line":"        \"\"\"Handle the port.delete.end notification event.\"\"\""},{"line_number":253,"context_line":"        port \u003d self.cache.get_port_by_id(payload[\u0027port_id\u0027])"},{"line_number":254,"context_line":"        if port:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2ByKY%3D","line":251,"updated":"2013-02-19 10:56:21.000000000","message":"Pedant nit:\nHow about making it explicit that this variable is unused?\nPrefix it with an underscore should also prevent the hideous pylint error for unused variables","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B02w%3D","line":610,"updated":"2013-02-18 13:35:57.000000000","message":"\"host\" arugment is not passed to anywhere? Is it needed?","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B0zA%3D","line":610,"in_reply_to":"AAAAM3%2F%2B02w%3D","updated":"2013-02-18 14:15:16.000000000","message":"the child class will call parents\u0027 init method. it and manager.Manager should have the same __init__ method.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzYM%3D","line":610,"in_reply_to":"AAAAM3%2F%2B0zA%3D","updated":"2013-02-18 22:40:22.000000000","message":"In Python, super(class, self).method searches the method from parent classes and execute the method found first.\n\nclass DhcpAgentWithStateReport inherits DhcpAgentManager and manager.Manager and both classes have __init__ method, so DhcpAgentManager is executed and manager.Manager.__init__ is not executed. The signature of unexecuted method does not matter, so I wonder why host argument is needed.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentManager(DhcpAgent):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentManager, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzNQ%3D","line":610,"in_reply_to":"AAAAM3%2F%2BzYM%3D","updated":"2013-02-18 23:28:57.000000000","message":"I will remove this class","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"},{"line_number":615,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":616,"context_line":"        super(DhcpAgentWithStateReport, self).__init__(host\u003dhost)"},{"line_number":617,"context_line":"        self.state_rpc \u003d agent_rpc.PluginReportStateAPI(topics.PLUGIN)"},{"line_number":618,"context_line":"        self.agent_state \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BziY%3D","line":615,"updated":"2013-02-18 22:30:29.000000000","message":"I\u0027m failing to understand why this class cannot be merged with DHCPAgentManager. Note: this is different from amotoki\u0027s comment on the previous patch.\n\n- the host parameter is not used by DhcpAgentManager\n- we can cfg.CONF even from this class\n\nOr not?","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"},{"line_number":615,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":616,"context_line":"        super(DhcpAgentWithStateReport, self).__init__(host\u003dhost)"},{"line_number":617,"context_line":"        self.state_rpc \u003d agent_rpc.PluginReportStateAPI(topics.PLUGIN)"},{"line_number":618,"context_line":"        self.agent_state \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2ByK8%3D","line":615,"in_reply_to":"AAAAM3%2F%2BzWU%3D","updated":"2013-02-19 10:56:21.000000000","message":"I think your answer to Akihiro\u0027s comment addresses my comments as well.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"class DhcpAgentWithStateReport(DhcpAgentManager, manager.Manager):"},{"line_number":615,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":616,"context_line":"        super(DhcpAgentWithStateReport, self).__init__(host\u003dhost)"},{"line_number":617,"context_line":"        self.state_rpc \u003d agent_rpc.PluginReportStateAPI(topics.PLUGIN)"},{"line_number":618,"context_line":"        self.agent_state \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzWU%3D","line":615,"in_reply_to":"AAAAM3%2F%2BziY%3D","updated":"2013-02-18 22:59:49.000000000","message":"To be a manager.Manager\u0027s sub class and used in quantum_service.Service.create framework, we must have this __init__(self, host\u003dNone) constructor. I need to derive both DhcpAgent and manager.Manager, which have different __init__, so introduce a middle DhcpAgentManager seems good. Do u have another way to do it?","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":623,"context_line":"                \u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":624,"context_line":"                \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"},{"line_number":625,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":626,"context_line":"            \u0027agent_type\u0027: constants.AGENT_TYPE_DHCP}"},{"line_number":627,"context_line":"        self.agent_state["},{"line_number":628,"context_line":"            \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d cfg.CONF.dhcp_lease_time"},{"line_number":629,"context_line":"        report_interval \u003d cfg.CONF.AGENT.report_interval"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Bzhg%3D","line":626,"updated":"2013-02-18 22:30:29.000000000","message":"I need to look at patch 3 to gain a complete understanding, but it seems this whole data structure is synchronized with quantum scheduler service.\n\nThis makes sense.\nHowever I wonder (please note this are just innocent questions):\n1) What do we gain by storing \u0027binary\u0027 field; there might be different kinds of agents, and that\u0027s ok, but this information seem to be already present in \u0027topic\u0027 and \u0027agent_type\u0027 attributes\n2) Doesn\u0027t the topic uniquely identify the agent type as well?\n3) What\u0027s the purpose of informing the scheduler about the driver used by the agent (I understand the scheduler might use use_namespaces to avoid assigning networks to this agent which might cause IP clashes)","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":623,"context_line":"                \u0027dhcp_driver\u0027: cfg.CONF.dhcp_driver,"},{"line_number":624,"context_line":"                \u0027use_namespaces\u0027: cfg.CONF.use_namespaces},"},{"line_number":625,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":626,"context_line":"            \u0027agent_type\u0027: constants.AGENT_TYPE_DHCP}"},{"line_number":627,"context_line":"        self.agent_state["},{"line_number":628,"context_line":"            \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d cfg.CONF.dhcp_lease_time"},{"line_number":629,"context_line":"        report_interval \u003d cfg.CONF.AGENT.report_interval"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzUQ%3D","line":626,"in_reply_to":"AAAAM3%2F%2Bzhg%3D","updated":"2013-02-18 22:59:49.000000000","message":"they mean this binary is of type \u0027agent_type\u0027  running on host \u0027host\u0027 with topic \u0027topic\u0027, the key configurations are balaxx\n\nLater features can make use of this whole fact in their own way.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":625,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":626,"context_line":"            \u0027agent_type\u0027: constants.AGENT_TYPE_DHCP}"},{"line_number":627,"context_line":"        self.agent_state["},{"line_number":628,"context_line":"            \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d cfg.CONF.dhcp_lease_time"},{"line_number":629,"context_line":"        report_interval \u003d cfg.CONF.AGENT.report_interval"},{"line_number":630,"context_line":"        if report_interval:"},{"line_number":631,"context_line":"            heartbeat \u003d loopingcall.LoopingCall(self._report_state)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzhI%3D","line":628,"updated":"2013-02-18 22:30:29.000000000","message":"I think the above can be included in the dict starting @line618","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":625,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":626,"context_line":"            \u0027agent_type\u0027: constants.AGENT_TYPE_DHCP}"},{"line_number":627,"context_line":"        self.agent_state["},{"line_number":628,"context_line":"            \u0027configurations\u0027][\u0027dhcp_lease_time\u0027] \u003d cfg.CONF.dhcp_lease_time"},{"line_number":629,"context_line":"        report_interval \u003d cfg.CONF.AGENT.report_interval"},{"line_number":630,"context_line":"        if report_interval:"},{"line_number":631,"context_line":"            heartbeat \u003d loopingcall.LoopingCall(self._report_state)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzUM%3D","line":628,"in_reply_to":"AAAAM3%2F%2BzhI%3D","updated":"2013-02-18 22:59:49.000000000","message":"Done","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":666,"context_line":"    cfg.CONF(project\u003d\u0027quantum\u0027)"},{"line_number":667,"context_line":"    config.setup_logging(cfg.CONF)"},{"line_number":668,"context_line":"    if not cfg.CONF.dhcp_agent_manager:"},{"line_number":669,"context_line":"        cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)"},{"line_number":670,"context_line":"        mgr \u003d DhcpAgent(cfg.CONF)"},{"line_number":671,"context_line":"        mgr.run()"},{"line_number":672,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Bzbk%3D","line":669,"updated":"2013-02-18 22:30:29.000000000","message":"This (line 669) can be down regardless of the value for dhcp_agent_manager","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":666,"context_line":"    cfg.CONF(project\u003d\u0027quantum\u0027)"},{"line_number":667,"context_line":"    config.setup_logging(cfg.CONF)"},{"line_number":668,"context_line":"    if not cfg.CONF.dhcp_agent_manager:"},{"line_number":669,"context_line":"        cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)"},{"line_number":670,"context_line":"        mgr \u003d DhcpAgent(cfg.CONF)"},{"line_number":671,"context_line":"        mgr.run()"},{"line_number":672,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2ByK4%3D","line":669,"in_reply_to":"AAAAM3%2F%2BzT0%3D","updated":"2013-02-19 10:56:21.000000000","message":"Thanks for clarifying","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":666,"context_line":"    cfg.CONF(project\u003d\u0027quantum\u0027)"},{"line_number":667,"context_line":"    config.setup_logging(cfg.CONF)"},{"line_number":668,"context_line":"    if not cfg.CONF.dhcp_agent_manager:"},{"line_number":669,"context_line":"        cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)"},{"line_number":670,"context_line":"        mgr \u003d DhcpAgent(cfg.CONF)"},{"line_number":671,"context_line":"        mgr.run()"},{"line_number":672,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzT0%3D","line":669,"in_reply_to":"AAAAM3%2F%2Bzbk%3D","updated":"2013-02-18 22:59:49.000000000","message":"we have done it if we run quantum_service.Service.create.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":606,"context_line":"        eventlet.spawn(eventlet.serve, listener, self._handler)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentWithStateReport(DhcpAgent, manager.Manager):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentWithStateReport, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":"        self.host \u003d host"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByJc%3D","line":609,"updated":"2013-02-19 11:05:38.000000000","message":"This what I meant, but I have to say that your comment kind of made sense, because the __init__ methods in DhcpAgentWithStateReport mro list have different signatures.\n\nI think you attempted before to build an adapter for DhcpAgent in order to make the composition work.\n\nWe should some more checks here - but I think you can confirm both __init__ methods from superclasses are called?","commit_id":"71d11afdba7351d34ae5a103ae6bcf61d1b8d179"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":606,"context_line":"        eventlet.spawn(eventlet.serve, listener, self._handler)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"class DhcpAgentWithStateReport(DhcpAgent, manager.Manager):"},{"line_number":610,"context_line":"    def __init__(self, host\u003dNone):"},{"line_number":611,"context_line":"        super(DhcpAgentWithStateReport, self).__init__(cfg.CONF)"},{"line_number":612,"context_line":"        self.host \u003d host"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2ByHI%3D","line":609,"in_reply_to":"AAAAM3%2F%2ByJc%3D","updated":"2013-02-19 11:37:31.000000000","message":"Done","commit_id":"71d11afdba7351d34ae5a103ae6bcf61d1b8d179"}],"quantum/agent/rpc.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            try:"},{"line_number":128,"context_line":"                if hasattr(handler, name):"},{"line_number":129,"context_line":"                    getattr(handler, name)(None, msg[\u0027payload\u0027])"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    LOG.debug(_(\u0027Unknown event_type: %s.\u0027), msg[\u0027event_type\u0027])"},{"line_number":132,"context_line":"            except Exception, e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FILM%3D","line":129,"updated":"2013-02-06 09:08:04.000000000","message":"context instead of None?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"74025d2618a45091e1be60f365a8f89494b97773","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            try:"},{"line_number":128,"context_line":"                if hasattr(handler, name):"},{"line_number":129,"context_line":"                    getattr(handler, name)(None, msg[\u0027payload\u0027])"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    LOG.debug(_(\u0027Unknown event_type: %s.\u0027), msg[\u0027event_type\u0027])"},{"line_number":132,"context_line":"            except Exception, e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1bY%3D","line":129,"in_reply_to":"AAAAM3%2F%2FILM%3D","updated":"2013-02-18 04:17:45.000000000","message":"add a context parameter into the callback function is to be compatible with manager framework. However, our agent\u0027s callback functions don\u0027t use these context at all.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            try:"},{"line_number":128,"context_line":"                if hasattr(handler, name):"},{"line_number":129,"context_line":"                    getattr(handler, name)(None, msg[\u0027payload\u0027])"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    LOG.debug(_(\u0027Unknown event_type: %s.\u0027), msg[\u0027event_type\u0027])"},{"line_number":132,"context_line":"            except Exception, e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzZQ%3D","line":129,"updated":"2013-02-18 22:30:29.000000000","message":"I would like a solution where you don\u0027t have to do this.\nLooking at this patch, it\u0027s not evident why you do so.\n\nI will look at the other patch but it would be great if I can get an answer to this","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            try:"},{"line_number":128,"context_line":"                if hasattr(handler, name):"},{"line_number":129,"context_line":"                    getattr(handler, name)(None, msg[\u0027payload\u0027])"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    LOG.debug(_(\u0027Unknown event_type: %s.\u0027), msg[\u0027event_type\u0027])"},{"line_number":132,"context_line":"            except Exception, e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2ByK0%3D","line":129,"in_reply_to":"AAAAM3%2F%2BzTc%3D","updated":"2013-02-19 10:56:21.000000000","message":"Thanks for clarifying.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"            try:"},{"line_number":128,"context_line":"                if hasattr(handler, name):"},{"line_number":129,"context_line":"                    getattr(handler, name)(None, msg[\u0027payload\u0027])"},{"line_number":130,"context_line":"                else:"},{"line_number":131,"context_line":"                    LOG.debug(_(\u0027Unknown event_type: %s.\u0027), msg[\u0027event_type\u0027])"},{"line_number":132,"context_line":"            except Exception, e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzTc%3D","line":129,"in_reply_to":"AAAAM3%2F%2BzZQ%3D","updated":"2013-02-18 22:59:49.000000000","message":"all of the callback functions have context as first parameter, and payload as second one in oslo ( aka. openstack common) dispatcher. For us to use service framework and reuse these callback functions, I have to do this.","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"}],"quantum/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":"    # It seems dhcp agent does not support bulk operation"},{"line_number":28,"context_line":"    VALID_RESOURCES \u003d [\u0027network\u0027, \u0027subnet\u0027, \u0027port\u0027]"},{"line_number":29,"context_line":"    VALID_METHOD_NAMES \u003d [\u0027network.create.end\u0027,"},{"line_number":30,"context_line":"                          \u0027network.update.end\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2ByFE%3D","line":27,"updated":"2013-02-19 11:55:27.000000000","message":"not sure why we need this comment","commit_id":"f5020e005c0e2917c6969c134e3f39edbfbb3766"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":"    # It seems dhcp agent does not support bulk operation"},{"line_number":28,"context_line":"    VALID_RESOURCES \u003d [\u0027network\u0027, \u0027subnet\u0027, \u0027port\u0027]"},{"line_number":29,"context_line":"    VALID_METHOD_NAMES \u003d [\u0027network.create.end\u0027,"},{"line_number":30,"context_line":"                          \u0027network.update.end\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2ByEc%3D","line":27,"in_reply_to":"AAAAM3%2F%2ByFE%3D","updated":"2013-02-19 12:28:37.000000000","message":"base.py have \u0027networks\u0027, \u0027subnets\u0027 etc in bulk operation, but DHCP agent seemingly does not support it.  This comment tell us the fact.","commit_id":"f5020e005c0e2917c6969c134e3f39edbfbb3766"}],"quantum/api/v2/base.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _send_dhcp_notification(self, context, data, methodname):"},{"line_number":200,"context_line":"        if cfg.CONF.dhcp_agent_notification:"},{"line_number":201,"context_line":"            _dhcp_agent_notifier \u003d dhcp_rpc_agent_api.DhcpAgentNotifyAPI()"},{"line_number":202,"context_line":"            _dhcp_agent_notifier.notify(context, data, methodname)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def index(self, request, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2ByE4%3D","line":201,"updated":"2013-02-19 11:55:27.000000000","message":"do we need to call this with every command or can it just be called in the init?","commit_id":"f5020e005c0e2917c6969c134e3f39edbfbb3766"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def _send_dhcp_notification(self, context, data, methodname):"},{"line_number":200,"context_line":"        if cfg.CONF.dhcp_agent_notification:"},{"line_number":201,"context_line":"            _dhcp_agent_notifier \u003d dhcp_rpc_agent_api.DhcpAgentNotifyAPI()"},{"line_number":202,"context_line":"            _dhcp_agent_notifier.notify(context, data, methodname)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def index(self, request, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2ByEY%3D","line":201,"in_reply_to":"AAAAM3%2F%2ByE4%3D","updated":"2013-02-19 12:28:37.000000000","message":"I will try","commit_id":"f5020e005c0e2917c6969c134e3f39edbfbb3766"}],"quantum/db/dhcp_rpc_agent_api.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb941af0d43d485fbcea13223fba908aa507392a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Ng%3D","line":24,"updated":"2013-02-18 08:38:33.000000000","message":"Why we need this? We have already had notification in controller.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1Ck%3D","line":24,"in_reply_to":"AAAAM3%2F%2B1Ng%3D","updated":"2013-02-18 11:09:38.000000000","message":"OpenStack notification is used by ceiometer in general.  To use scheduler, we need message queues like other openstack components","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Bzag%3D","line":24,"updated":"2013-02-18 22:30:29.000000000","message":"I like having a base class for all RPC APIs. We kind of have them, but their sparse throughout the code. \nWhat about creating a package named quantum.api.rpc and start putting all these \u0027interface\u0027 classes there?","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DhcpAgentNotifyAPI(proxy.RpcProxy):"},{"line_number":25,"context_line":"    \"\"\"API for plugin to notify DHCP agent.\"\"\""},{"line_number":26,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2BzTU%3D","line":24,"in_reply_to":"AAAAM3%2F%2Bzag%3D","updated":"2013-02-18 22:59:49.000000000","message":"Done","commit_id":"4b6b46423789eae8729b5fa4d76695d8e0c49703"}],"quantum/plugins/linuxbridge/lb_quantum_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":402,"context_line":"            self._extend_network_dict_provider(context, net)"},{"line_number":403,"context_line":"            self._extend_network_dict_l3(context, net)"},{"line_number":404,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":405,"context_line":"        self.dhcp_agent_notifier.network_create_end(context,"},{"line_number":406,"context_line":"                                                    {\u0027network\u0027: net})"},{"line_number":407,"context_line":"        return net"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1QQ%3D","line":405,"updated":"2013-02-18 07:58:27.000000000","message":"one layer above notification messages are also sent. would it not be better that we do something generic instead of having to do it per plugin?","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":402,"context_line":"            self._extend_network_dict_provider(context, net)"},{"line_number":403,"context_line":"            self._extend_network_dict_l3(context, net)"},{"line_number":404,"context_line":"            # note - exception will rollback entire transaction"},{"line_number":405,"context_line":"        self.dhcp_agent_notifier.network_create_end(context,"},{"line_number":406,"context_line":"                                                    {\u0027network\u0027: net})"},{"line_number":407,"context_line":"        return net"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1CQ%3D","line":405,"in_reply_to":"AAAAM3%2F%2B1QQ%3D","updated":"2013-02-18 11:09:38.000000000","message":"It is hard to do this in the patch. We have run it into many times: security group, and other extensions.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"}],"quantum/plugins/openvswitch/ovs_quantum_plugin.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":536,"context_line":"        port \u003d super(OVSQuantumPluginV2, self).create_port(context, port)"},{"line_number":537,"context_line":"        port \u003d self._extend_port_dict_binding(context, port)"},{"line_number":538,"context_line":"        if (port[\u0027device_owner\u0027] and"},{"line_number":539,"context_line":"            port[\u0027device_owner\u0027].startswith(\u0027compute:\u0027)):"},{"line_number":540,"context_line":"            self.dhcp_agent_notifier.port_create_end(context, {\u0027port\u0027: port})"},{"line_number":541,"context_line":"        return port"},{"line_number":542,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1c8%3D","line":539,"updated":"2013-02-18 04:00:54.000000000","message":"if another service was to use quantum and need DHCP, this would break.  Could also be a problem if a \"network\" owned port (e.g., a load-balancer) ever relied on DHCP.  \n\nI\u0027d either send all notifications, if if that\u0027s a problem, explicitly rule out owners that you know don\u0027t need DHCP.","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"74025d2618a45091e1be60f365a8f89494b97773","unresolved":false,"context_lines":[{"line_number":536,"context_line":"        port \u003d super(OVSQuantumPluginV2, self).create_port(context, port)"},{"line_number":537,"context_line":"        port \u003d self._extend_port_dict_binding(context, port)"},{"line_number":538,"context_line":"        if (port[\u0027device_owner\u0027] and"},{"line_number":539,"context_line":"            port[\u0027device_owner\u0027].startswith(\u0027compute:\u0027)):"},{"line_number":540,"context_line":"            self.dhcp_agent_notifier.port_create_end(context, {\u0027port\u0027: port})"},{"line_number":541,"context_line":"        return port"},{"line_number":542,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2B1bU%3D","line":539,"in_reply_to":"AAAAM3%2F%2B1c8%3D","updated":"2013-02-18 04:17:45.000000000","message":"ok,  notify all of the port","commit_id":"91e930d42545f343363b6c9abbbed60bdad9f2f0"}],"quantum/tests/unit/test_dhcp_agent.py":[{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"44f6f764e9e6171329b4a015413f9ec1d4777d37","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.driver_cls_p.stop()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_dhcp_agent_main(self):"},{"line_number":104,"context_line":"        cfg.CONF.set_override(\u0027use_agent_ext\u0027, False)"},{"line_number":105,"context_line":"        logging_str \u003d \u0027quantum.agent.common.config.setup_logging\u0027"},{"line_number":106,"context_line":"        manager_str \u003d \u0027quantum.agent.dhcp_agent.DeviceManager\u0027"},{"line_number":107,"context_line":"        agent_str \u003d \u0027quantum.agent.dhcp_agent.DhcpAgent\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FLTU%3D","line":104,"updated":"2013-02-04 19:24:29.000000000","message":"Could you add test case if use_agent_ext is True?","commit_id":"9708c0dd02f0ad859dc1b945811b980095defe48"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.driver_cls_p.stop()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_dhcp_agent_main(self):"},{"line_number":104,"context_line":"        cfg.CONF.set_override(\u0027use_agent_ext\u0027, False)"},{"line_number":105,"context_line":"        logging_str \u003d \u0027quantum.agent.common.config.setup_logging\u0027"},{"line_number":106,"context_line":"        manager_str \u003d \u0027quantum.agent.dhcp_agent.DeviceManager\u0027"},{"line_number":107,"context_line":"        agent_str \u003d \u0027quantum.agent.dhcp_agent.DhcpAgent\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2By50%3D","line":104,"in_reply_to":"AAAAM3%2F%2FLTU%3D","updated":"2013-02-19 01:48:14.000000000","message":"Done","commit_id":"9708c0dd02f0ad859dc1b945811b980095defe48"}]}
