)]}'
{"quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c44a51c8ced9e29de2de273bb016519ddcbe354a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        for row in rows:"},{"line_number":81,"context_line":"            values \u003d row.split(\u0027\\t\u0027)"},{"line_number":82,"context_line":"            for value in values:"},{"line_number":83,"context_line":"                if value \u003d\u003d interface:"},{"line_number":84,"context_line":"                    return True"},{"line_number":85,"context_line":"        return False"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2Fq4%3D","line":83,"updated":"2012-07-02 12:22:56.000000000","message":"What if we have a bridge name the same as the interface name?","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"        for row in rows:"},{"line_number":81,"context_line":"            values \u003d row.split(\u0027\\t\u0027)"},{"line_number":82,"context_line":"            for value in values:"},{"line_number":83,"context_line":"                if value \u003d\u003d interface:"},{"line_number":84,"context_line":"                    return True"},{"line_number":85,"context_line":"        return False"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2FpY%3D","line":83,"in_reply_to":"AAAAJ3%2F%2F%2Fq4%3D","updated":"2012-07-02 13:19:46.000000000","message":"I am not sure how this can happen. Can you please let me know of a use case for this.","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c44a51c8ced9e29de2de273bb016519ddcbe354a","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        Check if the interface is part of the bridge"},{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        if not self.interface_exists_on_bridge(bridge_name, interface):"},{"line_number":223,"context_line":"            utils.execute([\u0027brctl\u0027, \u0027addif\u0027, bridge_name, interface],"},{"line_number":224,"context_line":"                          root_helper\u003dself.root_helper)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2Fq8%3D","line":221,"updated":"2012-07-02 12:22:56.000000000","message":"Why not use # as comments?","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        Check if the interface is part of the bridge"},{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        if not self.interface_exists_on_bridge(bridge_name, interface):"},{"line_number":223,"context_line":"            utils.execute([\u0027brctl\u0027, \u0027addif\u0027, bridge_name, interface],"},{"line_number":224,"context_line":"                          root_helper\u003dself.root_helper)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2FpU%3D","line":221,"in_reply_to":"AAAAJ3%2F%2F%2Fq8%3D","updated":"2012-07-02 13:19:46.000000000","message":"Done","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c44a51c8ced9e29de2de273bb016519ddcbe354a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        if not self.interface_exists_on_bridge(bridge_name, interface):"},{"line_number":223,"context_line":"            utils.execute([\u0027brctl\u0027, \u0027addif\u0027, bridge_name, interface],"},{"line_number":224,"context_line":"                          root_helper\u003dself.root_helper)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def add_tap_interface(self, network_id, vlan_id, tap_device_name):"},{"line_number":227,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2Fq0%3D","line":224,"updated":"2012-07-02 12:22:56.000000000","message":"What is the short point if we use check_return \u003d false to do this?","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        if not self.interface_exists_on_bridge(bridge_name, interface):"},{"line_number":223,"context_line":"            utils.execute([\u0027brctl\u0027, \u0027addif\u0027, bridge_name, interface],"},{"line_number":224,"context_line":"                          root_helper\u003dself.root_helper)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def add_tap_interface(self, network_id, vlan_id, tap_device_name):"},{"line_number":227,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAJ3%2F%2F%2FpQ%3D","line":224,"in_reply_to":"AAAAJ3%2F%2F%2Fq0%3D","updated":"2012-07-02 13:19:46.000000000","message":"This is what I originally did. I was requested not to ignore the return code. Hence the fix.","commit_id":"40acabc5264393392926248ab45945205e7403c5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"        for row in rows:"},{"line_number":81,"context_line":"            values \u003d row.split(\u0027\\t\u0027)"},{"line_number":82,"context_line":"            for value in values:"},{"line_number":83,"context_line":"                if value \u003d\u003d interface:"},{"line_number":84,"context_line":"                    return True"},{"line_number":85,"context_line":"        return False"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAJ3%2F%2F%2FoY%3D","line":83,"updated":"2012-07-02 13:29:43.000000000","message":"Since quantum controls both bridge and interface creation, I do not think there is a chance the bridge might have the same name as an interface.\n\nShould we feel the need to improve this check, I\u0027d suggest either to skip the first element which should be the bridge name, or list files in /sys/class/net/\u003cbridge-name\u003e/brif","commit_id":"c9a9055614e6b1a475df97f006e3c84233bd52b0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":80,"context_line":"        for row in rows:"},{"line_number":81,"context_line":"            values \u003d row.split(\u0027\\t\u0027)"},{"line_number":82,"context_line":"            for value in values:"},{"line_number":83,"context_line":"                if value \u003d\u003d interface:"},{"line_number":84,"context_line":"                    return True"},{"line_number":85,"context_line":"        return False"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAJ3%2F%2F%2Fn0%3D","line":83,"in_reply_to":"AAAAJ3%2F%2F%2FoI%3D","updated":"2012-07-02 13:36:58.000000000","message":"Give me a few minutes, I\u0027ll add the check.","commit_id":"c9a9055614e6b1a475df97f006e3c84233bd52b0"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"c44a51c8ced9e29de2de273bb016519ddcbe354a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        for row in rows:"},{"line_number":81,"context_line":"            values \u003d row.split(\u0027\\t\u0027)"},{"line_number":82,"context_line":"            for value in values:"},{"line_number":83,"context_line":"                if value \u003d\u003d interface:"},{"line_number":84,"context_line":"                    return True"},{"line_number":85,"context_line":"        return False"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAJ3%2F%2F%2FoI%3D","line":83,"in_reply_to":"AAAAJ3%2F%2F%2FoY%3D","updated":"2012-07-02 13:34:28.000000000","message":"It will be better.","commit_id":"c9a9055614e6b1a475df97f006e3c84233bd52b0"}]}
