)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"337baa105f45a28f79d84d0834393b95e68c792a","unresolved":false,"context_lines":[{"line_number":21,"context_line":" * The VIFGeneric os-vif type is used for the kernel TAP based"},{"line_number":22,"context_line":"   plugging."},{"line_number":23,"context_line":" * In order to pass the multiqueue hint to the os-vif plugin, os-vif"},{"line_number":24,"context_line":"   needs to be extended with https://review.openstack.org/#/c/570959"},{"line_number":25,"context_line":" * It\u0027s possible to pass this hint via the VIF object, but it\u0027s a"},{"line_number":26,"context_line":"   lot less invasive to pass it via the instance information."},{"line_number":27,"context_line":" * The review for the OpenContrail/Tungsten Fabric side of this work is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_be9f4f00","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":68},"updated":"2018-05-31 09:35:33.000000000","message":"We have a special tag that check dependency.\n\n\nDepends-On: Ifbc44337c09e0f2ccf421798803ff7e794ed0b70","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"63fb309af205555b4e241c25d49d4aa355e600b7","unresolved":false,"context_lines":[{"line_number":21,"context_line":" * The VIFGeneric os-vif type is used for the kernel TAP based"},{"line_number":22,"context_line":"   plugging."},{"line_number":23,"context_line":" * In order to pass the multiqueue hint to the os-vif plugin, os-vif"},{"line_number":24,"context_line":"   needs to be extended with https://review.openstack.org/#/c/570959"},{"line_number":25,"context_line":" * It\u0027s possible to pass this hint via the VIF object, but it\u0027s a"},{"line_number":26,"context_line":"   lot less invasive to pass it via the instance information."},{"line_number":27,"context_line":" * The review for the OpenContrail/Tungsten Fabric side of this work is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_af571701","line":24,"range":{"start_line":24,"start_character":29,"end_line":24,"end_character":68},"in_reply_to":"5f7c97a3_be9f4f00","updated":"2018-05-31 09:52:13.000000000","message":"I can add that, I had a \"soft\" dependency for the initial draft.\n\nLast time I worked with os-vif, the tox tests didn\u0027t pull in the new version in the CI because it\u0027s a client library, but since these changes are related it\u0027s nice to make it explicit. Will do.","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"04b14305504724304f9abeac803042645b856440","unresolved":false,"context_lines":[{"line_number":20,"context_line":"   plugin wish to unify VIF types."},{"line_number":21,"context_line":" * The VIFGeneric os-vif type is used for the kernel TAP based"},{"line_number":22,"context_line":"   plugging."},{"line_number":23,"context_line":" * For multiqueue support, the minimum version of libvirt 1.3.3 is"},{"line_number":24,"context_line":"   required. In that case, libvirt creates the TAP device, rather than"},{"line_number":25,"context_line":"   the os-vif plugin."},{"line_number":26,"context_line":" * The review for the OpenContrail/Tungsten Fabric side of this work is"},{"line_number":27,"context_line":"   at https://review.opencontrail.org/#/c/43399"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f7c97a3_54a10546","line":25,"range":{"start_line":23,"start_character":3,"end_line":25,"end_character":21},"updated":"2018-06-04 10:09:51.000000000","message":"I\u0027m not really sure of that. My reading is, for virtio with qemu or vhost it\u0027s 1.0.6 and virtio with vhostuser 1.2.17\n\nWhere did you get the version?\n\nSo it means that since minimum of libvirt version supported by Nova is 1.3.1. We are OK for the vrouter kernel datapath plugin right?\n\n\nhttps://libvirt.org/formatdomain.html#elementsDriverBackendOptions","commit_id":"b7e518f0dbb325e0a288b912e18d4adc8a4bcac6"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"e2c540c6d612c4eae2602c3bdab414db02f34ba2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"   plugin wish to unify VIF types."},{"line_number":21,"context_line":" * The VIFGeneric os-vif type is used for the kernel TAP based"},{"line_number":22,"context_line":"   plugging."},{"line_number":23,"context_line":" * For multiqueue support, the minimum version of libvirt 1.3.3 is"},{"line_number":24,"context_line":"   required. In that case, libvirt creates the TAP device, rather than"},{"line_number":25,"context_line":"   the os-vif plugin."},{"line_number":26,"context_line":" * The review for the OpenContrail/Tungsten Fabric side of this work is"},{"line_number":27,"context_line":"   at https://review.opencontrail.org/#/c/43399"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f7c97a3_f724d310","line":25,"range":{"start_line":23,"start_character":3,"end_line":25,"end_character":21},"in_reply_to":"5f7c97a3_54a10546","updated":"2018-06-04 11:40:59.000000000","message":"Ack, I think 1.3.1 has the backports in for 1.3.3, so will change this. I was looking at this bugreport:\n\nhttps://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1574957","commit_id":"b7e518f0dbb325e0a288b912e18d4adc8a4bcac6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"542d2ddbfe00476e57c7ce64a348c1c50cfca99a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"   plugin wish to unify VIF types."},{"line_number":21,"context_line":" * The VIFGeneric os-vif type is used for the kernel TAP based"},{"line_number":22,"context_line":"   plugging."},{"line_number":23,"context_line":" * For multiqueue support, the minimum version of libvirt 1.3.3 is"},{"line_number":24,"context_line":"   required. In that case, libvirt creates the TAP device, rather than"},{"line_number":25,"context_line":"   the os-vif plugin."},{"line_number":26,"context_line":" * The review for the OpenContrail/Tungsten Fabric side of this work is"},{"line_number":27,"context_line":"   at https://review.opencontrail.org/#/c/43399"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f7c97a3_b456592a","line":25,"range":{"start_line":23,"start_character":3,"end_line":25,"end_character":21},"in_reply_to":"5f7c97a3_54a10546","updated":"2018-06-04 10:14:28.000000000","message":"Hum... actually we are also OK for vhostuser interface.","commit_id":"b7e518f0dbb325e0a288b912e18d4adc8a4bcac6"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ba99cf267267eb40b6a7ce411d5b1fdc64fb1b49","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":399,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":400,"context_line":"        return obj"},{"line_number":401,"context_line":"    elif vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG, False):"},{"line_number":402,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":403,"context_line":"                                plugin\u003d\"contrail_vrouter\","},{"line_number":404,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":405,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":406,"context_line":"        return obj"},{"line_number":407,"context_line":"    else:"},{"line_number":408,"context_line":"        raise NotImplementedError()"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9a3856d3","line":406,"range":{"start_line":401,"start_character":0,"end_line":406,"end_character":18},"updated":"2018-05-31 15:29:01.000000000","message":"This should be removed I guess. Or do we have any ask to keep that one as a fallback whether the vrouter plugin is not installed on host? ...My thinking is that we should remove it.","commit_id":"5af60cab9a2eba211d7df2bc5e73735b36f45735"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"736a5e0da110b761be6b20b9d199af5bb9ab9e80","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":399,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":400,"context_line":"        return obj"},{"line_number":401,"context_line":"    elif vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG, False):"},{"line_number":402,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":403,"context_line":"                                plugin\u003d\"contrail_vrouter\","},{"line_number":404,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":405,"context_line":"        _set_vhostuser_settings(vif, obj)"},{"line_number":406,"context_line":"        return obj"},{"line_number":407,"context_line":"    else:"},{"line_number":408,"context_line":"        raise NotImplementedError()"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_da356e46","line":406,"range":{"start_line":401,"start_character":0,"end_line":406,"end_character":18},"in_reply_to":"5f7c97a3_9a3856d3","updated":"2018-05-31 16:19:10.000000000","message":"My instinct is to keep it for at least one cycle. This codepath is triggered by a different Neutron VIF, so an upgrade might cause issues.  If instances ask for plugging with their old vhostuser VIF and this code is removed, things will go fun. I\u0027ll discuss it with the Tungsten Fabric people too.\n\nIt\u0027s possible to change the os-vif plugin name to \u0027vrouter\u0027 with no repercussions though. See next comment.","commit_id":"5af60cab9a2eba211d7df2bc5e73735b36f45735"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ba99cf267267eb40b6a7ce411d5b1fdc64fb1b49","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            obj \u003d _get_vif_instance("},{"line_number":441,"context_line":"                vif,"},{"line_number":442,"context_line":"                objects.vif.VIFVHostUser,"},{"line_number":443,"context_line":"                plugin\u003d\"vrouter\","},{"line_number":444,"context_line":"                vif_name\u003d_get_vif_name(vif)"},{"line_number":445,"context_line":"            )"},{"line_number":446,"context_line":"            _set_vhostuser_settings(vif, obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_7a6bfab5","line":443,"range":{"start_line":443,"start_character":24,"end_line":443,"end_character":31},"updated":"2018-05-31 15:29:01.000000000","message":"Isn\u0027t that the contrail_vrouter plugin?","commit_id":"5af60cab9a2eba211d7df2bc5e73735b36f45735"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"736a5e0da110b761be6b20b9d199af5bb9ab9e80","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            obj \u003d _get_vif_instance("},{"line_number":441,"context_line":"                vif,"},{"line_number":442,"context_line":"                objects.vif.VIFVHostUser,"},{"line_number":443,"context_line":"                plugin\u003d\"vrouter\","},{"line_number":444,"context_line":"                vif_name\u003d_get_vif_name(vif)"},{"line_number":445,"context_line":"            )"},{"line_number":446,"context_line":"            _set_vhostuser_settings(vif, obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9aae162c","line":443,"range":{"start_line":443,"start_character":24,"end_line":443,"end_character":31},"in_reply_to":"5f7c97a3_7a6bfab5","updated":"2018-05-31 16:19:10.000000000","message":"At this point, the proposal is to have the \u0027contrail_vrouter\u0027 plugin stay functionally the same (backwards compatibility between different versions of contrail) and add all new functionality (offloads, etc.) to the \u0027vrouter\u0027 plugin. With the renaming of OpenContrail to Tungsten Fabric, it\u0027s also adding a layer of unnecessary confusion, I think :-(\n\nMy reasoning for unifying it to \u0027vrouter\u0027 is so that the commercial Contrail, OpenContrail and TF can all use the same common plugin codebase, rather than needless name fragmentation.\n\nThe proposed os-vif plugin handles vhostuser and generic plugs fine (kind of like the ovs plugin), it has a shim to expose a vhostuser-only entrypoint on contrail_vrouter, but that can be removed... eventually.","commit_id":"5af60cab9a2eba211d7df2bc5e73735b36f45735"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae893b8098c4c1869ad03ff1bb0c66b392250429","unresolved":false,"context_lines":[{"line_number":429,"context_line":"# VIF_TYPE_VROUTER \u003d \u0027vrouter\u0027"},{"line_number":430,"context_line":"def _nova_to_osvif_vif_vrouter(vif):"},{"line_number":431,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":432,"context_line":"    if \u0027details\u0027 in vif:"},{"line_number":433,"context_line":"        vhostuser_enabled \u003d vif[\u0027details\u0027].get("},{"line_number":434,"context_line":"            model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG, False"},{"line_number":435,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_85578eca","line":432,"range":{"start_line":432,"start_character":2,"end_line":432,"end_character":24},"updated":"2018-06-01 03:02:23.000000000","message":"is there ever a case where the vif binding_details is not populated? i was under the impretion it was not an optional field in the neutron portbinding extention so this if should always be true.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"71458d315f789100f5c3e45a3d5fee101856ec57","unresolved":false,"context_lines":[{"line_number":429,"context_line":"# VIF_TYPE_VROUTER \u003d \u0027vrouter\u0027"},{"line_number":430,"context_line":"def _nova_to_osvif_vif_vrouter(vif):"},{"line_number":431,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":432,"context_line":"    if \u0027details\u0027 in vif:"},{"line_number":433,"context_line":"        vhostuser_enabled \u003d vif[\u0027details\u0027].get("},{"line_number":434,"context_line":"            model.VIF_DETAILS_VHOSTUSER_VROUTER_PLUG, False"},{"line_number":435,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_9a9cc8c0","line":432,"range":{"start_line":432,"start_character":2,"end_line":432,"end_character":24},"in_reply_to":"5f7c97a3_85578eca","updated":"2018-06-01 08:47:04.000000000","message":"Cool, removing this in the next spin. I think I was overly paranoid.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae893b8098c4c1869ad03ff1bb0c66b392250429","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        else:"},{"line_number":448,"context_line":"            # TODO(jangutter): remove this check when"},{"line_number":449,"context_line":"            # https://review.openstack.org/#/c/570959 has been merged"},{"line_number":450,"context_line":"            if hasattr(objects.vif, \u0027VIFPortProfileGenericMultiqueue\u0027):"},{"line_number":451,"context_line":"                profile \u003d objects.vif.VIFPortProfileGenericMultiqueue()"},{"line_number":452,"context_line":"            else:"},{"line_number":453,"context_line":"                # os-vif requires an update for multiqueue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_25147ae8","line":450,"range":{"start_line":450,"start_character":15,"end_line":450,"end_character":22},"updated":"2018-06-01 03:02:23.000000000","message":"am hasattr is checking for an attribute e.g. a variable in right? VIFPortProfileGenericMultiqueue is a class deffintion so im not sure this would work.\n\nalso in the past we have not merged code in nova for feature that are in os-vif that have not been released.\nso rather then add this condtion i think we should jsut wright the code to require the new version of os vif and hold merging this for 2-3 weeks when we cut a new release at milestone 2.\n\nif the nova core team is fine with merging with the check then im ok with that too but we just have not done it this way in the past.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"71458d315f789100f5c3e45a3d5fee101856ec57","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        else:"},{"line_number":448,"context_line":"            # TODO(jangutter): remove this check when"},{"line_number":449,"context_line":"            # https://review.openstack.org/#/c/570959 has been merged"},{"line_number":450,"context_line":"            if hasattr(objects.vif, \u0027VIFPortProfileGenericMultiqueue\u0027):"},{"line_number":451,"context_line":"                profile \u003d objects.vif.VIFPortProfileGenericMultiqueue()"},{"line_number":452,"context_line":"            else:"},{"line_number":453,"context_line":"                # os-vif requires an update for multiqueue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_3a3d74ba","line":450,"range":{"start_line":450,"start_character":15,"end_line":450,"end_character":22},"in_reply_to":"5f7c97a3_25147ae8","updated":"2018-06-01 08:47:04.000000000","message":"Re hasattr: I checked it and it works surprisingly well :-p, but I don\u0027t think this pattern is necessarily worth propagating. Hence the big REMOVE ME notice.\n\nI heartily concur, and will definitely remove this: at this point this shim is there for temporary integration. My reasoning is purely to validate the interface between the multiple moving parts before casting it in stone.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ae893b8098c4c1869ad03ff1bb0c66b392250429","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                profile \u003d objects.vif.VIFPortProfileGenericMultiqueue()"},{"line_number":452,"context_line":"            else:"},{"line_number":453,"context_line":"                # os-vif requires an update for multiqueue"},{"line_number":454,"context_line":"                profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":455,"context_line":"            obj \u003d _get_vif_instance("},{"line_number":456,"context_line":"                vif,"},{"line_number":457,"context_line":"                objects.vif.VIFGeneric,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_e5c0c252","line":454,"range":{"start_line":454,"start_character":26,"end_line":454,"end_character":58},"updated":"2018-06-01 03:02:23.000000000","message":"actully im not sure how i feel about this. the base portprifle is effectivly an abstract class. i dont think we should ever be creating an instance of it. i would prefer to have this set to None.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"71458d315f789100f5c3e45a3d5fee101856ec57","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                profile \u003d objects.vif.VIFPortProfileGenericMultiqueue()"},{"line_number":452,"context_line":"            else:"},{"line_number":453,"context_line":"                # os-vif requires an update for multiqueue"},{"line_number":454,"context_line":"                profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":455,"context_line":"            obj \u003d _get_vif_instance("},{"line_number":456,"context_line":"                vif,"},{"line_number":457,"context_line":"                objects.vif.VIFGeneric,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_fa5b7c1e","line":454,"range":{"start_line":454,"start_character":26,"end_line":454,"end_character":58},"in_reply_to":"5f7c97a3_e5c0c252","updated":"2018-06-01 08:47:04.000000000","message":"Yeah, this code should go away (see previous comment), but since port_profile is not Nullable  I needed a handy dummy profile.","commit_id":"190fb8646f914b580fa195c96e3fd5428be5f5a0"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"3d3820293b405fbad97fa394060e3b0183cb6004","unresolved":false,"context_lines":[{"line_number":429,"context_line":"# VIF_TYPE_VROUTER \u003d \u0027vrouter\u0027"},{"line_number":430,"context_line":"def _nova_to_osvif_vif_vrouter(vif):"},{"line_number":431,"context_line":"    vnic_type \u003d vif.get(\u0027vnic_type\u0027, model.VNIC_TYPE_NORMAL)"},{"line_number":432,"context_line":"    if vnic_type \u003d\u003d model.VNIC_TYPE_NORMAL:"},{"line_number":433,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":434,"context_line":"            vif,"},{"line_number":435,"context_line":"            objects.vif.VIFGeneric,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_a5b613f9","line":432,"range":{"start_line":432,"start_character":4,"end_line":432,"end_character":42},"updated":"2018-06-28 12:31:57.000000000","message":"Note to reviewers: this check catches potential misconfiguration on contrail/neutron side. Currently, only VNIC_TYPE_NORMAL+VIF_TYPE_VROUTER is supported. Contrail selects VIF_TYPE_HW_VEB for VNIC_TYPE_DIRECT.","commit_id":"0ab75e1842d8a89219e3b0e38d15d9dd6eab3439"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7baecfd0110725cce038e9d53694a5c977948d7e","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        )"},{"line_number":439,"context_line":"    else:"},{"line_number":440,"context_line":"        raise NotImplementedError()"},{"line_number":441,"context_line":"    return obj"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"# VIF_TYPE_DVS \u003d \u0027dvs\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_a0d19625","line":441,"updated":"2019-01-28 17:07:48.000000000","message":"✔","commit_id":"172855f293b6a48b4b64fd9e47c377c7124e192c"}],"nova/privsep/libvirt.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7baecfd0110725cce038e9d53694a5c977948d7e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        \u0027--oper\u003ddelete\u0027,"},{"line_number":186,"context_line":"        \u0027--uuid\u003d%s\u0027 % port_id,"},{"line_number":187,"context_line":"    )"},{"line_number":188,"context_line":"    processutils.execute(*cmd)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_c0ce1a81","side":"PARENT","line":188,"updated":"2019-01-28 17:07:48.000000000","message":"✔\n\none more vif type gone from nova. ++","commit_id":"e3fc005e4e4a1bba9e888b7c50fb515fa4b560ab"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1d47c77e0e9e1a968be06acd58c2921dd27fcbe5","unresolved":false,"context_lines":[{"line_number":1391,"context_line":"        script \u003d node.find(\"script\")"},{"line_number":1392,"context_line":"        self.assertIsNone(script)"},{"line_number":1393,"context_line":""},{"line_number":1394,"context_line":"    def test_vrouter(self):"},{"line_number":1395,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1396,"context_line":"        dev_want \u003d self.vif_vrouter[\u0027devname\u0027]"},{"line_number":1397,"context_line":"        xml \u003d self._get_instance_xml(d, self.vif_vrouter)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_4e1cc811","line":1394,"range":{"start_line":1394,"start_character":0,"end_line":1394,"end_character":27},"updated":"2019-01-16 15:27:00.000000000","message":"If you need to respin this, a docstring describing what the \u0027vrouter\u0027 case is (and the \u0027contrail_vrouter\u0027 case below) would be appreciated. You can probably copy-paste the end part of the commit message for that","commit_id":"5b9c30bb981b5bba933bbf7ce8df5e9c52929bce"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"9cf5479e8518beffca9cb2dde925229e4268d456","unresolved":false,"context_lines":[{"line_number":1391,"context_line":"        script \u003d node.find(\"script\")"},{"line_number":1392,"context_line":"        self.assertIsNone(script)"},{"line_number":1393,"context_line":""},{"line_number":1394,"context_line":"    def test_vrouter(self):"},{"line_number":1395,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1396,"context_line":"        dev_want \u003d self.vif_vrouter[\u0027devname\u0027]"},{"line_number":1397,"context_line":"        xml \u003d self._get_instance_xml(d, self.vif_vrouter)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_4fe27731","line":1394,"range":{"start_line":1394,"start_character":0,"end_line":1394,"end_character":27},"in_reply_to":"bfdaf3ff_4e1cc811","updated":"2019-01-25 15:37:58.000000000","message":"Needed a respin due to merge conflict, giving me a nice excuse to fix this.","commit_id":"5b9c30bb981b5bba933bbf7ce8df5e9c52929bce"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"337baa105f45a28f79d84d0834393b95e68c792a","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                              inst_type, virt_type, host):"},{"line_number":454,"context_line":"        return self.get_base_hostdev_pci_config(vif)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _set_config_VIFGeneric(self, instance, vif, conf, host):"},{"line_number":457,"context_line":"        dev \u003d vif.vif_name"},{"line_number":458,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _set_config_VIFBridge(self, instance, vif, conf, host\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_24a9ee22","line":457,"range":{"start_line":456,"start_character":0,"end_line":457,"end_character":26},"updated":"2018-05-31 09:35:33.000000000","message":"This looks good the os-vif object should have been initialized with the good name (os_vif_util.py).\n\nI would prefer you make this change in a separated commit that because this has been introduced during the conversion of IVS vif to os-vif. So I would prefer to ensure that we are doing the good thing and everyone is aware of that change.","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"63fb309af205555b4e241c25d49d4aa355e600b7","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                              inst_type, virt_type, host):"},{"line_number":454,"context_line":"        return self.get_base_hostdev_pci_config(vif)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _set_config_VIFGeneric(self, instance, vif, conf, host):"},{"line_number":457,"context_line":"        dev \u003d vif.vif_name"},{"line_number":458,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def _set_config_VIFBridge(self, instance, vif, conf, host\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_ef7aef85","line":457,"range":{"start_line":456,"start_character":0,"end_line":457,"end_character":26},"in_reply_to":"5f7c97a3_24a9ee22","updated":"2018-05-31 09:52:13.000000000","message":"Will split it out. This came up because the IVS unit tests didn\u0027t exercise the path, and I wasn\u0027t entirely sure if this is legitimate or not.","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"337baa105f45a28f79d84d0834393b95e68c792a","unresolved":false,"context_lines":[{"line_number":675,"context_line":"    def _plug_os_vif(self, instance, vif):"},{"line_number":676,"context_line":"        instance_info \u003d os_vif_util.nova_to_osvif_instance(instance)"},{"line_number":677,"context_line":"        multiqueue \u003d self._is_multiqueue_enabled(instance)"},{"line_number":678,"context_line":"        try:"},{"line_number":679,"context_line":"            # TODO(jangutter): Remove try/except when"},{"line_number":680,"context_line":"            # https://review.openstack.org/#/c/570959"},{"line_number":681,"context_line":"            # has been merged to os-vif"},{"line_number":682,"context_line":"            instance_info.multiqueue \u003d multiqueue"},{"line_number":683,"context_line":"        except AttributeError:"},{"line_number":684,"context_line":"            # We\u0027re dealing with an old os-vif"},{"line_number":685,"context_line":"            pass"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        try:"},{"line_number":688,"context_line":"            os_vif.plug(vif, instance_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a46adee9","line":685,"range":{"start_line":678,"start_character":0,"end_line":685,"end_character":16},"updated":"2018-05-31 09:35:33.000000000","message":"Can\u0027t you just use:\n\n   if \u0027multiqueue\u0027 in instance_info:","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"63fb309af205555b4e241c25d49d4aa355e600b7","unresolved":false,"context_lines":[{"line_number":675,"context_line":"    def _plug_os_vif(self, instance, vif):"},{"line_number":676,"context_line":"        instance_info \u003d os_vif_util.nova_to_osvif_instance(instance)"},{"line_number":677,"context_line":"        multiqueue \u003d self._is_multiqueue_enabled(instance)"},{"line_number":678,"context_line":"        try:"},{"line_number":679,"context_line":"            # TODO(jangutter): Remove try/except when"},{"line_number":680,"context_line":"            # https://review.openstack.org/#/c/570959"},{"line_number":681,"context_line":"            # has been merged to os-vif"},{"line_number":682,"context_line":"            instance_info.multiqueue \u003d multiqueue"},{"line_number":683,"context_line":"        except AttributeError:"},{"line_number":684,"context_line":"            # We\u0027re dealing with an old os-vif"},{"line_number":685,"context_line":"            pass"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        try:"},{"line_number":688,"context_line":"            os_vif.plug(vif, instance_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_4f99a3c1","line":685,"range":{"start_line":678,"start_character":0,"end_line":685,"end_character":16},"in_reply_to":"5f7c97a3_a46adee9","updated":"2018-05-31 09:52:13.000000000","message":"That\u0027s waay better, thanks!","commit_id":"93b2da07c5e741834ffe565ed7c936ffe261f29b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5d03d452615124d2e666d50b2d6a674158a75bea","unresolved":false,"context_lines":[{"line_number":748,"context_line":"            ptype \u003d \u0027NameSpacePort\u0027"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        try:"},{"line_number":751,"context_line":"            multiqueue \u003d self._is_multiqueue_enabled(instance.image_meta,"},{"line_number":752,"context_line":"                                                     instance.flavor)"},{"line_number":753,"context_line":"            linux_net_utils.create_tap_dev(dev, multiqueue\u003dmultiqueue)"},{"line_number":754,"context_line":"            nova.privsep.libvirt.plug_contrail_vif("},{"line_number":755,"context_line":"                instance.project_id,"},{"line_number":756,"context_line":"                instance.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_ce0e788c","side":"PARENT","line":753,"range":{"start_line":751,"start_character":0,"end_line":753,"end_character":70},"updated":"2019-01-16 15:32:37.000000000","message":"I note that there\u0027s no equivalent of this in [1]. Is that expected?\n\n[1] https://github.com/Juniper/contrail-nova-vif-driver/blob/master/vif_plug_vrouter/vrouter.py","commit_id":"89c2d1056b3f37bad243c7468d974ded71336a0f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ca54f2c147a89e0deb7578083a4a7b61cb105002","unresolved":false,"context_lines":[{"line_number":748,"context_line":"            ptype \u003d \u0027NameSpacePort\u0027"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        try:"},{"line_number":751,"context_line":"            multiqueue \u003d self._is_multiqueue_enabled(instance.image_meta,"},{"line_number":752,"context_line":"                                                     instance.flavor)"},{"line_number":753,"context_line":"            linux_net_utils.create_tap_dev(dev, multiqueue\u003dmultiqueue)"},{"line_number":754,"context_line":"            nova.privsep.libvirt.plug_contrail_vif("},{"line_number":755,"context_line":"                instance.project_id,"},{"line_number":756,"context_line":"                instance.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_e4491b8b","side":"PARENT","line":753,"range":{"start_line":751,"start_character":0,"end_line":753,"end_character":70},"in_reply_to":"bfdaf3ff_8e0e3039","updated":"2019-01-16 16:57:35.000000000","message":"Indeed. I saw that but read it backwards /o\\ Thanks for the info","commit_id":"89c2d1056b3f37bad243c7468d974ded71336a0f"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"d753a9a78743bb51f5919d31bf766f1176ab3de6","unresolved":false,"context_lines":[{"line_number":748,"context_line":"            ptype \u003d \u0027NameSpacePort\u0027"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        try:"},{"line_number":751,"context_line":"            multiqueue \u003d self._is_multiqueue_enabled(instance.image_meta,"},{"line_number":752,"context_line":"                                                     instance.flavor)"},{"line_number":753,"context_line":"            linux_net_utils.create_tap_dev(dev, multiqueue\u003dmultiqueue)"},{"line_number":754,"context_line":"            nova.privsep.libvirt.plug_contrail_vif("},{"line_number":755,"context_line":"                instance.project_id,"},{"line_number":756,"context_line":"                instance.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_8e0e3039","side":"PARENT","line":753,"range":{"start_line":751,"start_character":0,"end_line":753,"end_character":70},"in_reply_to":"bfdaf3ff_ce0e788c","updated":"2019-01-16 15:41:16.000000000","message":"Yep!\n\n(from the commit msg)\n\nFor multiqueue support, the minimum version of libvirt 1.3.1 is required. \nIn that case, libvirt creates the TAP device, rather than the os-vif plugin.\n(This is the minimum version for Rocky and later)\n   ref: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1574957\n\nThis is vestigial code hearkening back to earlier releases.","commit_id":"89c2d1056b3f37bad243c7468d974ded71336a0f"}],"releasenotes/notes/move-vrouter-plug-unplug-to-separate-os-vif-plugin-5557c9cd6f926fd8.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3d232e891edea161856b4cc622d43de6ccee385","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release moves the ``vrouter`` VIF plug and unplug code to a"},{"line_number":5,"context_line":"    separate package called ``contrail-nova-vif-driver``. This package is a"},{"line_number":6,"context_line":"    requirement on compute nodes when using Contrail, OpenContrail or"},{"line_number":7,"context_line":"    Tungsten Fabric as a Neutron plugin."},{"line_number":8,"context_line":"    At this time, the reference plugin is hosted on OpenContrail at"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5f7c97a3_cb04b5c8","line":5,"range":{"start_line":5,"start_character":30,"end_line":5,"end_character":54},"updated":"2018-06-26 15:38:12.000000000","message":"Ugh this isn\u0027t even on pypi?","commit_id":"2a86c8cf7b49f2e47f866e3c73da8268cf9cb60b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1d47c77e0e9e1a968be06acd58c2921dd27fcbe5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    separate package called ``contrail-nova-vif-driver``. This package is a"},{"line_number":6,"context_line":"    requirement on compute nodes when using Contrail, OpenContrail or"},{"line_number":7,"context_line":"    Tungsten Fabric as a Neutron plugin."},{"line_number":8,"context_line":"    At this time, the reference plugin is hosted on OpenContrail at"},{"line_number":9,"context_line":"    https://github.com/Juniper/contrail-nova-vif-driver but is expected to"},{"line_number":10,"context_line":"    transition to Tungsten Fabric in the future. Consult the plugin"},{"line_number":11,"context_line":"    documentation for version compatibility."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5f7c97a3_fc9021f6","line":8,"updated":"2019-01-16 15:27:00.000000000","message":"nit: Newline needed here if you want two separate paragraphs","commit_id":"0ab75e1842d8a89219e3b0e38d15d9dd6eab3439"}]}
