)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c0b2910b272af1c3a1d361c0bd0145db7f8af0f8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"tap devices created by Nova and then passed to libvirt must have"},{"line_number":10,"context_line":"multiqueue enabled."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: #1573067"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Michal Dubiel \u003cmd@semihalf.com\u003e"},{"line_number":15,"context_line":"Change-Id: I7b20650c8a772fdaa05707e0dfe27ad32481a2d3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba5da102_22b50b7d","line":12,"updated":"2016-11-03 17:17:25.000000000","message":"This isn\u0027t really a bug for nova, the lack of a feature isn\u0027t a bug. Is this the final change in the series? If so, you should probably have a release note indicating the feature. A release note should also explain how you enable any of this, e.g. with the hw_vif_multiqueue_enabled image metadata and flavor.vcpus.","commit_id":"ac8e4ca56023b251a2f25ccd2850289790f51ee6"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"ed1063ab169fd00140dfc5f81f7f6eb2073e49b1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"tap devices created by Nova and then passed to libvirt must have"},{"line_number":10,"context_line":"multiqueue enabled."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: #1573067"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Co-Authored-By: Michal Dubiel \u003cmd@semihalf.com\u003e"},{"line_number":15,"context_line":"Change-Id: I7b20650c8a772fdaa05707e0dfe27ad32481a2d3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba5da102_4d6e9997","line":12,"in_reply_to":"ba5da102_22b50b7d","updated":"2016-11-04 10:54:43.000000000","message":"Agreed. So this is a small extension of work originally done for https://blueprints.launchpad.net/nova/+spec/libvirt-virtio-net-multiqueue to make it possible to do the very same thing with vrouter VIFs, for which mechanism is slightly different. The user experience of using image properties is preserved.","commit_id":"ac8e4ca56023b251a2f25ccd2850289790f51ee6"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9399bde1bb219f25cabb862f8280e6ea029bf12e","unresolved":false,"context_lines":[{"line_number":936,"context_line":"        instance.uuid \u003d \u002746a4308b-e75a-4f90-a34a-650c86ca18b2\u0027"},{"line_number":937,"context_line":"        instance.project_id \u003d \u0027b168ea26fa0c49c1a84e1566d9565fa5\u0027"},{"line_number":938,"context_line":"        instance.display_name \u003d \u0027instance1\u0027"},{"line_number":939,"context_line":"        instance.image_meta \u003d {\u0027properties\u0027: {}}"},{"line_number":940,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":941,"context_line":"            d.plug(instance, self.vif_vrouter)"},{"line_number":942,"context_line":"            execute.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_364a64c6","line":939,"range":{"start_line":939,"start_character":30,"end_line":939,"end_character":48},"updated":"2016-11-23 22:27:21.000000000","message":"Ideally we\u0027d use an ImageMeta object here so we don\u0027t have to rely on the conversion in the vif code.","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"064288d4fadd13f2247bd56c17b86eaf626feaa0","unresolved":false,"context_lines":[{"line_number":936,"context_line":"        instance.uuid \u003d \u002746a4308b-e75a-4f90-a34a-650c86ca18b2\u0027"},{"line_number":937,"context_line":"        instance.project_id \u003d \u0027b168ea26fa0c49c1a84e1566d9565fa5\u0027"},{"line_number":938,"context_line":"        instance.display_name \u003d \u0027instance1\u0027"},{"line_number":939,"context_line":"        instance.image_meta \u003d {\u0027properties\u0027: {}}"},{"line_number":940,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":941,"context_line":"            d.plug(instance, self.vif_vrouter)"},{"line_number":942,"context_line":"            execute.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_eb570700","line":939,"range":{"start_line":939,"start_character":30,"end_line":939,"end_character":48},"in_reply_to":"5a74a57a_364a64c6","updated":"2016-11-24 11:13:16.000000000","message":"Done","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9399bde1bb219f25cabb862f8280e6ea029bf12e","unresolved":false,"context_lines":[{"line_number":966,"context_line":"        instance.project_id \u003d \u0027b168ea26fa0c49c1a84e1566d9565fa5\u0027"},{"line_number":967,"context_line":"        instance.display_name \u003d \u0027instance1\u0027"},{"line_number":968,"context_line":"        instance.image_meta \u003d {"},{"line_number":969,"context_line":"            \u0027properties\u0027: {\u0027hw_vif_multiqueue_enabled\u0027: True}}"},{"line_number":970,"context_line":"        instance.flavor.vcpus \u003d 2"},{"line_number":971,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":972,"context_line":"            d.plug(instance, self.vif_vrouter)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b60cb495","line":969,"updated":"2016-11-23 22:27:21.000000000","message":"ditto","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"064288d4fadd13f2247bd56c17b86eaf626feaa0","unresolved":false,"context_lines":[{"line_number":966,"context_line":"        instance.project_id \u003d \u0027b168ea26fa0c49c1a84e1566d9565fa5\u0027"},{"line_number":967,"context_line":"        instance.display_name \u003d \u0027instance1\u0027"},{"line_number":968,"context_line":"        instance.image_meta \u003d {"},{"line_number":969,"context_line":"            \u0027properties\u0027: {\u0027hw_vif_multiqueue_enabled\u0027: True}}"},{"line_number":970,"context_line":"        instance.flavor.vcpus \u003d 2"},{"line_number":971,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":972,"context_line":"            d.plug(instance, self.vif_vrouter)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_8b5e9310","line":969,"in_reply_to":"5a74a57a_b60cb495","updated":"2016-11-24 11:13:16.000000000","message":"Done","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9399bde1bb219f25cabb862f8280e6ea029bf12e","unresolved":false,"context_lines":[{"line_number":971,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":972,"context_line":"            d.plug(instance, self.vif_vrouter)"},{"line_number":973,"context_line":"            execute.assert_has_calls(["},{"line_number":974,"context_line":"                mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap-xxx-yyy-zzz\u0027, \u0027mode\u0027,"},{"line_number":975,"context_line":"                          \u0027tap\u0027, \u0027multi_queue\u0027,"},{"line_number":976,"context_line":"                          run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":977,"context_line":"                mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap-xxx-yyy-zzz\u0027, \u0027up\u0027,"},{"line_number":978,"context_line":"                    run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":979,"context_line":"                mock.call(\u0027vrouter-port-control\u0027,"},{"line_number":980,"context_line":"                    \u0027--oper\u003dadd --uuid\u003dvif-xxx-yyy-zzz \u0027"},{"line_number":981,"context_line":"                    \u0027--instance_uuid\u003d46a4308b-e75a-4f90-a34a-650c86ca18b2 \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_76605c36","line":978,"range":{"start_line":974,"start_character":16,"end_line":978,"end_character":67},"updated":"2016-11-23 22:27:21.000000000","message":"nit: We should just mock out linux_net.create_tap_dev as the patch below this one is already testing the rest of the stuff in linux_net, we don\u0027t really need to unit test that from vif.","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"064288d4fadd13f2247bd56c17b86eaf626feaa0","unresolved":false,"context_lines":[{"line_number":971,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute:"},{"line_number":972,"context_line":"            d.plug(instance, self.vif_vrouter)"},{"line_number":973,"context_line":"            execute.assert_has_calls(["},{"line_number":974,"context_line":"                mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap-xxx-yyy-zzz\u0027, \u0027mode\u0027,"},{"line_number":975,"context_line":"                          \u0027tap\u0027, \u0027multi_queue\u0027,"},{"line_number":976,"context_line":"                          run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":977,"context_line":"                mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap-xxx-yyy-zzz\u0027, \u0027up\u0027,"},{"line_number":978,"context_line":"                    run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":979,"context_line":"                mock.call(\u0027vrouter-port-control\u0027,"},{"line_number":980,"context_line":"                    \u0027--oper\u003dadd --uuid\u003dvif-xxx-yyy-zzz \u0027"},{"line_number":981,"context_line":"                    \u0027--instance_uuid\u003d46a4308b-e75a-4f90-a34a-650c86ca18b2 \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_0bd523b8","line":978,"range":{"start_line":974,"start_character":16,"end_line":978,"end_character":67},"in_reply_to":"5a74a57a_76605c36","updated":"2016-11-24 11:13:16.000000000","message":"Done","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"}],"releasenotes/notes/vif-vrouter-multiqueue-077785e1a2d242a0.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9399bde1bb219f25cabb862f8280e6ea029bf12e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - vrouter VIFs (OpenContrail) now support multiqueue mode, which"},{"line_number":4,"context_line":"    allows to scale network performance across number of vCPUs. To use this"},{"line_number":5,"context_line":"    feature one needs to create instance with more than 1 vCPU from an image"},{"line_number":6,"context_line":"    with ``hw_vif_multiqueue_enabled`` property set to ``true``."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5a74a57a_564c40c7","line":3,"updated":"2016-11-23 22:27:21.000000000","message":"We should probably mention something about this being enabled with the libvirt driver for context, it\u0027s not something you\u0027d care about if you\u0027re using xen or hyperv for example.","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"064288d4fadd13f2247bd56c17b86eaf626feaa0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - vrouter VIFs (OpenContrail) now support multiqueue mode, which"},{"line_number":4,"context_line":"    allows to scale network performance across number of vCPUs. To use this"},{"line_number":5,"context_line":"    feature one needs to create instance with more than 1 vCPU from an image"},{"line_number":6,"context_line":"    with ``hw_vif_multiqueue_enabled`` property set to ``true``."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5a74a57a_0e453116","line":3,"in_reply_to":"5a74a57a_564c40c7","updated":"2016-11-24 11:13:16.000000000","message":"Done","commit_id":"7a0bd6cfed2585eb41d09cc974714f53044e3ae8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e6654a22d88ce52766a27bf48481c2701c12992f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When using libvirt driver vrouter VIFs (OpenContrail) now support"},{"line_number":4,"context_line":"    multiqueue mode, which allows to scale network performance across number"},{"line_number":5,"context_line":"    of vCPUs. To use this feature one needs to create instance with more than"},{"line_number":6,"context_line":"    1 vCPU from an image with ``hw_vif_multiqueue_enabled`` property set to"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a74a57a_74e006fb","line":3,"updated":"2016-11-25 15:19:44.000000000","message":"A comma is missing, no ?\n\n  When using libvirt driver, vrouter VIFs (OpenContrail) now support","commit_id":"78a4e9b0ad3407d86fa5f8e9591cfdf74f9c7401"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"da5470e20e5d9d133b253ad385b6897ad2ccb6e1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When using libvirt driver vrouter VIFs (OpenContrail) now support"},{"line_number":4,"context_line":"    multiqueue mode, which allows to scale network performance across number"},{"line_number":5,"context_line":"    of vCPUs. To use this feature one needs to create instance with more than"},{"line_number":6,"context_line":"    1 vCPU from an image with ``hw_vif_multiqueue_enabled`` property set to"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a74a57a_f29893c2","line":3,"in_reply_to":"5a74a57a_74e006fb","updated":"2016-11-26 15:22:05.000000000","message":"Agree with the need for the comma.\n\nAnd s/support/supports/.","commit_id":"78a4e9b0ad3407d86fa5f8e9591cfdf74f9c7401"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"56328e6b18476df7b1ee8904c2b7cc57aa57258b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When using libvirt driver vrouter VIFs (OpenContrail) now support"},{"line_number":4,"context_line":"    multiqueue mode, which allows to scale network performance across number"},{"line_number":5,"context_line":"    of vCPUs. To use this feature one needs to create instance with more than"},{"line_number":6,"context_line":"    1 vCPU from an image with ``hw_vif_multiqueue_enabled`` property set to"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a74a57a_86670fb6","line":3,"in_reply_to":"5a74a57a_f29893c2","updated":"2016-11-28 08:27:36.000000000","message":"Oops, thanks, guys!","commit_id":"78a4e9b0ad3407d86fa5f8e9591cfdf74f9c7401"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b41c7fd4d3a56ffe6ede6451d33f52ab8b538d61","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - When using libvirt driver vrouter VIFs (OpenContrail) now support"},{"line_number":4,"context_line":"    multiqueue mode, which allows to scale network performance across number"},{"line_number":5,"context_line":"    of vCPUs. To use this feature one needs to create instance with more than"},{"line_number":6,"context_line":"    1 vCPU from an image with ``hw_vif_multiqueue_enabled`` property set to"},{"line_number":7,"context_line":"    ``true``."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5a74a57a_52e30733","line":6,"range":{"start_line":6,"start_character":32,"end_line":6,"end_character":57},"updated":"2016-11-26 15:30:04.000000000","message":"For completeness I checked to see that this image property was documented and to our luck it already is:\n\nhttp://docs.openstack.org/cli-reference/glance-property-keys.html","commit_id":"78a4e9b0ad3407d86fa5f8e9591cfdf74f9c7401"}]}
