)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0829ec34de0908d90ea86a67cefba9d7cbde1cc1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":"Change-Id: Iab101682df4676ad3ca2531356a1de8f2a2d4f14"},{"line_number":12,"context_line":"Closes-Bug: https://bugs.launchpad.net/neutron/+bug/1497969"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_bd48f52e","line":12,"updated":"2015-09-24 20:32:42.000000000","message":"don\u0027t put the full link, just the bug number\n\nCloses-Bug: #1497969","commit_id":"d51e45a6fb5fb56e462b7133a767ca8748976e61"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8d660f0232c926ba45ec96781633693501860309","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iab101682df4676ad3ca2531356a1de8f2a2d4f14"},{"line_number":13,"context_line":"Closes-Bug: #1497969"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_56eaf7db","line":10,"updated":"2015-10-11 06:07:19.000000000","message":"It will be better to provide a sample output either here or in the defect report.","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"9497436942bc49b29b51a07aee4a1397f8f2433e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iab101682df4676ad3ca2531356a1de8f2a2d4f14"},{"line_number":13,"context_line":"Closes-Bug: #1497969"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_d64cc79f","line":10,"in_reply_to":"7a2fa921_56eaf7db","updated":"2015-10-11 07:24:44.000000000","message":"done - attached the output in the issue\u0027s comments.","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8d660f0232c926ba45ec96781633693501860309","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iab101682df4676ad3ca2531356a1de8f2a2d4f14"},{"line_number":13,"context_line":"Closes-Bug: #1497969"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_76e5b306","line":12,"updated":"2015-10-11 06:07:19.000000000","message":"No DocImpact? ... Display output will be modified, I believe.","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"9497436942bc49b29b51a07aee4a1397f8f2433e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iab101682df4676ad3ca2531356a1de8f2a2d4f14"},{"line_number":13,"context_line":"Closes-Bug: #1497969"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a2fa921_765cd34a","line":12,"in_reply_to":"7a2fa921_76e5b306","updated":"2015-10-11 07:24:44.000000000","message":"done.","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc09c345b6612318e270cba7be2f8270a2a11640","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haim Daniel \u003chdaniel@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-19 15:32:01 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a29b11f_ffc72c43","line":7,"updated":"2015-10-19 12:40:19.000000000","message":"this should be the loaded agent extensions (it is not the neutron service extensions - if it is then this is a no go)","commit_id":"570f212c08641e6d2344e93e506e93b53578c8c3"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"0ea6783764bb99beb7509564bfe3b557cbcf07c8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haim Daniel \u003chdaniel@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-19 15:32:01 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a29b11f_bff9b44f","line":7,"in_reply_to":"3a29b11f_ffc72c43","updated":"2015-10-19 12:46:52.000000000","message":"Done","commit_id":"570f212c08641e6d2344e93e506e93b53578c8c3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc09c345b6612318e270cba7be2f8270a2a11640","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a29b11f_5f88a022","line":10,"updated":"2015-10-19 12:40:19.000000000","message":"what is subj?\nI am not really sure that I understand the commit message","commit_id":"570f212c08641e6d2344e93e506e93b53578c8c3"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"0ea6783764bb99beb7509564bfe3b557cbcf07c8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"ovs_neutron_agent: display loaded extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron agent-show command does not provide the visibility for the"},{"line_number":10,"context_line":"subj. This commit fixes that."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"DocImpact"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a29b11f_5f9500e2","line":10,"in_reply_to":"3a29b11f_5f88a022","updated":"2015-10-19 12:46:52.000000000","message":"Done","commit_id":"570f212c08641e6d2344e93e506e93b53578c8c3"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0829ec34de0908d90ea86a67cefba9d7cbde1cc1","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            self.int_br_device_count)"},{"line_number":325,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027in_distributed_mode\u0027] \u003d ("},{"line_number":326,"context_line":"            self.dvr_agent.in_distributed_mode())"},{"line_number":327,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d \\"},{"line_number":328,"context_line":"            ([e.name for e in self.ext_manager])"},{"line_number":329,"context_line":"        try:"},{"line_number":330,"context_line":"            self.state_rpc.report_state(self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_5d5519c4","line":327,"updated":"2015-09-24 20:32:42.000000000","message":"Use the parens style line wrap instead of the back-slash just so it\u0027s consistent with the code right above this","commit_id":"d51e45a6fb5fb56e462b7133a767ca8748976e61"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"626a40c1284d0d9930f2fff4e8991eef7f64a6d2","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            self.int_br_device_count)"},{"line_number":325,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027in_distributed_mode\u0027] \u003d ("},{"line_number":326,"context_line":"            self.dvr_agent.in_distributed_mode())"},{"line_number":327,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d \\"},{"line_number":328,"context_line":"            ([e.name for e in self.ext_manager])"},{"line_number":329,"context_line":"        try:"},{"line_number":330,"context_line":"            self.state_rpc.report_state(self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e6ca3f4f","line":327,"in_reply_to":"9a1a9d01_53237305","updated":"2015-10-06 13:07:23.000000000","message":"Note that in this function runs every T seconds (Default T \u003d 30). You\u0027re supposed to update things that change during run time like self.int_br_device_count. In this case, the loaded extensions will not change during run time as they are loaded when the process starts. So, there\u0027s no need to update them here on every loop iteration.","commit_id":"d51e45a6fb5fb56e462b7133a767ca8748976e61"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"848e3074364d9e23b6fefc3626c0e9103ac938d9","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            self.int_br_device_count)"},{"line_number":325,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027in_distributed_mode\u0027] \u003d ("},{"line_number":326,"context_line":"            self.dvr_agent.in_distributed_mode())"},{"line_number":327,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d \\"},{"line_number":328,"context_line":"            ([e.name for e in self.ext_manager])"},{"line_number":329,"context_line":"        try:"},{"line_number":330,"context_line":"            self.state_rpc.report_state(self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_53237305","line":327,"in_reply_to":"9a1a9d01_5d5519c4","updated":"2015-09-28 14:15:57.000000000","message":"+1","commit_id":"d51e45a6fb5fb56e462b7133a767ca8748976e61"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8d660f0232c926ba45ec96781633693501860309","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    #   1.0 Initial version"},{"line_number":134,"context_line":"    #   1.1 Support Security Group RPC"},{"line_number":135,"context_line":"    #   1.2 Support DVR (Distributed Virtual Router) RPC"},{"line_number":136,"context_line":"    #   1.3 Added param devices_to_update to security_groups_provider_updated"},{"line_number":137,"context_line":"    #   1.4 Added support for network_update"},{"line_number":138,"context_line":"    target \u003d oslo_messaging.Target(version\u003d\u00271.4\u0027)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_761e130d","line":136,"updated":"2015-10-11 06:07:19.000000000","message":"Can you plz mention about the new support over here?","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8d660f0232c926ba45ec96781633693501860309","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.vifname_to_ofport_map \u003d {}"},{"line_number":245,"context_line":"        self.setup_rpc()"},{"line_number":246,"context_line":"        self.init_extension_manager(self.connection)"},{"line_number":247,"context_line":"        self.update_loaded_extensions()"},{"line_number":248,"context_line":"        self.bridge_mappings \u003d bridge_mappings"},{"line_number":249,"context_line":"        self.setup_physical_bridges(self.bridge_mappings)"},{"line_number":250,"context_line":"        self.local_vlan_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_f6d8e354","line":247,"updated":"2015-10-11 06:07:19.000000000","message":"How about making this as a part of \"def init_extension_manager\"?","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"9497436942bc49b29b51a07aee4a1397f8f2433e","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.vifname_to_ofport_map \u003d {}"},{"line_number":245,"context_line":"        self.setup_rpc()"},{"line_number":246,"context_line":"        self.init_extension_manager(self.connection)"},{"line_number":247,"context_line":"        self.update_loaded_extensions()"},{"line_number":248,"context_line":"        self.bridge_mappings \u003d bridge_mappings"},{"line_number":249,"context_line":"        self.setup_physical_bridges(self.bridge_mappings)"},{"line_number":250,"context_line":"        self.local_vlan_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_d6f04769","line":247,"in_reply_to":"7a2fa921_f6d8e354","updated":"2015-10-11 07:24:44.000000000","message":"The __init__ code is linear thus simple - , each function does only one thing, and it\u0027s readable flow. As such init_extension_manager() does one thing- inits the extension manager. It has nothing to do with the the agent_state. The \"protection\" for function order calls is done in functional test. This way the update_loaded_extension() function is decoupled from the ext_manager initialization and can be reused by some other flow/tests.","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"8d660f0232c926ba45ec96781633693501860309","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        self.ext_manager.initialize("},{"line_number":397,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def update_loaded_extensions(self):"},{"line_number":400,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d ("},{"line_number":401,"context_line":"            self.ext_manager.names())"},{"line_number":402,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_96dbaf4e","line":399,"updated":"2015-10-11 06:07:19.000000000","message":"How about making this functionality as a part of \"def init_extension_manager(self, connection):\"","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"9497436942bc49b29b51a07aee4a1397f8f2433e","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        self.ext_manager.initialize("},{"line_number":397,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def update_loaded_extensions(self):"},{"line_number":400,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d ("},{"line_number":401,"context_line":"            self.ext_manager.names())"},{"line_number":402,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a2fa921_b6e90b81","line":399,"in_reply_to":"7a2fa921_96dbaf4e","updated":"2015-10-11 07:24:44.000000000","message":"same comment as line:247","commit_id":"1d35181baba0ccc4967f7a314457b5c3541c0ab8"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"32f354a2434c8b31571508ed6228121cb913372e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                               self.enable_distributed_routing,"},{"line_number":216,"context_line":"                               \u0027log_agent_heartbeats\u0027:"},{"line_number":217,"context_line":"                               self.conf.AGENT.log_agent_heartbeats,"},{"line_number":218,"context_line":"                               \u0027extensions\u0027: \u0027\u0027},"},{"line_number":219,"context_line":"            \u0027agent_type\u0027: self.conf.AGENT.agent_type,"},{"line_number":220,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_a1bf60cf","line":218,"updated":"2015-10-19 10:59:05.000000000","message":"why you put a placeholder here and update it later?","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"19c2447c5d0c7f1b8ed3b93e8f38f83203d0cd72","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                               self.enable_distributed_routing,"},{"line_number":216,"context_line":"                               \u0027log_agent_heartbeats\u0027:"},{"line_number":217,"context_line":"                               self.conf.AGENT.log_agent_heartbeats,"},{"line_number":218,"context_line":"                               \u0027extensions\u0027: \u0027\u0027},"},{"line_number":219,"context_line":"            \u0027agent_type\u0027: self.conf.AGENT.agent_type,"},{"line_number":220,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_b5e4733b","line":218,"in_reply_to":"3a29b11f_8d95b5e5","updated":"2015-10-19 13:14:52.000000000","message":"I think the placeholder provided some clarity on what we do report by just looking go this dict creation.\nI liked it.","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"bc4f20fbc40c08786533e137466b3bad767c283f","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                               self.enable_distributed_routing,"},{"line_number":216,"context_line":"                               \u0027log_agent_heartbeats\u0027:"},{"line_number":217,"context_line":"                               self.conf.AGENT.log_agent_heartbeats,"},{"line_number":218,"context_line":"                               \u0027extensions\u0027: \u0027\u0027},"},{"line_number":219,"context_line":"            \u0027agent_type\u0027: self.conf.AGENT.agent_type,"},{"line_number":220,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_8d95b5e5","line":218,"in_reply_to":"3a29b11f_a1bf60cf","updated":"2015-10-19 12:30:59.000000000","message":"Done","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"32f354a2434c8b31571508ed6228121cb913372e","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.vifname_to_ofport_map \u003d {}"},{"line_number":245,"context_line":"        self.setup_rpc()"},{"line_number":246,"context_line":"        self.init_extension_manager(self.connection)"},{"line_number":247,"context_line":"        self.update_loaded_extensions()"},{"line_number":248,"context_line":"        self.bridge_mappings \u003d bridge_mappings"},{"line_number":249,"context_line":"        self.setup_physical_bridges(self.bridge_mappings)"},{"line_number":250,"context_line":"        self.local_vlan_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_a1a680bf","line":247,"updated":"2015-10-19 10:59:05.000000000","message":"you can just move agent_state initialization here.","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"bc4f20fbc40c08786533e137466b3bad767c283f","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.vifname_to_ofport_map \u003d {}"},{"line_number":245,"context_line":"        self.setup_rpc()"},{"line_number":246,"context_line":"        self.init_extension_manager(self.connection)"},{"line_number":247,"context_line":"        self.update_loaded_extensions()"},{"line_number":248,"context_line":"        self.bridge_mappings \u003d bridge_mappings"},{"line_number":249,"context_line":"        self.setup_physical_bridges(self.bridge_mappings)"},{"line_number":250,"context_line":"        self.local_vlan_map \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a29b11f_b236cc01","line":247,"in_reply_to":"3a29b11f_a1a680bf","updated":"2015-10-19 12:30:59.000000000","message":"True, but I prefer leaving the init code neat, linear and readable. so a function call doesn\u0027t really do harm. Especially if the function gets bloated later on.","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":11307,"name":"Andreas Scheuring","email":"andreas.scheuring@de.ibm.com","username":"uniqueName"},"change_message_id":"dae70362a8aae15daf4523e36194022e6d400a2f","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def update_loaded_extensions(self):"},{"line_number":400,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d ("},{"line_number":401,"context_line":"            self.ext_manager.names())"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def get_net_uuid(self, vif_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_ebc5510a","line":400,"updated":"2015-10-12 07:30:48.000000000","message":"I  was wondering if we should use a constant for \u0027extensions\u0027? But I see, that for all other keys that are accessed from within the agent code again Strings are used as well...","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"73644e23ac9497a149419024234b51179fff1bb8","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            connection, constants.EXTENSION_DRIVER_TYPE)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def update_loaded_extensions(self):"},{"line_number":400,"context_line":"        self.agent_state.get(\u0027configurations\u0027)[\u0027extensions\u0027] \u003d ("},{"line_number":401,"context_line":"            self.ext_manager.names())"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def get_net_uuid(self, vif_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a2fa921_acfe8c36","line":400,"in_reply_to":"7a2fa921_ebc5510a","updated":"2015-10-12 10:25:59.000000000","message":"+1, I think this can be handled as a separate fix","commit_id":"b9dba3aac0bd4f92e6b69b63458e163b6048f513"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"3049f0cb13af388a092e24e2df618266ffb66c12","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                               \u0027enable_distributed_routing\u0027:"},{"line_number":215,"context_line":"                               self.enable_distributed_routing,"},{"line_number":216,"context_line":"                               \u0027log_agent_heartbeats\u0027:"},{"line_number":217,"context_line":"                               self.conf.AGENT.log_agent_heartbeats},"},{"line_number":218,"context_line":"            \u0027agent_type\u0027: self.conf.AGENT.agent_type,"},{"line_number":219,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_35b5c3cc","line":217,"updated":"2015-10-19 13:19:53.000000000","message":"I liked having the \u0027extensions\u0027 here, so you could see how the state is going to look like from one place, instead of scattered addition.\n\nCan\u0027t we define the agent_state right at the end, and have a function to return the list of extensions, so we \u0027d have:\n\n  \u0027extensions\u0027: self.ext_manager.names(),   ?\n\n\nSorry to keep you going up and down on this  patch.","commit_id":"5bd1711aec1a4282044414aa9258fc6854d6282d"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"d0cccd5da42981a1b406d7acb0aadbbe4924d449","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                               \u0027enable_distributed_routing\u0027:"},{"line_number":215,"context_line":"                               self.enable_distributed_routing,"},{"line_number":216,"context_line":"                               \u0027log_agent_heartbeats\u0027:"},{"line_number":217,"context_line":"                               self.conf.AGENT.log_agent_heartbeats},"},{"line_number":218,"context_line":"            \u0027agent_type\u0027: self.conf.AGENT.agent_type,"},{"line_number":219,"context_line":"            \u0027start_flag\u0027: True}"},{"line_number":220,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_93170fa3","line":217,"in_reply_to":"3a29b11f_35b5c3cc","updated":"2015-10-19 13:57:26.000000000","message":"Done","commit_id":"5bd1711aec1a4282044414aa9258fc6854d6282d"},{"author":{"_account_id":9970,"name":"John Kasperski","email":"jckasper@linux.vnet.ibm.com","username":"jckasper"},"change_message_id":"9079304d2d971299090ec88558b10a382caa08c3","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        report_interval \u003d self.conf.AGENT.report_interval"},{"line_number":269,"context_line":"        if report_interval:"},{"line_number":270,"context_line":"            heartbeat \u003d loopingcall.FixedIntervalLoopingCall("},{"line_number":271,"context_line":"                self._report_state)"},{"line_number":272,"context_line":"            heartbeat.start(interval\u003dreport_interval)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_6accb589","line":270,"updated":"2015-10-19 14:50:04.000000000","message":"As a result of this patch, agent_state does not get initialized until L303, but _report_state() will try to use the state when it gets set up here.","commit_id":"a2d2f5c69748e2bb8faeefd84ad40237d320eaf9"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"50b2647c114ed2ae1570d4d8f89ed8b26a970eaf","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        report_interval \u003d self.conf.AGENT.report_interval"},{"line_number":269,"context_line":"        if report_interval:"},{"line_number":270,"context_line":"            heartbeat \u003d loopingcall.FixedIntervalLoopingCall("},{"line_number":271,"context_line":"                self._report_state)"},{"line_number":272,"context_line":"            heartbeat.start(interval\u003dreport_interval)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_33ef14ea","line":270,"in_reply_to":"3a29b11f_6accb589","updated":"2015-10-19 15:25:29.000000000","message":"Done","commit_id":"a2d2f5c69748e2bb8faeefd84ad40237d320eaf9"}],"neutron/tests/functional/agent/test_l2_ovs_agent.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"a0bb7a5402ed5305f94b128d1639193f61a2a20b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_report_loaded_extension(self):"},{"line_number":116,"context_line":"        self.agent._report_state()"},{"line_number":117,"context_line":"        self.assertIn(\u0027qos\u0027,"},{"line_number":118,"context_line":"                      self.agent.agent_state[\u0027configurations\u0027][\u0027extensions\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_a18a3c62","line":116,"updated":"2015-10-09 17:53:42.000000000","message":"There\u0027s no need to call report_state.","commit_id":"4f51c5b47dfefcb779b01bbca83b23d77a744e28"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"1655f3ed7e9f8b06c802c1e558239defbf6e4f55","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_report_loaded_extension(self):"},{"line_number":116,"context_line":"        self.agent._report_state()"},{"line_number":117,"context_line":"        self.assertIn(\u0027qos\u0027,"},{"line_number":118,"context_line":"                      self.agent.agent_state[\u0027configurations\u0027][\u0027extensions\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_07dc6044","line":116,"in_reply_to":"7a2fa921_876b9084","updated":"2015-10-09 18:52:10.000000000","message":"I see. That makes sense. will scrub that way. 10x","commit_id":"4f51c5b47dfefcb779b01bbca83b23d77a744e28"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"0d8a0a993ad2d150381e92b8c9276144c0f8571f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_report_loaded_extension(self):"},{"line_number":116,"context_line":"        self.agent._report_state()"},{"line_number":117,"context_line":"        self.assertIn(\u0027qos\u0027,"},{"line_number":118,"context_line":"                      self.agent.agent_state[\u0027configurations\u0027][\u0027extensions\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_ccfc4fba","line":116,"in_reply_to":"7a2fa921_a18a3c62","updated":"2015-10-09 18:34:19.000000000","message":"1. You mentioned _report_state invokation in your prev review comment.\n2. _report_state() potentially modifies the agent_state, so how about double testing that the extension is still there (e.g. 1. before _report_state() 2. after that ?)","commit_id":"4f51c5b47dfefcb779b01bbca83b23d77a744e28"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ea9a670f0c0efaf8240922b289d6e1219cef27b7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_report_loaded_extension(self):"},{"line_number":116,"context_line":"        self.agent._report_state()"},{"line_number":117,"context_line":"        self.assertIn(\u0027qos\u0027,"},{"line_number":118,"context_line":"                      self.agent.agent_state[\u0027configurations\u0027][\u0027extensions\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_e7c28484","line":116,"in_reply_to":"7a2fa921_ccfc4fba","updated":"2015-10-09 18:46:51.000000000","message":"It would be preferable to assert that the data sent to the server contains the expected extensions, and not check self.agent_state.","commit_id":"4f51c5b47dfefcb779b01bbca83b23d77a744e28"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6d36012b02d4e1ba9714b829d7e888c459922148","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def test_report_loaded_extension(self):"},{"line_number":116,"context_line":"        self.agent._report_state()"},{"line_number":117,"context_line":"        self.assertIn(\u0027qos\u0027,"},{"line_number":118,"context_line":"                      self.agent.agent_state[\u0027configurations\u0027][\u0027extensions\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_876b9084","line":116,"in_reply_to":"7a2fa921_e7c28484","updated":"2015-10-09 18:49:13.000000000","message":"To expand, the test framework mocks \u0027neutron.agent.rpc.PluginReportStateAPI\u0027, so you can call report_state and assert that the data sent to report_state contains the expected extensions, instead of checking self.agent_state.","commit_id":"4f51c5b47dfefcb779b01bbca83b23d77a744e28"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ab4370c5624cae08953f2e6fc802ed7a2019667b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        super(TestOVSAgentExtensionConfig, self).setUp()"},{"line_number":112,"context_line":"        self.config.set_override(\u0027extensions\u0027, [\u0027qos\u0027], \u0027agent\u0027)"},{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":"        self._set_rpc_report_state_mock()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _set_rpc_report_state_mock(self):"},{"line_number":117,"context_line":"        def _rpc_report_state_mock(context, agent_state, use_call\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a29b11f_477a0726","line":114,"updated":"2015-10-19 17:21:54.000000000","message":"This is needlessly complicated. You can use the mock library to make assertions on the RPC class (That\u0027s already mocked in the TestFramework setUp). I had something like this in mind: http://paste.openstack.org/show/476731/.","commit_id":"298b6e058cf4bb68decbbdd023a2d415085736eb"},{"author":{"_account_id":18485,"name":"Haim Daniel","email":"hdaniel@redhat.com","username":"hdaniel"},"change_message_id":"7f976172f4fd866329e78091350f57f37172035c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        super(TestOVSAgentExtensionConfig, self).setUp()"},{"line_number":112,"context_line":"        self.config.set_override(\u0027extensions\u0027, [\u0027qos\u0027], \u0027agent\u0027)"},{"line_number":113,"context_line":"        self.agent \u003d self.create_agent(create_tunnels\u003dFalse)"},{"line_number":114,"context_line":"        self._set_rpc_report_state_mock()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _set_rpc_report_state_mock(self):"},{"line_number":117,"context_line":"        def _rpc_report_state_mock(context, agent_state, use_call\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a29b11f_fbb64a3c","line":114,"in_reply_to":"3a29b11f_477a0726","updated":"2015-10-19 18:41:37.000000000","message":"I see. Done.","commit_id":"298b6e058cf4bb68decbbdd023a2d415085736eb"}]}
