)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e56fa72bc016a266f40d6afe4407752ddc5a4dd7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Neil Jerram \u003cNeil.Jerram@metaswitch.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-13 16:32:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add new VIF type VIF_TYPE_TAP"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds a new VIF type, VIF_TYPE_TAP, whose meaning is that"},{"line_number":10,"context_line":"the host side of a VNIC to a VM is - at least initially - a simple TAP"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_26a8b1d8","line":7,"updated":"2015-01-14 13:12:30.000000000","message":"Can you please consider splitting this into 2 patches.\n\n1. The new VIF Type\n2. the libvirt support","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"9f2fe64665ba4530bde3939eb271ff96964ffbea","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Neil Jerram \u003cNeil.Jerram@metaswitch.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-13 16:32:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add new VIF type VIF_TYPE_TAP"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds a new VIF type, VIF_TYPE_TAP, whose meaning is that"},{"line_number":10,"context_line":"the host side of a VNIC to a VM is - at least initially - a simple TAP"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_46913df0","line":7,"in_reply_to":"3a961159_26a8b1d8","updated":"2015-01-14 13:38:15.000000000","message":"Please can you explain why that would be useful?\n\n(I genuinely don\u0027t understand...)","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e56fa72bc016a266f40d6afe4407752ddc5a4dd7","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":534,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def plug_tap(self, instance, vif):"},{"line_number":537,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface"},{"line_number":538,"context_line":"        \"\"\""},{"line_number":539,"context_line":"        dev \u003d self.get_vif_devname(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_66b2b94a","line":536,"updated":"2015-01-14 13:12:30.000000000","message":"where is this tested?","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"9f2fe64665ba4530bde3939eb271ff96964ffbea","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":534,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    def plug_tap(self, instance, vif):"},{"line_number":537,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface"},{"line_number":538,"context_line":"        \"\"\""},{"line_number":539,"context_line":"        dev \u003d self.get_vif_devname(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_66ff1903","line":536,"in_reply_to":"3a961159_66b2b94a","updated":"2015-01-14 13:38:15.000000000","message":"Sorry, my mistake.  I thought that my new test routine was covering config, plug and unplug, but clearly it actually isn\u0027t touching plug and unplug.  I\u0027ll address this in the next revision.","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e56fa72bc016a266f40d6afe4407752ddc5a4dd7","unresolved":false,"context_lines":[{"line_number":672,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":673,"context_line":"                          instance\u003dinstance)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def unplug_tap(self, instance, vif):"},{"line_number":676,"context_line":"        \"\"\"Unplug a VIF_TYPE_TAP virtual interface."},{"line_number":677,"context_line":"        \"\"\""},{"line_number":678,"context_line":"        dev \u003d self.get_vif_devname(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_c67a8d76","line":675,"updated":"2015-01-14 13:12:30.000000000","message":"where is this tested","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"9f2fe64665ba4530bde3939eb271ff96964ffbea","unresolved":false,"context_lines":[{"line_number":672,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":673,"context_line":"                          instance\u003dinstance)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def unplug_tap(self, instance, vif):"},{"line_number":676,"context_line":"        \"\"\"Unplug a VIF_TYPE_TAP virtual interface."},{"line_number":677,"context_line":"        \"\"\""},{"line_number":678,"context_line":"        dev \u003d self.get_vif_devname(vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_1c122558","line":675,"in_reply_to":"3a961159_c67a8d76","updated":"2015-01-14 13:38:15.000000000","message":"Same again - thanks.","commit_id":"9e65f8d058a2d23e7636fe13f295b8ce41161bf9"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"2de5749267909f39f653a4a05a78c2845b1f141c","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def plug_tap(self, instance, vif):"},{"line_number":524,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface"},{"line_number":525,"context_line":"        \"\"\""},{"line_number":526,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":527,"context_line":"        linux_net.create_tap_dev(dev)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_090ad526","line":524,"updated":"2015-04-20 15:53:30.000000000","message":"Better to have these docstrings a s a single line.","commit_id":"8eebc9463061f7a87ef25d04af7da63dcb582e56"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"ccca8ef0428b9109d67bdb372d31cd7fc15c519f","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"    def plug_tap(self, instance, vif):"},{"line_number":524,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface"},{"line_number":525,"context_line":"        \"\"\""},{"line_number":526,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":527,"context_line":"        linux_net.create_tap_dev(dev)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_58941636","line":524,"in_reply_to":"dac4157f_090ad526","updated":"2015-04-30 12:45:04.000000000","message":"Done","commit_id":"8eebc9463061f7a87ef25d04af7da63dcb582e56"},{"author":{"_account_id":1923,"name":"Mohammad Banikazemi","email":"mbanikazemi@gmail.com","username":"mb-s"},"change_message_id":"2de5749267909f39f653a4a05a78c2845b1f141c","unresolved":false,"context_lines":[{"line_number":660,"context_line":"                          instance\u003dinstance)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def unplug_tap(self, instance, vif):"},{"line_number":663,"context_line":"        \"\"\"Unplug a VIF_TYPE_TAP virtual interface."},{"line_number":664,"context_line":"        \"\"\""},{"line_number":665,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":666,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_84524c12","line":663,"updated":"2015-04-20 15:53:30.000000000","message":"same as above.","commit_id":"8eebc9463061f7a87ef25d04af7da63dcb582e56"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"ccca8ef0428b9109d67bdb372d31cd7fc15c519f","unresolved":false,"context_lines":[{"line_number":660,"context_line":"                          instance\u003dinstance)"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def unplug_tap(self, instance, vif):"},{"line_number":663,"context_line":"        \"\"\"Unplug a VIF_TYPE_TAP virtual interface."},{"line_number":664,"context_line":"        \"\"\""},{"line_number":665,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":666,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3acd31a7_38995a6f","line":663,"in_reply_to":"dac4157f_84524c12","updated":"2015-04-30 12:45:04.000000000","message":"Done","commit_id":"8eebc9463061f7a87ef25d04af7da63dcb582e56"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"b4d2147cf9e6b40472acbe8bfc11b2cb6dc59095","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface.\"\"\""},{"line_number":550,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":551,"context_line":"        mac \u003d vif[\u0027details\u0027].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)"},{"line_number":552,"context_line":"        linux_net.create_tap_dev(dev, mac)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":555,"context_line":"        ovs_plug \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_9fb86be7","line":552,"updated":"2015-06-02 16:16:12.000000000","message":"The mtu on the tap device is not set by linux_net.create_tap_dev, unlikely linux_net.create_ovs_vif_port. Thus we cannot support jumbo frame with VIF_TYPE_TAP.\n\nI think we need to  call _set_device_mtu()  in create_tap_dev().\n\nWhat do you think ?","commit_id":"9b39b2aa3ef31614f40e545cf7c519a700a1a3d2"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"38469fd2f8fceee62f485da8a22be2e7a72fb6a0","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        \"\"\"Plug a VIF_TYPE_TAP virtual interface.\"\"\""},{"line_number":550,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":551,"context_line":"        mac \u003d vif[\u0027details\u0027].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)"},{"line_number":552,"context_line":"        linux_net.create_tap_dev(dev, mac)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":555,"context_line":"        ovs_plug \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_29dbf7ed","line":552,"in_reply_to":"5afe65bd_9fb86be7","updated":"2015-06-04 15:00:40.000000000","message":"Thanks, Maxime, excellent point.  My team here thinks it could be a significant performance benefit for us to use increased MTU on our TAP interfaces, so I will prepare a revision of this change that makes VIF_TYPE_TAP respect nova.conf\u0027s network_device_mtu setting.\n\nI suppose I could go further and add an unconditional _set_device_mtu() call to create_tap_dev() - but that would technically be an incompatible change for the other existing uses of create_tap_dev() - and I imagine that it could lead to practical problems (e.g. if network_device_mtu is set to a low number in nova.conf, but is currently being ignored and so doesn\u0027t matter).\n\nReviewers - please let me know your thoughts on this, after I\u0027ve posted the next revision.","commit_id":"9b39b2aa3ef31614f40e545cf7c519a700a1a3d2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4abcb32d54e8cd17e6b3f17cb3f40af5ff7eddc1","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        try:"},{"line_number":744,"context_line":"            linux_net.delete_net_dev(dev)"},{"line_number":745,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":746,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":747,"context_line":"                          instance\u003dinstance)"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"    def unplug_iovisor(self, instance, vif):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_8ce4e4ab","line":746,"updated":"2015-05-23 02:25:56.000000000","message":"consider proving the dev here - this may help and admin cleanup if necessary","commit_id":"9b39b2aa3ef31614f40e545cf7c519a700a1a3d2"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"662eb7550843ba3e812b4a0ca2226da51c959d18","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        try:"},{"line_number":744,"context_line":"            linux_net.delete_net_dev(dev)"},{"line_number":745,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":746,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":747,"context_line":"                          instance\u003dinstance)"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"    def unplug_iovisor(self, instance, vif):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_4cd1a122","line":746,"in_reply_to":"7a016987_8ce4e4ab","updated":"2015-06-04 15:13:45.000000000","message":"Thanks, garyk.  I\u0027m not sure exactly what you are suggesting here, though.  Do you mean logging dev?  Or perhaps asserting it, as in:\n   assert linux_net.device_exists(dev)\n\nNote that linux_net.delete_net_dev() already includes a device_exists() check, so it will be a no-op if the device has already been cleaned up.","commit_id":"9b39b2aa3ef31614f40e545cf7c519a700a1a3d2"}]}
