)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"282d9665e420ebc7385d047e1a976667c7eb4497","unresolved":false,"context_lines":[{"line_number":10,"context_line":"   separate os-vif plugin"},{"line_number":11,"context_line":" - IVS\u0027s methods have also been moved to a package under"},{"line_number":12,"context_line":"   networking-bigswitch"},{"line_number":13,"context_line":" - hence removing all danling calls from here"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://bugs.launchpad.net/networking-bigswitch/+bug/1704129"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7f96bb07_53d86aed","line":13,"range":{"start_line":13,"start_character":22,"end_line":13,"end_character":29},"updated":"2018-01-18 13:12:50.000000000","message":"dangling","commit_id":"6b3e8ec6640df8533c572d2c003d5ee8f0d350b1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"50bdf93e89a3f60f82fecedd1b6af274a745716d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":" - as per the bug here [1], the plug/unplug is moved to a"},{"line_number":10,"context_line":"   separate os-vif plugin"},{"line_number":11,"context_line":" - IVS\u0027s methods have also been moved to a package under"},{"line_number":12,"context_line":"   networking-bigswitch"},{"line_number":13,"context_line":" - hence removing all dangling calls from here"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://bugs.launchpad.net/networking-bigswitch/+bug/1704129"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa0c359_410c2da4","line":12,"range":{"start_line":11,"start_character":1,"end_line":12,"end_character":23},"updated":"2018-02-12 19:54:54.000000000","message":"Can you link to this change then?\n\nhttps://review.openstack.org/#/c/534369/\n\nThat is not yet released; how does this repo release - is it a library or a neutron plugin and would release with neutron, i.e. it\u0027d be part of queens for neutron?\n\nMy point being, if someone was using this and they upgraded nova before upgrading neutron (with this ML2 plugin), things would be broken. If it were a library we could require a newer version of the library, but it\u0027s a service/plugin for neutron I think so that doesn\u0027t work.\n\nWe would at least need an \u0027upgrade\u0027 release note associated with this change to point out that you need to upgrade neutron with the networking-bigswitch plugin (if you\u0027re using it - or the \"ivs\" VIF type, are those the same?) before upgrading nova (including all of the nova-compute services).","commit_id":"e6bff0d82ad62849c712758bdb72268be5d51733"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"99fd04dc99b7e93ce5cedd41bddf0f325eb8b17d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":" - as per the bug here [1], the plug/unplug is moved to a"},{"line_number":10,"context_line":"   separate os-vif plugin"},{"line_number":11,"context_line":" - IVS\u0027s methods have also been moved to a package under"},{"line_number":12,"context_line":"   networking-bigswitch"},{"line_number":13,"context_line":" - hence removing all dangling calls from here"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1] https://bugs.launchpad.net/networking-bigswitch/+bug/1704129"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa0c359_24500f0b","line":12,"range":{"start_line":11,"start_character":1,"end_line":12,"end_character":23},"in_reply_to":"3fa0c359_410c2da4","updated":"2018-02-12 20:15:18.000000000","message":"Hey,\n\nAdding a little context here:\nIVS is the virtual switch that is used in the Big Switch Network\u0027s (BSN) solution. It would work only with BSN pieces.\nAll the pieces for BSN solution to work with Openstack are under networking-bigswitch project. It would be fair to say that this (ivs related calls in nova) would not be used unless they\u0027re already using networking-bigswitch.\nThe release of that repo is typically one step behind the official releases. So the version bump including the latest changes for Queens would be a few months after Queens GA happens. I\u0027ll do one for now, so that its not completely broke in upgrade scenario as you just pointed out.\n\nLet me also link the change and add an \u0027upgrade\u0027 release note - which would make it easy to understand :)","commit_id":"e6bff0d82ad62849c712758bdb72268be5d51733"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    else:"},{"line_number":424,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":425,"context_line":"            vif,"},{"line_number":426,"context_line":"            objects.vif.VIFGeneric,"},{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_f2082192","line":426,"range":{"start_line":426,"start_character":24,"end_line":426,"end_character":34},"updated":"2018-05-01 09:30:26.000000000","message":"As noted later in the review, I\u0027d expect to have seen this called VIFEthernet. However, there\u0027s no such thing in os-vif. Are you sure this works? It sounds like there\u0027s some missing configuration here.\n\nEDIT: Actually, VIFGeneric is correct, as noted in the os-vif code [1]. I\u0027d still expect to see a \u0027_set_config_VIFGeneric\u0027 function in \u0027nova/virt/libvirt/vif.py\u0027 though. Any reason it shouldn\u0027t be there?\n\n[1] https://github.com/openstack/os-vif/blob/dc17cd1fabc8bfdb84fde7bd87091d48b31a5781/os_vif/objects/vif.py#L55-L66","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    else:"},{"line_number":424,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":425,"context_line":"            vif,"},{"line_number":426,"context_line":"            objects.vif.VIFGeneric,"},{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_7a161e58","line":426,"range":{"start_line":426,"start_character":24,"end_line":426,"end_character":34},"in_reply_to":"9f6a8fd7_f2082192","updated":"2018-05-01 17:53:14.000000000","message":"ah, since it was in the list of VIF objects under os-vif, I assumed it must be defined by default. i\u0027ve added it in the next patch update.","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"},{"line_number":430,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":431,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":432,"context_line":"    return obj"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_12f355a0","line":431,"range":{"start_line":430,"start_character":0,"end_line":431,"end_character":54},"updated":"2018-05-01 09:30:26.000000000","message":"You sure this is necessary? We weren\u0027t setting \u0027bridge_name\u0027 previously","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"},{"line_number":430,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":431,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":432,"context_line":"    return obj"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_fd16a849","line":431,"range":{"start_line":430,"start_character":0,"end_line":431,"end_character":54},"in_reply_to":"9f6a8fd7_12f355a0","updated":"2018-05-01 17:53:14.000000000","message":"oops, yeah. my bad. fixed it in the patch.","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"495fa9df3e833db414cf055c9aba7b809176a601","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":414,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":415,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":416,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":417,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_7d7b66bd","line":414,"range":{"start_line":413,"start_character":0,"end_line":414,"end_character":61},"updated":"2018-05-02 14:02:06.000000000","message":"This the last holdout. Setting this profile will result in something like the following being added to the instance XML [1]:\n\n  \u003cvirtualport type\u003d\"openvswitch\"\u003e\n    \u003cparameters interfaceid\u003d\u002709b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f\u0027/\u003e\n  \u003c/virtualport\u003e\n\nThis wasn\u0027t present before. Why are we adding it now?\n\n[1] https://libvirt.org/formatnetwork.html#elementVlanTag|\n\nEDIT: Some time later, I found a test for this:\n\n  nova.tests.unit.virt.libvirt.test_vif.LibvirtVifTestCase.test_generic_ivs_virtualport_driver\n\nI modified this as below and found it didn\u0027t pass. As a result, it would seem setting these would be a change in behavior. That\u0027s not necessarily a bad thing, but we should probably call it out if so.\n\n    diff --git a/nova/tests/unit/virt/libvirt/test_vif.py b/nova/tests/unit/virt/libvirt/test_vif.py\n    index 5866931f41..375586b64d 100644\n    --- a/nova/tests/unit/virt/libvirt/test_vif.py\n    +++ b/nova/tests/unit/virt/libvirt/test_vif.py\n    @@ -1156,6 +1156,16 @@ class LibvirtVifTestCase(test.NoDBTestCase):\n             node \u003d self._get_node(xml)\n             self._assertTypeAndMacEquals(node, \"ethernet\", \"target\", \"dev\",\n                                          vif, vif[\u0027devname\u0027])\n    +        vp \u003d node.find(\"virtualport\")\n    +        self.assertEqual(vp.get(\"type\"), \"openvswitch\")\n    +        iface_id_found \u003d False\n    +        for p_elem in vp.findall(\"parameters\"):\n    +            iface_id \u003d p_elem.get(\"interfaceid\", None)\n    +            if iface_id:\n    +                self.assertEqual(iface_id, want_iface_id)\n    +                iface_id_found \u003d True\n    +\n    +        self.assertTrue(iface_id_found)\n     \n         def _check_ovs_virtualport_driver(self, d, vif, want_iface_id):\n             self.flags(firewall_driver\u003d\"nova.virt.firewall.NoopFirewallDriver\")","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"626556c926494b9525416c1845ed64dc0543bd34","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":414,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":415,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":416,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":417,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_aedc6674","line":414,"range":{"start_line":413,"start_character":0,"end_line":414,"end_character":61},"in_reply_to":"9f6a8fd7_7d7b66bd","updated":"2018-05-02 15:09:28.000000000","message":"\u003e This the last holdout. Setting this profile will result in something like the following being added to the instance XML [1]:\n\nHum.. that part should not update the guest domain XML. It\u0027s about to pass some internal parameters where the plugin IVS does not use.\n\nIn all cases I did not noticed that part but you are right we should remove it.","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"a83fa223c899e535e342fdd5aeec5980da38d893","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":414,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":415,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":416,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":417,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_ee9ede05","line":414,"range":{"start_line":413,"start_character":0,"end_line":414,"end_character":61},"in_reply_to":"9f6a8fd7_aedc6674","updated":"2018-05-02 15:28:20.000000000","message":"Ah, I didn\u0027t think of this much at the time of testing - basically I just needed _some_ port profile. I was simply moving code from previous method to here and port profile wasn\u0027t needed earlier.\nVIFPortProfileOpenVSwitch was closest to the actual implementation - IVS is basically a forwarding table programming agent in user space on top of OVS kernel.\nIf there is anything more generic that can be used, do let me know. I\u0027m taking a look at the code now to set it appropriately.","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ce960de27fcbceb3553c52c73d5dd8f017bc5b3","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":416,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":417,"context_line":"            vif,"},{"line_number":418,"context_line":"            objects.vif.VIFBridge,"},{"line_number":419,"context_line":"            port_profile\u003dprofile,"},{"line_number":420,"context_line":"            plugin\u003d\"ivs\","},{"line_number":421,"context_line":"            vif_name\u003d_get_vif_name(vif),"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_cfae81e6","line":418,"updated":"2018-05-02 08:07:44.000000000","message":"OK so it seems that you are supporting hybrid, so that part looks good.","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ce960de27fcbceb3553c52c73d5dd8f017bc5b3","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    else:"},{"line_number":424,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":425,"context_line":"            vif,"},{"line_number":426,"context_line":"            objects.vif.VIFGeneric,"},{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_4f9b51c8","line":426,"updated":"2018-05-02 08:07:44.000000000","message":"I was a bit confused by your comment [0]. You are not supporting VIFOpenVSwitch.\n\n\nI looked at how your plugin handles VIFGeneric which looks goods. You have also well added the simple host ethernet config for the domain by set_VIFGeneric. So I\u0027m OK.\n\n\n[0] https://github.com/bigswitch/os-vif-bigswitch/blob/master/os_vif_bigswitch/vif_plug_ivs/ivs.py#L31","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"0037b6bc137c359dd09cccc27db0bd9fc1a91f94","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    else:"},{"line_number":424,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":425,"context_line":"            vif,"},{"line_number":426,"context_line":"            objects.vif.VIFGeneric,"},{"line_number":427,"context_line":"            port_profile\u003dprofile,"},{"line_number":428,"context_line":"            plugin\u003d\"ivs\","},{"line_number":429,"context_line":"            vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_24e95f19","line":426,"in_reply_to":"9f6a8fd7_4f9b51c8","updated":"2018-05-02 11:24:59.000000000","message":"oh, my bad. I was whizzing through 3 github repos to write the plugin and made a typo \u003c/facepalm\u003e.\nI\u0027ll update it so there\u0027s no confusion. Thanks for taking a look and pointing that out!","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"054123c562beacf155f547cab3e3ace0ab26b403","unresolved":false,"context_lines":[{"line_number":266,"context_line":""},{"line_number":267,"context_line":"# VIF_TYPE_BRIDGE \u003d \u0027bridge\u0027"},{"line_number":268,"context_line":"def _nova_to_osvif_vif_bridge(vif):"},{"line_number":269,"context_line":"    obj \u003d _get_vif_instance("},{"line_number":270,"context_line":"        vif,"},{"line_number":271,"context_line":"        objects.vif.VIFBridge,"},{"line_number":272,"context_line":"        plugin\u003d\"linux_bridge\","},{"line_number":273,"context_line":"        vif_name\u003d_get_vif_name(vif))"},{"line_number":274,"context_line":"    if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":275,"context_line":"        obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":276,"context_line":"    return obj"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_b29f49b3","line":273,"range":{"start_line":269,"start_character":0,"end_line":273,"end_character":36},"updated":"2018-05-03 12:39:38.000000000","message":"No \u0027profile\u0027 parameter here","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"054123c562beacf155f547cab3e3ace0ab26b403","unresolved":false,"context_lines":[{"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:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_52a4b508","line":404,"range":{"start_line":402,"start_character":0,"end_line":404,"end_character":60},"updated":"2018-05-03 12:39:38.000000000","message":"Or here","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21a3b54383e17408e2b0a4d353d730a18c37ea7f","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":414,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":415,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":416,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_1e73ace9","line":413,"range":{"start_line":413,"start_character":0,"end_line":413,"end_character":46},"updated":"2018-05-03 09:43:13.000000000","message":"Do we need any type of profile? What happens if we simply omit the \u0027profile\u0027 parameter below?","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"31da7e6b212d1a06fa432eb9b91eeec1a5c20257","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":414,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":415,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":416,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_c5baf408","line":413,"range":{"start_line":413,"start_character":0,"end_line":413,"end_character":46},"in_reply_to":"5f7c97a3_08f84ac2","updated":"2018-05-08 15:33:45.000000000","message":"So given that this is the default [1], declaring it here seems unnecessary, right? If so, this makes this comment more of a nit but could we drop it just to keep it similar to the above? After all, if I had this question, others surely will too.\n\n[1] https://github.com/openstack/os-vif/blob/2fdf21814a589077dcc60cdf53765e2a4eb0e220/os_vif/objects/vif.py#L49-L51","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"4d6afcf6422af2479843ad672d86a24b745e3938","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":414,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":415,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":416,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_d21be570","line":413,"range":{"start_line":413,"start_character":0,"end_line":413,"end_character":46},"in_reply_to":"5f7c97a3_1e73ace9","updated":"2018-05-03 12:32:41.000000000","message":"Oh, I have no idea - but I\u0027m willing to try it out today in my setup to verify. In case nova-gurus already know the answer that its okay to omit profile, let me know and we can ACK this sooner :)","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"054123c562beacf155f547cab3e3ace0ab26b403","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":414,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":415,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":416,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_f25f010c","line":413,"range":{"start_line":413,"start_character":0,"end_line":413,"end_character":46},"in_reply_to":"5f7c97a3_d21be570","updated":"2018-05-03 12:39:38.000000000","message":"Based on the above, I\u0027d say no. However, I can\u0027t prepare a suitable deployment to test these two configurations so I\u0027d rather you checked to be sure we don\u0027t break something :)","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"cff102d5548701237b88d7c5565dc320bc617bd4","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":414,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":415,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":416,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_08f84ac2","line":413,"range":{"start_line":413,"start_character":0,"end_line":413,"end_character":46},"in_reply_to":"5f7c97a3_f25f010c","updated":"2018-05-03 14:24:06.000000000","message":"I would say it\u0027s better to have used VIFPortProfilBase since we have declared the attribute as non-nullable. In the other side we don\u0027t store anything is DB so it\u0027s not a really a big deal. I would have kept it.","commit_id":"54359b7417d59e3e0d4435a442a79c339090fd00"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ee84cc683880fd2ebac10fe54d6c667c2d858140","unresolved":false,"context_lines":[{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":414,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":415,"context_line":"            vif,"},{"line_number":416,"context_line":"            objects.vif.VIFBridge,"},{"line_number":417,"context_line":"            plugin\u003d\"ivs\","},{"line_number":418,"context_line":"            vif_name\u003d_get_vif_name(vif),"},{"line_number":419,"context_line":"            bridge_name\u003d_get_hybrid_bridge_name(vif))"},{"line_number":420,"context_line":"    else:"},{"line_number":421,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":422,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_d74869cd","line":419,"range":{"start_line":414,"start_character":8,"end_line":419,"end_character":53},"updated":"2018-05-08 18:22:01.000000000","message":"There is no test case for this condition.","commit_id":"aa597f06443592fec3069d095fa8034c5c402a93"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"ef6d1cf56789db5ffad14d9761fec501ed69f89b","unresolved":false,"context_lines":[{"line_number":411,"context_line":"# VIF_TYPE_IVS \u003d \u0027ivs\u0027"},{"line_number":412,"context_line":"def _nova_to_osvif_vif_ivs(vif):"},{"line_number":413,"context_line":"    if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":414,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":415,"context_line":"            vif,"},{"line_number":416,"context_line":"            objects.vif.VIFBridge,"},{"line_number":417,"context_line":"            plugin\u003d\"ivs\","},{"line_number":418,"context_line":"            vif_name\u003d_get_vif_name(vif),"},{"line_number":419,"context_line":"            bridge_name\u003d_get_hybrid_bridge_name(vif))"},{"line_number":420,"context_line":"    else:"},{"line_number":421,"context_line":"        obj \u003d _get_vif_instance("},{"line_number":422,"context_line":"            vif,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_a3747d69","line":419,"range":{"start_line":414,"start_character":8,"end_line":419,"end_character":53},"in_reply_to":"5f7c97a3_d74869cd","updated":"2018-05-09 13:02:09.000000000","message":"Done","commit_id":"aa597f06443592fec3069d095fa8034c5c402a93"}],"nova/tests/unit/network/test_os_vif_util.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ada92078ce78167d19ffa17e8a0d96d9d1f28f3f","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_b0be73ab","line":978,"range":{"start_line":978,"start_character":57,"end_line":978,"end_character":62},"updated":"2018-04-26 14:57:09.000000000","message":"Could you add a comment about why you\u0027re limiting this to 14 characters?","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"62f862ea9adcb854beb70330196d53ac9ee79a9c","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_8c4f9391","line":978,"range":{"start_line":978,"start_character":57,"end_line":978,"end_character":62},"in_reply_to":"9f6a8fd7_b0be73ab","updated":"2018-04-26 15:40:36.000000000","message":"It\u0027s some kind of Neutron limitation for name I already saw that. But yes I understand your ask for a comment.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"8b21c573e3bc9f7246a33606c11904805a3d9e02","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_8c8d5333","line":978,"range":{"start_line":978,"start_character":57,"end_line":978,"end_character":62},"in_reply_to":"9f6a8fd7_b0be73ab","updated":"2018-04-26 15:28:28.000000000","message":"Oops, my bad. All IVS related tests were supposed to be removed. This might\u0027ve seeped in during the last rebase.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"9dafe877082bcf5c264927b190a553640ee38c81","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_2d93c551","line":978,"range":{"start_line":978,"start_character":57,"end_line":978,"end_character":62},"in_reply_to":"9f6a8fd7_b0be73ab","updated":"2018-04-30 14:57:16.000000000","message":"its derived from here: https://github.com/openstack/nova/blob/553f2edde596348ca5447588c5a0b06f3b6be286/nova/network/model.py#L161-L164\n\ni thought this was test_vif.py when i said all test cases are to be removed. this one stays though.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"495fa9df3e833db414cf055c9aba7b809176a601","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        actual \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_3d02ce0a","line":978,"range":{"start_line":978,"start_character":0,"end_line":978,"end_character":62},"updated":"2018-05-02 14:02:06.000000000","message":"nit: I would have hardcoded this rather than reimplementing the function in the test","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"495fa9df3e833db414cf055c9aba7b809176a601","unresolved":false,"context_lines":[{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        expected_vif_name \u003d (\"%s%s\" % (\u0027nic\u0027, vif[\u0027id\u0027]))[:14]"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"        self.assertEqual(\u0027VIFGeneric\u0027, type(actual).__name__)"},{"line_number":981,"context_line":"        self.assertEqual(expected_vif_name, actual.vif_name)"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":"    def test_nova_to_osvif_vif_unknown(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_7d17e646","line":980,"range":{"start_line":980,"start_character":0,"end_line":980,"end_character":61},"updated":"2018-05-02 14:02:06.000000000","message":"nit: This should probably read\n\n  self.assertIsInstance(os_vif.VIFGeneric, actual)\n\nor something like that.","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"}],"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":"ee84cc683880fd2ebac10fe54d6c667c2d858140","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"        d.plug(self.instance, self.vif_macvtap_flat)"},{"line_number":1401,"context_line":"        self.assertFalse(ensure_vlan_mock.called)"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    def test_generic_iovisor_driver(self):"},{"line_number":1404,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1405,"context_line":"        self.flags(firewall_driver\u003d\"nova.virt.firewall.NoopFirewallDriver\")"},{"line_number":1406,"context_line":"        br_want \u003d self.vif_ivs[\u0027devname\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_9762f13d","side":"PARENT","line":1403,"range":{"start_line":1403,"start_character":21,"end_line":1403,"end_character":28},"updated":"2018-05-08 18:22:01.000000000","message":"We shouldn\u0027t remove the iovisor vif type test coverage, right? It looks like you\u0027re just removing it because you\u0027ve removed vif_ivs but couldn\u0027t we use a different variable, like self.vif_iovisor?","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b006adfdc6b62a0667e8c35021509ed35d591418","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"        d.plug(self.instance, self.vif_macvtap_flat)"},{"line_number":1401,"context_line":"        self.assertFalse(ensure_vlan_mock.called)"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    def test_generic_iovisor_driver(self):"},{"line_number":1404,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1405,"context_line":"        self.flags(firewall_driver\u003d\"nova.virt.firewall.NoopFirewallDriver\")"},{"line_number":1406,"context_line":"        br_want \u003d self.vif_ivs[\u0027devname\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_cf6f5890","side":"PARENT","line":1403,"range":{"start_line":1403,"start_character":21,"end_line":1403,"end_character":28},"in_reply_to":"5f7c97a3_432c8998","updated":"2018-05-09 14:23:06.000000000","message":"No idea how I missed this. Good spot","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"ef6d1cf56789db5ffad14d9761fec501ed69f89b","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"        d.plug(self.instance, self.vif_macvtap_flat)"},{"line_number":1401,"context_line":"        self.assertFalse(ensure_vlan_mock.called)"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    def test_generic_iovisor_driver(self):"},{"line_number":1404,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1405,"context_line":"        self.flags(firewall_driver\u003d\"nova.virt.firewall.NoopFirewallDriver\")"},{"line_number":1406,"context_line":"        br_want \u003d self.vif_ivs[\u0027devname\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_432c8998","side":"PARENT","line":1403,"range":{"start_line":1403,"start_character":21,"end_line":1403,"end_character":28},"in_reply_to":"5f7c97a3_9762f13d","updated":"2018-05-09 13:02:09.000000000","message":"i had blindly truncated all tests with vif type ivs. thanks for catching this - i\u0027ll update as you suggested +1","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ada92078ce78167d19ffa17e8a0d96d9d1f28f3f","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"},{"line_number":284,"context_line":"                                      inst_type,"},{"line_number":285,"context_line":"                                      virt_type,"},{"line_number":286,"context_line":"                                      host)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def get_config_ivs_ethernet(self, instance, vif, image_meta,"},{"line_number":289,"context_line":"                                inst_type, virt_type, host):"},{"line_number":290,"context_line":"        conf \u003d self.get_base_config(instance,"},{"line_number":291,"context_line":"                                    vif[\u0027address\u0027],"},{"line_number":292,"context_line":"                                    image_meta,"},{"line_number":293,"context_line":"                                    inst_type,"},{"line_number":294,"context_line":"                                    virt_type,"},{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_config_ivs(self, instance, vif, image_meta,"},{"line_number":304,"context_line":"                       inst_type, virt_type, host):"},{"line_number":305,"context_line":"        if self.get_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":306,"context_line":"            return self.get_config_ivs_hybrid(instance, vif,"},{"line_number":307,"context_line":"                                              image_meta,"},{"line_number":308,"context_line":"                                              inst_type,"},{"line_number":309,"context_line":"                                              virt_type,"},{"line_number":310,"context_line":"                                              host)"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            return self.get_config_ivs_ethernet(instance, vif,"},{"line_number":313,"context_line":"                                                image_meta,"},{"line_number":314,"context_line":"                                                inst_type,"},{"line_number":315,"context_line":"                                                virt_type,"},{"line_number":316,"context_line":"                                                host)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_config_802qbg(self, instance, vif, image_meta,"},{"line_number":319,"context_line":"                          inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_90fb2f45","line":316,"range":{"start_line":277,"start_character":0,"end_line":316,"end_character":53},"updated":"2018-04-26 14:57:09.000000000","message":"Shouldn\u0027t these be removed too?","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"9dafe877082bcf5c264927b190a553640ee38c81","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"},{"line_number":284,"context_line":"                                      inst_type,"},{"line_number":285,"context_line":"                                      virt_type,"},{"line_number":286,"context_line":"                                      host)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def get_config_ivs_ethernet(self, instance, vif, image_meta,"},{"line_number":289,"context_line":"                                inst_type, virt_type, host):"},{"line_number":290,"context_line":"        conf \u003d self.get_base_config(instance,"},{"line_number":291,"context_line":"                                    vif[\u0027address\u0027],"},{"line_number":292,"context_line":"                                    image_meta,"},{"line_number":293,"context_line":"                                    inst_type,"},{"line_number":294,"context_line":"                                    virt_type,"},{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_config_ivs(self, instance, vif, image_meta,"},{"line_number":304,"context_line":"                       inst_type, virt_type, host):"},{"line_number":305,"context_line":"        if self.get_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":306,"context_line":"            return self.get_config_ivs_hybrid(instance, vif,"},{"line_number":307,"context_line":"                                              image_meta,"},{"line_number":308,"context_line":"                                              inst_type,"},{"line_number":309,"context_line":"                                              virt_type,"},{"line_number":310,"context_line":"                                              host)"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            return self.get_config_ivs_ethernet(instance, vif,"},{"line_number":313,"context_line":"                                                image_meta,"},{"line_number":314,"context_line":"                                                inst_type,"},{"line_number":315,"context_line":"                                                virt_type,"},{"line_number":316,"context_line":"                                                host)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_config_802qbg(self, instance, vif, image_meta,"},{"line_number":319,"context_line":"                          inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_1fe60b18","line":316,"range":{"start_line":277,"start_character":0,"end_line":316,"end_character":53},"in_reply_to":"9f6a8fd7_90fb2f45","updated":"2018-04-30 14:57:16.000000000","message":"Done","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"62f862ea9adcb854beb70330196d53ac9ee79a9c","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"},{"line_number":284,"context_line":"                                      inst_type,"},{"line_number":285,"context_line":"                                      virt_type,"},{"line_number":286,"context_line":"                                      host)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def get_config_ivs_ethernet(self, instance, vif, image_meta,"},{"line_number":289,"context_line":"                                inst_type, virt_type, host):"},{"line_number":290,"context_line":"        conf \u003d self.get_base_config(instance,"},{"line_number":291,"context_line":"                                    vif[\u0027address\u0027],"},{"line_number":292,"context_line":"                                    image_meta,"},{"line_number":293,"context_line":"                                    inst_type,"},{"line_number":294,"context_line":"                                    virt_type,"},{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_config_ivs(self, instance, vif, image_meta,"},{"line_number":304,"context_line":"                       inst_type, virt_type, host):"},{"line_number":305,"context_line":"        if self.get_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":306,"context_line":"            return self.get_config_ivs_hybrid(instance, vif,"},{"line_number":307,"context_line":"                                              image_meta,"},{"line_number":308,"context_line":"                                              inst_type,"},{"line_number":309,"context_line":"                                              virt_type,"},{"line_number":310,"context_line":"                                              host)"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            return self.get_config_ivs_ethernet(instance, vif,"},{"line_number":313,"context_line":"                                                image_meta,"},{"line_number":314,"context_line":"                                                inst_type,"},{"line_number":315,"context_line":"                                                virt_type,"},{"line_number":316,"context_line":"                                                host)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_config_802qbg(self, instance, vif, image_meta,"},{"line_number":319,"context_line":"                          inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_00110754","line":316,"range":{"start_line":277,"start_character":0,"end_line":316,"end_character":53},"in_reply_to":"9f6a8fd7_90fb2f45","updated":"2018-04-26 15:40:36.000000000","message":"This is configuring domain xml tat part should be converted in _set_config_VIF","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"8b21c573e3bc9f7246a33606c11904805a3d9e02","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"},{"line_number":284,"context_line":"                                      inst_type,"},{"line_number":285,"context_line":"                                      virt_type,"},{"line_number":286,"context_line":"                                      host)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def get_config_ivs_ethernet(self, instance, vif, image_meta,"},{"line_number":289,"context_line":"                                inst_type, virt_type, host):"},{"line_number":290,"context_line":"        conf \u003d self.get_base_config(instance,"},{"line_number":291,"context_line":"                                    vif[\u0027address\u0027],"},{"line_number":292,"context_line":"                                    image_meta,"},{"line_number":293,"context_line":"                                    inst_type,"},{"line_number":294,"context_line":"                                    virt_type,"},{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def get_config_ivs(self, instance, vif, image_meta,"},{"line_number":304,"context_line":"                       inst_type, virt_type, host):"},{"line_number":305,"context_line":"        if self.get_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":306,"context_line":"            return self.get_config_ivs_hybrid(instance, vif,"},{"line_number":307,"context_line":"                                              image_meta,"},{"line_number":308,"context_line":"                                              inst_type,"},{"line_number":309,"context_line":"                                              virt_type,"},{"line_number":310,"context_line":"                                              host)"},{"line_number":311,"context_line":"        else:"},{"line_number":312,"context_line":"            return self.get_config_ivs_ethernet(instance, vif,"},{"line_number":313,"context_line":"                                                image_meta,"},{"line_number":314,"context_line":"                                                inst_type,"},{"line_number":315,"context_line":"                                                virt_type,"},{"line_number":316,"context_line":"                                                host)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_config_802qbg(self, instance, vif, image_meta,"},{"line_number":319,"context_line":"                          inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_ecce4f5a","line":316,"range":{"start_line":277,"start_character":0,"end_line":316,"end_character":53},"in_reply_to":"9f6a8fd7_90fb2f45","updated":"2018-04-26 15:28:28.000000000","message":"Yes, you\u0027re right. I\u0027m not sure if I correctly moved these to the plugin. Let me verify and confirm.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ada92078ce78167d19ffa17e8a0d96d9d1f28f3f","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":643,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        # Try os-vif codepath first"},{"line_number":646,"context_line":"        vif_obj \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":647,"context_line":"        if vif_obj is not None:"},{"line_number":648,"context_line":"            return self._get_config_os_vif(instance, vif_obj, image_meta,"},{"line_number":649,"context_line":"                                           inst_type, virt_type, host,"},{"line_number":650,"context_line":"                                           vnic_type)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Legacy non-os-vif codepath"},{"line_number":653,"context_line":"        vif_slug \u003d self._normalize_vif_type(vif_type)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_30b90378","line":650,"range":{"start_line":645,"start_character":0,"end_line":650,"end_character":53},"updated":"2018-04-26 14:57:09.000000000","message":"Yeah, as above, there should be (is?) an os-vif method for this","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"8b21c573e3bc9f7246a33606c11904805a3d9e02","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":643,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        # Try os-vif codepath first"},{"line_number":646,"context_line":"        vif_obj \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":647,"context_line":"        if vif_obj is not None:"},{"line_number":648,"context_line":"            return self._get_config_os_vif(instance, vif_obj, image_meta,"},{"line_number":649,"context_line":"                                           inst_type, virt_type, host,"},{"line_number":650,"context_line":"                                           vnic_type)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Legacy non-os-vif codepath"},{"line_number":653,"context_line":"        vif_slug \u003d self._normalize_vif_type(vif_type)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_4cd41bbe","line":650,"range":{"start_line":645,"start_character":0,"end_line":650,"end_character":53},"in_reply_to":"9f6a8fd7_30b90378","updated":"2018-04-26 15:28:28.000000000","message":"Gotcha. Same as above :) I\u0027ll verify and add it if its missing and get back on it.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"62f862ea9adcb854beb70330196d53ac9ee79a9c","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":643,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        # Try os-vif codepath first"},{"line_number":646,"context_line":"        vif_obj \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":647,"context_line":"        if vif_obj is not None:"},{"line_number":648,"context_line":"            return self._get_config_os_vif(instance, vif_obj, image_meta,"},{"line_number":649,"context_line":"                                           inst_type, virt_type, host,"},{"line_number":650,"context_line":"                                           vnic_type)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Legacy non-os-vif codepath"},{"line_number":653,"context_line":"        vif_slug \u003d self._normalize_vif_type(vif_type)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_6cc55f0a","line":650,"range":{"start_line":645,"start_character":0,"end_line":650,"end_character":53},"in_reply_to":"9f6a8fd7_30b90378","updated":"2018-04-26 15:40:36.000000000","message":"Not sure what you mean, we never configure domain XML from os-vif. Can you share more details?","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"9dafe877082bcf5c264927b190a553640ee38c81","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                _(\"vif_type parameter must be present \""},{"line_number":643,"context_line":"                  \"for this vif_driver implementation\"))"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        # Try os-vif codepath first"},{"line_number":646,"context_line":"        vif_obj \u003d os_vif_util.nova_to_osvif_vif(vif)"},{"line_number":647,"context_line":"        if vif_obj is not None:"},{"line_number":648,"context_line":"            return self._get_config_os_vif(instance, vif_obj, image_meta,"},{"line_number":649,"context_line":"                                           inst_type, virt_type, host,"},{"line_number":650,"context_line":"                                           vnic_type)"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        # Legacy non-os-vif codepath"},{"line_number":653,"context_line":"        vif_slug \u003d self._normalize_vif_type(vif_type)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f6a8fd7_7fb867e4","line":650,"range":{"start_line":645,"start_character":0,"end_line":650,"end_character":53},"in_reply_to":"9f6a8fd7_4cd41bbe","updated":"2018-04-30 14:57:16.000000000","message":"this one was slightly convoluted - i thought i would have to add _set_config_*ivs(). but during verification i figured that ivs uses VIFBridge as the type of VIF. so _set_config_VIFBridge handles it correctly.\nnothing is needed to be done here. so its okay.","commit_id":"64399fca4a6bc6708c0e554eff8d506c31881df0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            return False"},{"line_number":256,"context_line":"        return True"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_config_bridge(self, instance, vif, image_meta,"},{"line_number":259,"context_line":"                          inst_type, virt_type, host):"},{"line_number":260,"context_line":"        \"\"\"Get VIF configurations for bridge type.\"\"\""},{"line_number":261,"context_line":"        conf \u003d self.get_base_config(instance, vif[\u0027address\u0027], image_meta,"},{"line_number":262,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027],"},{"line_number":263,"context_line":"                                    host)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        designer.set_vif_host_backend_bridge_config("},{"line_number":266,"context_line":"            conf, self.get_bridge_name(vif),"},{"line_number":267,"context_line":"            self.get_vif_devname(vif))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        mac_id \u003d vif[\u0027address\u0027].replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":270,"context_line":"        name \u003d \"nova-instance-\" + instance.name + \"-\" + mac_id"},{"line_number":271,"context_line":"        if self.get_firewall_required(vif):"},{"line_number":272,"context_line":"            conf.filtername \u003d name"},{"line_number":273,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_3271b90d","side":"PARENT","line":275,"range":{"start_line":258,"start_character":0,"end_line":275,"end_character":19},"updated":"2018-05-01 09:30:26.000000000","message":"All of this is dead code now too (Sorry - I should have spotted it earlier). Also, I think \u0027get_firewall_required\u0027 is also dead","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            return False"},{"line_number":256,"context_line":"        return True"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_config_bridge(self, instance, vif, image_meta,"},{"line_number":259,"context_line":"                          inst_type, virt_type, host):"},{"line_number":260,"context_line":"        \"\"\"Get VIF configurations for bridge type.\"\"\""},{"line_number":261,"context_line":"        conf \u003d self.get_base_config(instance, vif[\u0027address\u0027], image_meta,"},{"line_number":262,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027],"},{"line_number":263,"context_line":"                                    host)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        designer.set_vif_host_backend_bridge_config("},{"line_number":266,"context_line":"            conf, self.get_bridge_name(vif),"},{"line_number":267,"context_line":"            self.get_vif_devname(vif))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        mac_id \u003d vif[\u0027address\u0027].replace(\u0027:\u0027, \u0027\u0027)"},{"line_number":270,"context_line":"        name \u003d \"nova-instance-\" + instance.name + \"-\" + mac_id"},{"line_number":271,"context_line":"        if self.get_firewall_required(vif):"},{"line_number":272,"context_line":"            conf.filtername \u003d name"},{"line_number":273,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        return conf"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_7d24d8af","side":"PARENT","line":275,"range":{"start_line":258,"start_character":0,"end_line":275,"end_character":19},"in_reply_to":"9f6a8fd7_3271b90d","updated":"2018-05-01 17:53:14.000000000","message":"Done","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_d28e3d26","side":"PARENT","line":280,"range":{"start_line":280,"start_character":8,"end_line":280,"end_character":65},"updated":"2018-05-01 09:30:26.000000000","message":"This seems to be handled by [1], which does a very similar thing. However, this particular function - \u0027get_br_name\u0027 - no longer has any callers and can be removed.\n\n[1] https://review.openstack.org/#/c/534371/10/nova/network/os_vif_util.py@422","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def get_config_ivs_hybrid(self, instance, vif, image_meta,"},{"line_number":278,"context_line":"                              inst_type, virt_type, host):"},{"line_number":279,"context_line":"        newvif \u003d copy.deepcopy(vif)"},{"line_number":280,"context_line":"        newvif[\u0027network\u0027][\u0027bridge\u0027] \u003d self.get_br_name(vif[\u0027id\u0027])"},{"line_number":281,"context_line":"        return self.get_config_bridge(instance,"},{"line_number":282,"context_line":"                                      newvif,"},{"line_number":283,"context_line":"                                      image_meta,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_1d3b5cd1","side":"PARENT","line":280,"range":{"start_line":280,"start_character":8,"end_line":280,"end_character":65},"in_reply_to":"9f6a8fd7_d28e3d26","updated":"2018-05-01 17:53:14.000000000","message":"Done","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_92b1a5e4","side":"PARENT","line":299,"range":{"start_line":298,"start_character":0,"end_line":299,"end_character":70},"updated":"2018-05-01 09:30:26.000000000","message":"What about this? Don\u0027t we need a \u0027_set_config_xxx\u0027 function for this?\n\nI think I might be a missing a step because we seem to have gone from an \"ethernet\"-type VIF to a \"generic\" type VIF. Maybe they\u0027re the same thing?\n\nEDIT: It seems they are, as noted earlier in the review. However, I do think we need a \u0027_set_config_VIFEthernet\u0027 function to do this for us. Correct me if I\u0027m wrong.\n\nAs an aside, have you tested this particular code flow (vs the hybrid approach). Did the XML look the same? Maybe this isn\u0027t even necessary but I can\u0027t personally say for sure :)","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                                    vif[\u0027vnic_type\u0027],"},{"line_number":296,"context_line":"                                    host)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":299,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        return conf"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_3d92e0a0","side":"PARENT","line":299,"range":{"start_line":298,"start_character":0,"end_line":299,"end_character":70},"in_reply_to":"9f6a8fd7_92b1a5e4","updated":"2018-05-01 17:53:14.000000000","message":"you\u0027re right, we do need a _set_config_VIFGeneric. as previously noted in my other comment, I missed it based on an assumption.\n\nI haven\u0027t been able to verify this path though - the default flow as of now is coming to VIFBridge i.e. hybrid. Unfortunately I haven\u0027t been able to track down when this would be triggered. I\u0027ve added a _set_config_VIFGeneric out of FOMO :|","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        v1_name, v2_name \u003d self.get_veth_pair_names(vif[\u0027id\u0027])"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if not linux_net_utils.device_exists(br_name):"},{"line_number":674,"context_line":"            nova.privsep.libvirt.add_bridge(br_name)"},{"line_number":675,"context_line":"            nova.privsep.libvirt.zero_bridge_forward_delay(br_name)"},{"line_number":676,"context_line":"            nova.privsep.libvirt.disable_bridge_stp(br_name)"},{"line_number":677,"context_line":"            nova.privsep.libvirt.disable_multicast_snooping(br_name)"},{"line_number":678,"context_line":"            nova.privsep.libvirt.disable_ipv6(br_name)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        if not linux_net_utils.device_exists(v2_name):"},{"line_number":681,"context_line":"            mtu \u003d vif[\u0027network\u0027].get_meta(\u0027mtu\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_32df79d7","side":"PARENT","line":678,"range":{"start_line":674,"start_character":0,"end_line":678,"end_character":54},"updated":"2018-05-01 09:30:26.000000000","message":"You might check to see if any of these have callers still. It\u0027s a bit annoying that we can\u0027t validate this with linters but such is Python.","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        v1_name, v2_name \u003d self.get_veth_pair_names(vif[\u0027id\u0027])"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        if not linux_net_utils.device_exists(br_name):"},{"line_number":674,"context_line":"            nova.privsep.libvirt.add_bridge(br_name)"},{"line_number":675,"context_line":"            nova.privsep.libvirt.zero_bridge_forward_delay(br_name)"},{"line_number":676,"context_line":"            nova.privsep.libvirt.disable_bridge_stp(br_name)"},{"line_number":677,"context_line":"            nova.privsep.libvirt.disable_multicast_snooping(br_name)"},{"line_number":678,"context_line":"            nova.privsep.libvirt.disable_ipv6(br_name)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        if not linux_net_utils.device_exists(v2_name):"},{"line_number":681,"context_line":"            mtu \u003d vif[\u0027network\u0027].get_meta(\u0027mtu\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_dd908498","side":"PARENT","line":678,"range":{"start_line":674,"start_character":0,"end_line":678,"end_character":54},"in_reply_to":"9f6a8fd7_32df79d7","updated":"2018-05-01 17:53:14.000000000","message":"Done.\nAlso removed a couple of other methods from the same privsep handler that I didn\u0027t find usage for nova and being used in the code removed here.","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1ce960de27fcbceb3553c52c73d5dd8f017bc5b3","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":460,"context_line":"        return conf"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def _set_config_VIFGeneric(self, instance, vif, conf, host):"},{"line_number":463,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":464,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_cf6c4138","line":462,"updated":"2018-05-02 08:07:44.000000000","message":"I guess you can also add a VIFIvs object in os-vif that will extends the Gerneric vif type. But it\u0027s fine to have used that one.","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"495fa9df3e833db414cf055c9aba7b809176a601","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":460,"context_line":"        return conf"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def _set_config_VIFGeneric(self, instance, vif, conf, host):"},{"line_number":463,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":464,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_1d4d8a71","line":462,"in_reply_to":"9f6a8fd7_cf6c4138","updated":"2018-05-02 14:02:06.000000000","message":"I thought that initially, but this is just a generic Ethernet-type device so I don\u0027t think it\u0027s necessary after all","commit_id":"6d4f0c55fe1ef8173b4b227d35dd8199216790d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ee84cc683880fd2ebac10fe54d6c667c2d858140","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027],"},{"line_number":263,"context_line":"                                    host)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        designer.set_vif_host_backend_bridge_config("},{"line_number":266,"context_line":"            conf, self.get_bridge_name(vif),"},{"line_number":267,"context_line":"            self.get_vif_devname(vif))"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_1756e15d","side":"PARENT","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":51},"updated":"2018-05-08 18:22:01.000000000","message":"You can also remove this method now.","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"ef6d1cf56789db5ffad14d9761fec501ed69f89b","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027],"},{"line_number":263,"context_line":"                                    host)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        designer.set_vif_host_backend_bridge_config("},{"line_number":266,"context_line":"            conf, self.get_bridge_name(vif),"},{"line_number":267,"context_line":"            self.get_vif_devname(vif))"},{"line_number":268,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_e09fcb00","side":"PARENT","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":51},"in_reply_to":"5f7c97a3_1756e15d","updated":"2018-05-09 13:02:09.000000000","message":"+1","commit_id":"0a642e2eee8d430ddcccf2947aedcca1a0a0b005"}],"releasenotes/notes/move-ivs-plug-unplug-to-separate-os-vif-plugin-f7ee42da4ed9739b.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c1b12e35d348aa4e863d83cc38d4cf2d5f5600b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    under ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Since this is"},{"line_number":8,"context_line":"    specific to Big Switch Network\u0027s solution, the installation would be driven"},{"line_number":9,"context_line":"    by the vendor."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9f6a8fd7_14026a0c","line":9,"range":{"start_line":7,"start_character":59,"end_line":9,"end_character":18},"updated":"2018-04-30 21:41:33.000000000","message":"Umm, what if I have Big Switch as my backend SDN but I\u0027m deploying openstack (including nova/neutron/os-vif) myself? In that case I don\u0027t care about the vendor, right? I just need to know that I need https://github.com/bigswitch/os-vif-bigswitch before I can upgrade nova-compute.\n\nAlso, since https://github.com/bigswitch/os-vif-bigswitch isn\u0027t released, that\u0027s kind of hard isn\u0027t it? In other words, someone deploying this would have to package and install it themselves since it\u0027s not released to pypi?\n\nOr does installing Big Switch SDN itself install the https://github.com/bigswitch/os-vif-bigswitch package on the host? If so, do you have a link to product documentation that makes that clear?","commit_id":"743c2a23ceb91fd351ac4d20e49088a15adfe927"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"55be498cd01e29691cfbd5cda39bd2de65544b80","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    under ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Since this is"},{"line_number":8,"context_line":"    specific to Big Switch Network\u0027s solution, the installation would be driven"},{"line_number":9,"context_line":"    by the vendor."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9f6a8fd7_85087c91","line":9,"range":{"start_line":7,"start_character":59,"end_line":9,"end_character":18},"in_reply_to":"9f6a8fd7_016309de","updated":"2018-05-01 15:24:21.000000000","message":"\u003e I was hiding the steps in order to offload that to Big Switch Networks.\n\nRight, this is an open source project, so we shouldn\u0027t say things like \"just get this from a vendor\". Otherwise people shouldn\u0027t be doing open source in the first place.","commit_id":"743c2a23ceb91fd351ac4d20e49088a15adfe927"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"249f9b797c8f82f5d7c4a1d7c198ea8040056f24","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    under ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Since this is"},{"line_number":8,"context_line":"    specific to Big Switch Network\u0027s solution, the installation would be driven"},{"line_number":9,"context_line":"    by the vendor."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9f6a8fd7_016309de","line":9,"range":{"start_line":7,"start_character":59,"end_line":9,"end_character":18},"in_reply_to":"9f6a8fd7_08632ede","updated":"2018-05-01 02:48:37.000000000","message":"ah, let me take a look. regarding the how/where, os-vif-bigswitch is uploaded to pypi - just like all Openstack packages: https://pypi.org/project/os-vif-bigswitch/\nso if an existing user wanted to upgrade and install the package themselves, its possible to do so. I was hiding the steps in order to offload that to Big Switch Networks. I should probably give a general idea here, so that its not completely unknown :)","commit_id":"743c2a23ceb91fd351ac4d20e49088a15adfe927"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60e1db991de15dfddc39a9d98ec2651e2d6a8db8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    under ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Since this is"},{"line_number":8,"context_line":"    specific to Big Switch Network\u0027s solution, the installation would be driven"},{"line_number":9,"context_line":"    by the vendor."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9f6a8fd7_08632ede","line":9,"range":{"start_line":7,"start_character":59,"end_line":9,"end_character":18},"in_reply_to":"9f6a8fd7_14026a0c","updated":"2018-04-30 21:48:55.000000000","message":"I think the agilio_ovs vif type is the one other case I remember like this, so maybe their release note might be a helpful template:\n\nhttps://review.openstack.org/#/c/483459/17/releasenotes/notes/netronome-smartnic-enablement-d3897fb294429282.yaml\n\nAlthough that was adding support for a new vif type, not changing how/where the existing support was implemented.","commit_id":"743c2a23ceb91fd351ac4d20e49088a15adfe927"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    called ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Releases are"},{"line_number":8,"context_line":"    available on https://pypi.org/project/os-vif-bigswitch/. For more"},{"line_number":9,"context_line":"    information about support matrix with Big Cloud Fabric (BCF) release"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_72fe5139","line":6,"range":{"start_line":5,"start_character":33,"end_line":6,"end_character":54},"updated":"2018-05-01 09:30:26.000000000","message":"This package is a requirement on compute nodes when using...","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    called ``os-vif-bigswitch``. The newly created package ``os-vif-bigswitch``"},{"line_number":6,"context_line":"    would be a requirement on compute nodes when using"},{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Releases are"},{"line_number":8,"context_line":"    available on https://pypi.org/project/os-vif-bigswitch/. For more"},{"line_number":9,"context_line":"    information about support matrix with Big Cloud Fabric (BCF) release"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_3dd74052","line":6,"range":{"start_line":5,"start_character":33,"end_line":6,"end_character":54},"in_reply_to":"9f6a8fd7_72fe5139","updated":"2018-05-01 17:53:14.000000000","message":"Done","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"25314108dd907c0795aff8f42d946bd5489091e7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Releases are"},{"line_number":8,"context_line":"    available on https://pypi.org/project/os-vif-bigswitch/. For more"},{"line_number":9,"context_line":"    information about support matrix with Big Cloud Fabric (BCF) release"},{"line_number":10,"context_line":"    versions please contact Big Switch Networks at"},{"line_number":11,"context_line":"    https://www.bigswitch.com/support."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_12fd9539","line":10,"range":{"start_line":10,"start_character":11,"end_line":10,"end_character":12},"updated":"2018-05-01 09:30:26.000000000","message":",","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"32f524c34caa9267fb81e46451a63c5b7f422a17","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    ``networking-bigswitch`` as neutron ML2 and L3 driver. Releases are"},{"line_number":8,"context_line":"    available on https://pypi.org/project/os-vif-bigswitch/. For more"},{"line_number":9,"context_line":"    information about support matrix with Big Cloud Fabric (BCF) release"},{"line_number":10,"context_line":"    versions please contact Big Switch Networks at"},{"line_number":11,"context_line":"    https://www.bigswitch.com/support."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_dde5e439","line":10,"range":{"start_line":10,"start_character":11,"end_line":10,"end_character":12},"in_reply_to":"9f6a8fd7_12fd9539","updated":"2018-05-01 17:53:14.000000000","message":"Done","commit_id":"cecf286a9f6886f0b103e68c80ccf2750fb64250"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ee84cc683880fd2ebac10fe54d6c667c2d858140","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    called ``os-vif-bigswitch``. This package is a requirement on compute"},{"line_number":6,"context_line":"    nodes when using ``networking-bigswitch`` as neutron ML2 and L3 driver."},{"line_number":7,"context_line":"    Releases are available on https://pypi.org/project/os-vif-bigswitch/. Major"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_576d3902","line":4,"updated":"2018-05-08 18:22:01.000000000","message":"This should mention the libvirt driver somewhere since this is only something that uses libvirt needs to care about.\n\nSo maybe, \"This release moves the libvirt driver ``IVS`` VIF plug-unplug to a separate package...\".","commit_id":"aa597f06443592fec3069d095fa8034c5c402a93"},{"author":{"_account_id":20751,"name":"Aditya Vaja","email":"wolverine.av@gmail.com","username":"wolverineav"},"change_message_id":"ef6d1cf56789db5ffad14d9761fec501ed69f89b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This release moves the ``IVS`` VIF plug-unplug to a separate package"},{"line_number":5,"context_line":"    called ``os-vif-bigswitch``. This package is a requirement on compute"},{"line_number":6,"context_line":"    nodes when using ``networking-bigswitch`` as neutron ML2 and L3 driver."},{"line_number":7,"context_line":"    Releases are available on https://pypi.org/project/os-vif-bigswitch/. Major"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5f7c97a3_a06d5333","line":4,"in_reply_to":"5f7c97a3_576d3902","updated":"2018-05-09 13:02:09.000000000","message":"ah, will do","commit_id":"aa597f06443592fec3069d095fa8034c5c402a93"}]}
