)]}'
{"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"e0f3fa3f8337766a2eb2deb01dc8316a3f9655a7","unresolved":false,"context_lines":[{"line_number":727,"context_line":"                                        fixed_ips,"},{"line_number":728,"context_line":"                                        device_owner)"},{"line_number":729,"context_line":"        port_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,"},{"line_number":730,"context_line":"                                                   \"other_config\") or {}"},{"line_number":731,"context_line":"        vlan_mapping \u003d {\u0027net_uuid\u0027: net_uuid,"},{"line_number":732,"context_line":"                        \u0027network_type\u0027: network_type,"},{"line_number":733,"context_line":"                        \u0027physical_network\u0027: physical_network,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_a9d157cf","line":730,"updated":"2015-07-13 16:40:55.000000000","message":"From reading the documentation here [1].  It is not clear to me when None will be returned.  Neither the bug report nor this patch has much information about why it is being returned here.  Without that understanding, this seems like a blind fix.\n\n [1] http://openvswitch.org/support/dist-docs/ovs-vswitchd.conf.db.5.txt","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"775f1d330aa0b4c02b19b20653c6ea44414957cb","unresolved":false,"context_lines":[{"line_number":727,"context_line":"                                        fixed_ips,"},{"line_number":728,"context_line":"                                        device_owner)"},{"line_number":729,"context_line":"        port_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,"},{"line_number":730,"context_line":"                                                   \"other_config\") or {}"},{"line_number":731,"context_line":"        vlan_mapping \u003d {\u0027net_uuid\u0027: net_uuid,"},{"line_number":732,"context_line":"                        \u0027network_type\u0027: network_type,"},{"line_number":733,"context_line":"                        \u0027physical_network\u0027: physical_network,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_1b089e27","line":730,"updated":"2015-08-01 22:55:33.000000000","message":"port is deleted","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"709bffe30dfd82982fccef427c6b5d4af1010c5b","unresolved":false,"context_lines":[{"line_number":727,"context_line":"                                        fixed_ips,"},{"line_number":728,"context_line":"                                        device_owner)"},{"line_number":729,"context_line":"        port_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,"},{"line_number":730,"context_line":"                                                   \"other_config\") or {}"},{"line_number":731,"context_line":"        vlan_mapping \u003d {\u0027net_uuid\u0027: net_uuid,"},{"line_number":732,"context_line":"                        \u0027network_type\u0027: network_type,"},{"line_number":733,"context_line":"                        \u0027physical_network\u0027: physical_network,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_ae5abd81","line":730,"in_reply_to":"3a50d1a3_1b089e27","updated":"2015-10-14 18:10:57.000000000","message":"Is someone working on this?  We see this nearly 2000 times in 7 days in the CI system:\n\nhttp://goo.gl/YlrYFj\n\nThis change has been up since May, it shouldn\u0027t take 6+ months to fix an AttributeError on NoneType bug when it\u0027s hitting the gate jobs this much - it makes debugging real failures much harder because you can\u0027t tell what\u0027s an actual problem from the false failures.","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"775f1d330aa0b4c02b19b20653c6ea44414957cb","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                        \u0027segmentation_id\u0027: segmentation_id}"},{"line_number":735,"context_line":"        port_other_config.update(vlan_mapping)"},{"line_number":736,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name, \"other_config\","},{"line_number":737,"context_line":"                                     port_other_config)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    def _bind_devices(self, need_binding_ports):"},{"line_number":740,"context_line":"        port_info \u003d self.int_br.db_list("}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_3b0b1a26","line":737,"updated":"2015-08-01 22:55:33.000000000","message":"+1 to Rossella\u0027s suggestion. most of this code path doesn\u0027t make sense in the context of the port being deleted","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"701ae69c7ff42597d09d6369c6f96438447abab0","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                        \u0027segmentation_id\u0027: segmentation_id}"},{"line_number":735,"context_line":"        port_other_config.update(vlan_mapping)"},{"line_number":736,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name, \"other_config\","},{"line_number":737,"context_line":"                                     port_other_config)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    def _bind_devices(self, need_binding_ports):"},{"line_number":740,"context_line":"        port_info \u003d self.int_br.db_list("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_51062921","line":737,"updated":"2015-07-07 10:12:35.000000000","message":"i think the error in question is likely due to the port being removed already.\ni don\u0027t think this set_db_attribute is appropriate in that case.","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"ea1f2adb860f7298840ee223dfdf98f4550be6f7","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                        \u0027segmentation_id\u0027: segmentation_id}"},{"line_number":735,"context_line":"        port_other_config.update(vlan_mapping)"},{"line_number":736,"context_line":"        self.int_br.set_db_attribute(\"Port\", port.port_name, \"other_config\","},{"line_number":737,"context_line":"                                     port_other_config)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    def _bind_devices(self, need_binding_ports):"},{"line_number":740,"context_line":"        port_info \u003d self.int_br.db_list("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_b14af5c3","line":737,"in_reply_to":"ba3cc151_51062921","updated":"2015-07-14 11:53:02.000000000","message":"I can confirm (I looked at a couple of logs from different run where this problem appear) that the None is due to the fact that the port queried was deleted. Since the check_error flag is set to False by default in db_get_val, the exception is not thrown and db_get_val returns None. A good fix would be to detect that the port was deleted and include it in the list \"skipped_devices\" of treat_devices_added_or_updated","commit_id":"efb5e929ae607ccba9902c634645ecd5e03dde91"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"5173a46fc9a962ed2e20c679a8b6140ae61fa3ab","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        self.dvr_agent.bind_port_to_dvr(port, lvm,"},{"line_number":699,"context_line":"                                        fixed_ips,"},{"line_number":700,"context_line":"                                        device_owner)"},{"line_number":701,"context_line":"        port_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,"},{"line_number":702,"context_line":"                                                   \"other_config\")"},{"line_number":703,"context_line":"        vlan_mapping \u003d {\u0027net_uuid\u0027: net_uuid,"},{"line_number":704,"context_line":"                        \u0027network_type\u0027: network_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_dead649c","line":701,"updated":"2015-06-22 19:38:56.000000000","message":"I think keeping the logic up here would be a bit simpler because you can use an \u0027or\u0027 statement.\n\nport_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,\n                                           \"other_config\") or {}","commit_id":"cd9af6d252884d7aaf2680a45d142ce220482b9e"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"34750babfde4cad023e2ac498bbb8b8fc159861d","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        self.dvr_agent.bind_port_to_dvr(port, lvm,"},{"line_number":699,"context_line":"                                        fixed_ips,"},{"line_number":700,"context_line":"                                        device_owner)"},{"line_number":701,"context_line":"        port_other_config \u003d self.int_br.db_get_val(\"Port\", port.port_name,"},{"line_number":702,"context_line":"                                                   \"other_config\")"},{"line_number":703,"context_line":"        vlan_mapping \u003d {\u0027net_uuid\u0027: net_uuid,"},{"line_number":704,"context_line":"                        \u0027network_type\u0027: network_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_aa85a559","line":701,"in_reply_to":"fa32b979_dead649c","updated":"2015-06-23 07:59:47.000000000","message":"Good point, thanks","commit_id":"cd9af6d252884d7aaf2680a45d142ce220482b9e"}],"neutron/tests/unit/plugins/openvswitch/agent/test_ovs_neutron_agent.py":[{"author":{"_account_id":9820,"name":"Liping Mao","email":"limao@cisco.com","username":"LipingMao"},"change_message_id":"2f3563df0738f00270f92cb90c94de82090f0af6","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self._mock_port_bound(ofport\u003d-1)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def test_port_bound_update_old_local_vlan_map(self):"},{"line_number":207,"context_line":"        old_local_vlan \u003d {\u0027foo\u0027: \u0027foo\u0027,"},{"line_number":208,"context_line":"                          \u0027bar\u0027: \u0027bar\u0027}"},{"line_number":209,"context_line":"        self._mock_port_bound(old_local_vlan\u003dold_local_vlan)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_a9829c50","line":207,"updated":"2015-05-15 10:55:23.000000000","message":"What about modify \"old_local_vlan\" to\" old_local_vlan_map\"? This is not a vlan.","commit_id":"fc2445b86170bb93d2a79a0a34726da35836b7e1"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"197e4226c94dd1b88ab1aae9bb7133d57addb88c","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self._mock_port_bound(ofport\u003d-1)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def test_port_bound_update_old_local_vlan_map(self):"},{"line_number":207,"context_line":"        old_local_vlan \u003d {\u0027foo\u0027: \u0027foo\u0027,"},{"line_number":208,"context_line":"                          \u0027bar\u0027: \u0027bar\u0027}"},{"line_number":209,"context_line":"        self._mock_port_bound(old_local_vlan\u003dold_local_vlan)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_a9129cb2","line":207,"in_reply_to":"7a016987_a9829c50","updated":"2015-05-15 11:11:06.000000000","message":"Good suggestion, thanks","commit_id":"fc2445b86170bb93d2a79a0a34726da35836b7e1"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"e0929592ff1b5e542b68af69958a8355463319ef","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":137,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _mock_port_bound(self, ofport\u003dNone, old_local_vlan_map\u003dNone):"},{"line_number":140,"context_line":"        port \u003d mock.Mock()"},{"line_number":141,"context_line":"        port.ofport \u003d ofport"},{"line_number":142,"context_line":"        net_uuid \u003d \u0027my-net-uuid\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_658b80c4","line":139,"updated":"2015-06-08 17:34:58.000000000","message":"good call to remove new_local_vlan . Anyway I don\u0027t think you need lines 149-153, you can just use vlan_mapping instead of introducing a new variable new_local_vlan_map . In this way you can minimize the changes required to this test.","commit_id":"88fca0edb6a1e99a455b2cf703cabe982df4cb2f"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"0b5f8c2b8f2602afed04fea16ba6e41f7970be37","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            self.agent.tun_br \u003d self.br_tun_cls(br_name\u003d\u0027br-tun\u0027)"},{"line_number":137,"context_line":"        self.agent.sg_agent \u003d mock.Mock()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _mock_port_bound(self, ofport\u003dNone, old_local_vlan_map\u003dNone):"},{"line_number":140,"context_line":"        port \u003d mock.Mock()"},{"line_number":141,"context_line":"        port.ofport \u003d ofport"},{"line_number":142,"context_line":"        net_uuid \u003d \u0027my-net-uuid\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_e9b4c335","line":139,"in_reply_to":"3afb71cf_658b80c4","updated":"2015-06-09 13:13:04.000000000","message":"Done","commit_id":"88fca0edb6a1e99a455b2cf703cabe982df4cb2f"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"e0929592ff1b5e542b68af69958a8355463319ef","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        self._mock_port_bound(ofport\u003d-1)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_port_bound_update_old_local_vlan_map(self):"},{"line_number":195,"context_line":"        old_local_vlan_map \u003d {\u0027foo\u0027: \u0027foo\u0027,"},{"line_number":196,"context_line":"                              \u0027bar\u0027: \u0027bar\u0027}"},{"line_number":197,"context_line":"        self._mock_port_bound(old_local_vlan_map\u003dold_local_vlan_map)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_c564744a","line":195,"updated":"2015-06-08 17:34:58.000000000","message":"why don\u0027t you use something more real here like what\u0027s in line 145-148?","commit_id":"88fca0edb6a1e99a455b2cf703cabe982df4cb2f"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"0b5f8c2b8f2602afed04fea16ba6e41f7970be37","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        self._mock_port_bound(ofport\u003d-1)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_port_bound_update_old_local_vlan_map(self):"},{"line_number":195,"context_line":"        old_local_vlan_map \u003d {\u0027foo\u0027: \u0027foo\u0027,"},{"line_number":196,"context_line":"                              \u0027bar\u0027: \u0027bar\u0027}"},{"line_number":197,"context_line":"        self._mock_port_bound(old_local_vlan_map\u003dold_local_vlan_map)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_a9892b77","line":195,"in_reply_to":"3afb71cf_c564744a","updated":"2015-06-09 13:13:04.000000000","message":"Done","commit_id":"88fca0edb6a1e99a455b2cf703cabe982df4cb2f"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"9dcbe95cf0b8bce8ed591ac5de652a30fdd2854c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                        \u0027network_type\u0027: \u0027local\u0027,"},{"line_number":147,"context_line":"                        \u0027physical_network\u0027: None,"},{"line_number":148,"context_line":"                        \u0027segmentation_id\u0027: None}"},{"line_number":149,"context_line":"        if old_local_vlan_map is not None:"},{"line_number":150,"context_line":"            self.agent.local_vlan_map[net_uuid] \u003d ("},{"line_number":151,"context_line":"                self.mod_agent.LocalVLANMapping("},{"line_number":152,"context_line":"                    old_local_vlan_map, None, None, None))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_fbefe1e6","line":149,"updated":"2015-06-09 14:54:53.000000000","message":"nit: I can\u0027t see any good reason to move these lines down. If you have to respin this patch I\u0027d avoid that, it minimizes the diff and makes this file easier to review.","commit_id":"3e1ff5ffc174d762b6ab5a1703b9cbe247aa86e9"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"c1f5a7177a5a3fa2206b70d41c620af25e1c66cc","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                        \u0027network_type\u0027: \u0027local\u0027,"},{"line_number":147,"context_line":"                        \u0027physical_network\u0027: None,"},{"line_number":148,"context_line":"                        \u0027segmentation_id\u0027: None}"},{"line_number":149,"context_line":"        if old_local_vlan_map is not None:"},{"line_number":150,"context_line":"            self.agent.local_vlan_map[net_uuid] \u003d ("},{"line_number":151,"context_line":"                self.mod_agent.LocalVLANMapping("},{"line_number":152,"context_line":"                    old_local_vlan_map, None, None, None))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_56fd7cb2","line":149,"in_reply_to":"3afb71cf_fbefe1e6","updated":"2015-06-10 11:58:55.000000000","message":"Done","commit_id":"3e1ff5ffc174d762b6ab5a1703b9cbe247aa86e9"}]}
