)]}'
{"dragonflow/tests/common/app_testing_objects.py":[{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"c1f624879b7f2d91b7d347aea32713ccb596072c","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def delete_tap_device(dev):"},{"line_number":65,"context_line":"    \"\"\"Delete a tapp with name dev on the  operating system."},{"line_number":66,"context_line":"    :param dev:         The name of the tap device to delete"},{"line_number":67,"context_line":"    :type dev:          String"},{"line_number":68,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_c9eb9311","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":20},"updated":"2016-11-20 06:27:39.000000000","message":"typo?","commit_id":"3d4b2764445de877c0e6d648bedb3f191534205c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"cff8964b6a0a0f0894e1c7586a239c7553280a66","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def delete_tap_device(dev):"},{"line_number":65,"context_line":"    \"\"\"Delete a tapp with name dev on the  operating system."},{"line_number":66,"context_line":"    :param dev:         The name of the tap device to delete"},{"line_number":67,"context_line":"    :type dev:          String"},{"line_number":68,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_3499bec4","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":20},"in_reply_to":"7a77a97e_c9eb9311","updated":"2016-11-20 07:56:18.000000000","message":"Fixed","commit_id":"3d4b2764445de877c0e6d648bedb3f191534205c"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"c1f624879b7f2d91b7d347aea32713ccb596072c","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def _create_tap_device(self):"},{"line_number":274,"context_line":"        flags \u003d pytun.IFF_TAP | pytun.IFF_NO_PI"},{"line_number":275,"context_line":"        name \u003d self._get_tap_interface_name()"},{"line_number":276,"context_line":"        create_tap_dev(name, self.lport.get_mac())"},{"line_number":277,"context_line":"        tap \u003d pytun.TunTapDevice(flags\u003dflags, name\u003dname)"},{"line_number":278,"context_line":"        self._connect_tap_device_to_vswitch(self.integration_bridge, tap.name)"},{"line_number":279,"context_line":"        tap.up()"},{"line_number":280,"context_line":"        return tap"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_a96657b8","line":277,"range":{"start_line":276,"start_character":8,"end_line":277,"end_character":56},"updated":"2016-11-20 06:27:39.000000000","message":"I doubt the tap leak is because we create the tap device twice. If we remove 276, tap.close can remove the device and we don\u0027t need delete_tap_device.","commit_id":"3d4b2764445de877c0e6d648bedb3f191534205c"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"cff8964b6a0a0f0894e1c7586a239c7553280a66","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def _create_tap_device(self):"},{"line_number":274,"context_line":"        flags \u003d pytun.IFF_TAP | pytun.IFF_NO_PI"},{"line_number":275,"context_line":"        name \u003d self._get_tap_interface_name()"},{"line_number":276,"context_line":"        create_tap_dev(name, self.lport.get_mac())"},{"line_number":277,"context_line":"        tap \u003d pytun.TunTapDevice(flags\u003dflags, name\u003dname)"},{"line_number":278,"context_line":"        self._connect_tap_device_to_vswitch(self.integration_bridge, tap.name)"},{"line_number":279,"context_line":"        tap.up()"},{"line_number":280,"context_line":"        return tap"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_94d532e6","line":277,"range":{"start_line":276,"start_character":8,"end_line":277,"end_character":56},"in_reply_to":"7a77a97e_a96657b8","updated":"2016-11-20 07:56:18.000000000","message":"The device is created only once, in create_tap_dev(), and pytun code only opens the already created device. \n\nWe cannot create tap device using pytun because it requires permissions:\n\n pytun.Error: [Errno 1] Operation not permitted\n\nFor the same reason we have to remove the device ourselves.","commit_id":"3d4b2764445de877c0e6d648bedb3f191534205c"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"25f63cd46ad55f772c8d8ad3677646eac0bbd9fc","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        utils.execute([\u0027ip\u0027, \u0027tuntap\u0027, \u0027del\u0027, \u0027dev\u0027, dev, \u0027mode\u0027, \u0027tap\u0027],"},{"line_number":71,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":72,"context_line":"    except Exception:"},{"line_number":73,"context_line":"        LOG.exception(\u0027Error while deleting tap device\u0027)"},{"line_number":74,"context_line":"        utils.execute([\u0027tunctl\u0027, \u0027-d\u0027, dev], run_as_root\u003dTrue)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_c70a97d1","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":56},"updated":"2016-11-20 13:47:57.000000000","message":"nit:What about add the info of device name which make the log more readable.","commit_id":"bd5556becb528eb79b46273f1d206d6ea9086ef8"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"6a659d3356fe6553e34b557f04eb148cee00f49b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        utils.execute([\u0027ip\u0027, \u0027tuntap\u0027, \u0027del\u0027, \u0027dev\u0027, dev, \u0027mode\u0027, \u0027tap\u0027],"},{"line_number":71,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":72,"context_line":"    except Exception:"},{"line_number":73,"context_line":"        LOG.exception(\u0027Error while deleting tap device\u0027)"},{"line_number":74,"context_line":"        utils.execute([\u0027tunctl\u0027, \u0027-d\u0027, dev], run_as_root\u003dTrue)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_b05ea877","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":56},"in_reply_to":"7a77a97e_c70a97d1","updated":"2016-11-21 09:32:36.000000000","message":"Will add :)","commit_id":"bd5556becb528eb79b46273f1d206d6ea9086ef8"}]}
