)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"fb3bf3efe3d6ec79c08910363847387e968e9d35","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003csean.k.mooney@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-24 19:28:29 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"convert libvirt dirver to use os-vif for vhost-user with ovs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change convert the libvir vif driver to use os-vif"},{"line_number":10,"context_line":"  for plug and unplug actions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_07880c70","line":7,"range":{"start_line":7,"start_character":16,"end_line":7,"end_character":22},"updated":"2016-06-26 07:33:13.000000000","message":"typo: driver","commit_id":"8163ecafd333fda9753fea64ce7d7e7804d9fed1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65d05d04e2ce123cba7ffe609be6015eb1692fcc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003csean.k.mooney@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-24 19:28:29 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"convert libvirt dirver to use os-vif for vhost-user with ovs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change convert the libvir vif driver to use os-vif"},{"line_number":10,"context_line":"  for plug and unplug actions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_c4cc3037","line":7,"range":{"start_line":7,"start_character":16,"end_line":7,"end_character":22},"in_reply_to":"3aaa91ec_07880c70","updated":"2016-06-27 09:08:45.000000000","message":"thanks ill change in next version.\n\ni need to write a commit hook to run spellcheck on my commits :)","commit_id":"8163ecafd333fda9753fea64ce7d7e7804d9fed1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f5372f833a904d4152422c7566b9ab6014d3ffe7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"convert libvirt driver to use os-vif for vhost-user with ovs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change convert the libvir vif driver to use os-vif"},{"line_number":10,"context_line":"  for plug and unplug actions."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I9e847046b8a18b7851e08d7367aad9d9feb4bec8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa7ab95a_a5d69d4c","line":9,"range":{"start_line":9,"start_character":26,"end_line":9,"end_character":32},"updated":"2016-08-30 10:07:48.000000000","message":"*libvirt","commit_id":"8d2574d860a9a498fe2a237898bae2862edaaac1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"94d29365eab109b608b0f7315ac128913c723125","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"convert libvirt driver to use os-vif for vhost-user with ovs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change convert the libvir vif driver to use os-vif"},{"line_number":10,"context_line":"  for plug and unplug actions."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I9e847046b8a18b7851e08d7367aad9d9feb4bec8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa7ab95a_58a76cbc","line":9,"range":{"start_line":9,"start_character":26,"end_line":9,"end_character":32},"in_reply_to":"fa7ab95a_a5d69d4c","updated":"2016-08-30 13:30:19.000000000","message":"thanks ill fix if i respin :)","commit_id":"8d2574d860a9a498fe2a237898bae2862edaaac1"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"f314c3c71d5c0a21f7fce7921ba7c7e51ed4126e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":285,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":286,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":287,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":288,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":290,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_d7766ad7","line":287,"updated":"2016-08-19 10:30:51.000000000","message":"Should this line be inside condition?","commit_id":"8f5c4ba614bedf0e5ce97c3862a26a7fe584eb9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b67763f09c2e1933edc7621572a2f8ad84bd9c7c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":285,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":286,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":287,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":288,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":290,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_f7b5887e","line":287,"in_reply_to":"1ac06dbe_d7104cab","updated":"2016-08-19 11:22:10.000000000","message":"ah yes am ya that can be move inside the conditional.\ni\u0027ll do so in the next revision.","commit_id":"8f5c4ba614bedf0e5ce97c3862a26a7fe584eb9a"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"6cbc9bcbddd93bcc9c121b5296b0144c2a646635","unresolved":false,"context_lines":[{"line_number":284,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":285,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":286,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":287,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":288,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":290,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_d7104cab","line":287,"in_reply_to":"1ac06dbe_d724ccb0","updated":"2016-08-19 11:18:21.000000000","message":"Sorry, I mean all profile \u003d ... line. I see profile is used \nonly inside:\nif vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):","commit_id":"8f5c4ba614bedf0e5ce97c3862a26a7fe584eb9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"54694c5607767d2a704652245126d918a5a163d0","unresolved":false,"context_lines":[{"line_number":284,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":285,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":286,"context_line":"    profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":287,"context_line":"        interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":288,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":289,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":290,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_d724ccb0","line":287,"in_reply_to":"3ac371cc_d7766ad7","updated":"2016-08-19 11:13:23.000000000","message":"if \u0027ovs_interfaceid\u0027 is not set the get will return None which will cause the vif[\u0027id\u0027] to be used instead which should always be set so I think it\u0027s fine but I could change it if you prefer.","commit_id":"8f5c4ba614bedf0e5ce97c3862a26a7fe584eb9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0ebc2826cc8bee4e6e322e7a637a4e21b80291db","unresolved":false,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    try:"},{"line_number":391,"context_line":"        vifobj \u003d func(vif)"},{"line_number":392,"context_line":"        LOG.debug(\"Converted object %s\", vifobj)"},{"line_number":393,"context_line":"        return vifobj"},{"line_number":394,"context_line":"    except NotImplementedError:"},{"line_number":395,"context_line":"        LOG.debug(\"No conversion for VIF type %s yet\","}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_6c625218","line":392,"updated":"2016-08-31 17:30:51.000000000","message":"Ack from intel ci:\n\n2016-08-26 14:43:58.909 30272 DEBUG nova.network.os_vif_util [req-db698e71-8d4c-42ad-94d1-e9dc4012828e tempest-TestNetworkAdvancedServerOps-850235663 tempest-TestNetworkAdvancedServerOps-850235663] Converted object VIFVHostUser(active\u003dFalse,address\u003dfa:16:3e:62:b7:50,has_traffic_filtering\u003dFalse,id\u003d734fac50-5934-41d8-961f-ec1c38993438,mode\u003d\u0027client\u0027,network\u003dNetwork(537ae646-23fc-449f-8898-3e73e8aca9c8),path\u003d\u0027/var/run/openvswitch/vhu734fac50-59\u0027,plugin\u003d\u0027ovs\u0027,port_profile\u003dVIFPortProfileBase,preserve_on_delete\u003dFalse) nova_to_osvif_vif /opt/stack/new/nova/nova/network/os_vif_util.py:392\n\nhttp://intel-openstack-ci-logs.ovh/48/334048/5/check/tempest-dsvm-ovsdpdk-nfv-networking/127e4cb/logs/screen-n-cpu.txt.gz","commit_id":"8d2574d860a9a498fe2a237898bae2862edaaac1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9a715007f402afda6ba740b778830f7721510c","unresolved":false,"context_lines":[{"line_number":280,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":281,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":282,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":283,"context_line":"        profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_d53e7928","line":284,"range":{"start_line":283,"start_character":8,"end_line":284,"end_character":65},"updated":"2016-10-18 18:54:54.000000000","message":"Do we need to set profile_id on this object?\n\nhttps://github.com/openstack/os-vif/blob/1.1.0/os_vif/objects/vif.py#L160","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":280,"context_line":"# VIF_TYPE_VHOST_USER \u003d \u0027vhostuser\u0027"},{"line_number":281,"context_line":"def _nova_to_osvif_vif_vhostuser(vif):"},{"line_number":282,"context_line":"    if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":283,"context_line":"        profile \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_e5fe6804","line":284,"range":{"start_line":283,"start_character":8,"end_line":284,"end_character":65},"in_reply_to":"fa6399be_d53e7928","updated":"2016-10-18 20:27:06.000000000","message":"i do not belive so no.\ni think that is a libvirt specific field that is currently unused by os-vif.\n\ndan can correct me but as far as i am aware there is no reason to set if for vhost-user and it is also not used for kernel vhost i.e. VIF_OVS above.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9a715007f402afda6ba740b778830f7721510c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_7564cd48","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"updated":"2016-10-18 18:54:54.000000000","message":"This isn\u0027t defined in VIFVHostUser or VIFBase:\n\nhttps://github.com/openstack/os-vif/blob/1.1.0/os_vif/objects/vif.py#L112\n\nIt\u0027s in VIFGeneric:\n\nhttps://github.com/openstack/os-vif/blob/1.1.0/os_vif/objects/vif.py#L55","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f5c569806669886bf25b28e15b9d69708868184","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_120322b9","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"in_reply_to":"fa6399be_344a29c6","updated":"2016-11-10 20:27:16.000000000","message":"i have removed this in next version.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d2460770859f3666131aeef0b3c8a7724586583","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_344a29c6","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"in_reply_to":"fa6399be_54a95d7a","updated":"2016-10-19 16:26:43.000000000","message":"Huh, yeah I guess:\n\nhttps://github.com/openstack/oslo.versionedobjects/blob/1.18.0/oslo_versionedobjects/base.py#L307\n\nSeems like a bug. I\u0027d think you could just check if the attribute is in self.obj_fields and blow up if not.\n\nHowever, I think there are cases in nova-network code where attributes are set on the object which aren\u0027t defined in fields and they aren\u0027t persisted, they are just used as a way to get information from the network API to the nova API. So we\u0027d break that if we clamped down. You could maybe add a special \u0027validate_fields\u0027 kwarg to the VersionedObject constructor to toggle the behavior though and bypass when you need to.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_a5be30fd","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"in_reply_to":"fa6399be_7564cd48","updated":"2016-10-18 20:27:06.000000000","message":"yes you are correct we do not need to pass the vif name here as it is constucted here:\nhttps://github.com/openstack/os-vif/blob/ca5d7d6ff170f734429d3fbebd29dbe3fa5880da/vif_plug_ovs/ovs.py#L102\n\ni will remove this.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"204e3414553dd5c43e98fd530984b945239f1b94","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_b95ab481","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"in_reply_to":"fa6399be_a5be30fd","updated":"2016-10-19 16:14:38.000000000","message":"OK, honestly I\u0027m not sure how this doesn\u0027t blow up when trying to construct the os-vif object since the field isn\u0027t defined on that type of object.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f22f8b9d82a53656a5added955d667618aaeb3ea","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":285,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":286,"context_line":"                                port_profile\u003dprofile, plugin\u003d\"ovs\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_54a95d7a","line":287,"range":{"start_line":287,"start_character":32,"end_line":287,"end_character":40},"in_reply_to":"fa6399be_b95ab481","updated":"2016-10-19 16:21:09.000000000","message":"This is one of my pet hates of ovo - it happily accepts *any* attribute name in the constructor and so silently does the wrong thing if you mis-spell attribute names.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9a715007f402afda6ba740b778830f7721510c","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_95b5e17f","line":291,"range":{"start_line":291,"start_character":47,"end_line":291,"end_character":53},"updated":"2016-10-18 18:54:54.000000000","message":"This defaults to \u0027server\u0027 today so why change it?\n\nhttps://github.com/openstack/nova/blob/99b30d89d1891ab82278b1ec055680fcf0a80c67/nova/virt/libvirt/vif.py#L392","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"204e3414553dd5c43e98fd530984b945239f1b94","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_d40c8d3d","line":291,"range":{"start_line":291,"start_character":47,"end_line":291,"end_character":53},"in_reply_to":"fa6399be_85d68cc1","updated":"2016-10-19 16:14:38.000000000","message":"So do we need to even set the mode field? If nova shouldn\u0027t set it, or at least shouldn\u0027t assume a default value, should we just not set the field if it\u0027s not provided in the vif details? What will os-vif do if mode isn\u0027t set?\n\nAlternatively, if \u0027server\u0027 is the wrong default for nova to use today, then I\u0027d be OK with using \u0027client\u0027 here if you push a change below this one that changes the default in the old vif plugging code to use \u0027client\u0027 as well, given the justifications above. I just want to be consistent.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f5c569806669886bf25b28e15b9d69708868184","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_d2fc4aba","line":291,"range":{"start_line":291,"start_character":47,"end_line":291,"end_character":53},"in_reply_to":"fa6399be_9209422f","updated":"2016-11-10 20:27:16.000000000","message":"i will set this to server as that is the current default. and we can update later if it makes sense to do so.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_85d68cc1","line":291,"range":{"start_line":291,"start_character":47,"end_line":291,"end_character":53},"in_reply_to":"fa6399be_95b5e17f","updated":"2016-10-18 20:27:06.000000000","message":"while vpp and snabswitch supported qemu as both client and server for some time, support for server mode with ovs was only added to ovs in the 2.6 release this septemeber and  also requires dpdk 16.07 and qemu 2.6 to work. \n\nthe default in nova is largely not relevent as it is always overridden by neutron. in the context of ovs neutron only suppots client mode currently.\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/mech_driver/mech_openvswitch.py#L124\n\ni will be enabling server mode support as part of ocata once nova uses os-vif for vhost-user. \nhttps://review.openstack.org/#/c/357555/ adds support to os-vif and https://review.openstack.org/#/c/344997/ enables support in the neuron ovs ml2 driver. i will need a similar change in networking-ovn and networking-odl.\n\ni can make the default server but the default value should never be used as nova does not have the infomation need to determin if the swtiching backend(ovs/vpp...) can support server mode.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"afc06696ee3a3d223b99d9335c224c54d3ec90f9","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":289,"context_line":"            obj.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":290,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_9209422f","line":291,"range":{"start_line":291,"start_character":47,"end_line":291,"end_character":53},"in_reply_to":"fa6399be_d40c8d3d","updated":"2016-10-19 18:17:49.000000000","message":"currently os-vif dos not use the mode value but i will need to pass it ot support clinet and server mode ovs when as part of https://review.openstack.org/#/c/357555/2/vif_plug_ovs/ovs.py\n\nin that code i was assuming the caller had always set the mode. i think the appropriate action to take if this is not set is either for the caller to raise an excption here when construting the os-vif object or alternitivly i could raise an exception in os-vif when the value is used. in either case we probably should refuse to plug the port as i cannot determint the correct port type to use in ovs.(dpdkvhostuser or dpdkvhostuserclient)\n\nif neutron does not set the value today and \nhttps://github.com/openstack/nova/blob/5158ca7dcffd583dc8dd7c29b0a9a595d7de7dcf/nova/virt/libvirt/vif.py#L390-L413\nwas executed the vm would not works as both ovs and qemu would both try to be the vhost server. In that case i belive the vm would fail to spawn or if it did spawn it would not have network connectivity.\n\ni can push a change to update the default if that is what you would prefer? i can then rebase this change on top of that to keep the default change and delegation to os-vif seperate as you suggested.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9a715007f402afda6ba740b778830f7721510c","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_75676d25","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":70},"updated":"2016-10-18 18:54:54.000000000","message":"This is already done in _get_vif_instance above.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_8584ccb1","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":70},"in_reply_to":"fa6399be_75676d25","updated":"2016-10-18 20:27:06.000000000","message":"ok yes ill remove","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f5c569806669886bf25b28e15b9d69708868184","unresolved":false,"context_lines":[{"line_number":291,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027client\u0027)"},{"line_number":292,"context_line":"        obj.path \u003d vif[\u0027details\u0027].get("},{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_522f5a3e","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":70},"in_reply_to":"fa6399be_8584ccb1","updated":"2016-11-10 20:27:16.000000000","message":"Done","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3dea2155c346fe2457b4c4cfe452a2d7c234bfb","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"},{"line_number":298,"context_line":"        return obj"},{"line_number":299,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_c2b95a17","line":296,"updated":"2016-10-18 19:44:59.000000000","message":"Need a unit test for this case.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f5c569806669886bf25b28e15b9d69708868184","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"},{"line_number":298,"context_line":"        return obj"},{"line_number":299,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a629dbe_a356aa03","line":296,"in_reply_to":"fa6399be_45a2b44c","updated":"2016-11-10 20:27:16.000000000","message":"Done","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":294,"context_line":"        obj.has_traffic_filtering \u003d vif.is_neutron_filtering_enabled()"},{"line_number":295,"context_line":"        if obj.path is None:"},{"line_number":296,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":297,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"},{"line_number":298,"context_line":"        return obj"},{"line_number":299,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_45a2b44c","line":296,"in_reply_to":"fa6399be_c2b95a17","updated":"2016-10-18 20:27:06.000000000","message":"ok i will add one. i taught there was one at somepint but i guess not.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"efc6b9f553b9aa1a594838f7c15190807fe38a4a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":290,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"},{"line_number":291,"context_line":"        path \u003d vif[\u0027details\u0027].get("},{"line_number":292,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET, None)"},{"line_number":293,"context_line":"        if path:"},{"line_number":294,"context_line":"            obj.path \u003d path"},{"line_number":295,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_ffc45341","line":292,"range":{"start_line":292,"start_character":48,"end_line":292,"end_character":52},"updated":"2016-11-23 14:45:53.000000000","message":"nit: the None default on a dict.get() call is redundant.","commit_id":"6720813d2db24d024a54897b4ff066e02c0a9d60"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"f314c3c71d5c0a21f7fce7921ba7c7e51ed4126e","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"        d.unplug(self.instance, self.vif_vhostuser_fp)"},{"line_number":1303,"context_line":"        mock_delete_fp_dev.assert_has_calls([mock.call(\u0027tap-xxx-yyy-zzz\u0027)])"},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"    def test_vhostuser_ovs_plug(self):"},{"line_number":1306,"context_line":""},{"line_number":1307,"context_line":"        calls \u003d {"},{"line_number":1308,"context_line":"            \u0027create_ovs_vif_port\u0027: ["}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_e6e7a0aa","side":"PARENT","line":1305,"updated":"2016-08-19 10:30:51.000000000","message":"Do we need to remove these tests?\nIf it\u0027s enabled it will fail with the error: privsep helper command exited non-zero. Maybe, we should mock some parts of os_vif in this case?","commit_id":"fb190f30a911658d8b0c4deaf43cbb8c9e35b672"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"54694c5607767d2a704652245126d918a5a163d0","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"        d.unplug(self.instance, self.vif_vhostuser_fp)"},{"line_number":1303,"context_line":"        mock_delete_fp_dev.assert_has_calls([mock.call(\u0027tap-xxx-yyy-zzz\u0027)])"},{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"    def test_vhostuser_ovs_plug(self):"},{"line_number":1306,"context_line":""},{"line_number":1307,"context_line":"        calls \u003d {"},{"line_number":1308,"context_line":"            \u0027create_ovs_vif_port\u0027: ["}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_d7132c0c","side":"PARENT","line":1305,"in_reply_to":"1ac06dbe_e6e7a0aa","updated":"2016-08-19 11:13:23.000000000","message":"oh good catch\n\nthese tests should still be deleted but i forgot to delete\ndef plug_vhostuser_ovs(self, instance, vif):\nand\ndef unplug_vhostuser_ovs(self, instance, vif):","commit_id":"fb190f30a911658d8b0c4deaf43cbb8c9e35b672"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a5bf699a3aa68fb7dc1f2fe723926bd7a4829879","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            address\u003d\"22:52:25:62:e2:aa\","},{"line_number":436,"context_line":"            plugin\u003d\"openvswitch\","},{"line_number":437,"context_line":"            vif_name\u003d\"vhudc065497-3c\","},{"line_number":438,"context_line":"            path \u003d \u0027/var/run/openvswitch/vhudc065497-3c\u0027,"},{"line_number":439,"context_line":"            mode \u003d \u0027client\u0027,"},{"line_number":440,"context_line":"            port_profile\u003dself.os_vif_ovs_prof,"},{"line_number":441,"context_line":"            network\u003dself.os_vif_network)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_54011dae","line":438,"range":{"start_line":438,"start_character":16,"end_line":438,"end_character":19},"updated":"2016-12-05 21:55:43.000000000","message":"nit: the spaces around \u003d in a kwarg are weird here, especially since you aren\u0027t being consistent with this format.","commit_id":"9c97b8d5b2203b9ad1bad1bee56ac07e51864082"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3dea2155c346fe2457b4c4cfe452a2d7c234bfb","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                    inst_type, virt_type)"},{"line_number":404,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":405,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":406,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":407,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":408,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":409,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":410,"context_line":"            conf.driver_name \u003d None"},{"line_number":411,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        return conf"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_821be21b","line":411,"range":{"start_line":406,"start_character":8,"end_line":411,"end_character":36},"updated":"2016-10-18 19:44:59.000000000","message":"Is this something we should care about for the new vhostuser os-vif stuff?","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"204e3414553dd5c43e98fd530984b945239f1b94","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                    inst_type, virt_type)"},{"line_number":404,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":405,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":406,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":407,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":408,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":409,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":410,"context_line":"            conf.driver_name \u003d None"},{"line_number":411,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        return conf"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_146e0596","line":411,"range":{"start_line":406,"start_character":8,"end_line":411,"end_character":36},"in_reply_to":"fa6399be_6226ce17","updated":"2016-10-19 16:14:38.000000000","message":"OK so with os-vif I guess we still call get_base_config from _get_config_os_vif which calls designer.set_vif_guest_frontend_config which sets driver_name and vhost_queues on the config.\n\nWith the old non-os-vif stuff, we\u0027d call get_config_vhostuser which would call get_base_config. And as we see here, we have the version check to null these values out. So I\u0027m assuming you need the same thing to happen for the new _set_config_VIFVHostUser method. I\u0027d use a separate private method for both the old and new style methods to call to null out the config and do the version check.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"87a1d3d53a96590c774b64eb517d334869d5261a","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                    inst_type, virt_type)"},{"line_number":404,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":405,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":406,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":407,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":408,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":409,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":410,"context_line":"            conf.driver_name \u003d None"},{"line_number":411,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        return conf"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_6226ce17","line":411,"range":{"start_line":406,"start_character":8,"end_line":411,"end_character":36},"in_reply_to":"fa6399be_821be21b","updated":"2016-10-18 20:27:06.000000000","message":"yes this is still valid.\nif you use libvirt\u003c1.2.17 you cannot enable multiqueue.\nthere are other requirement too such as i bleive qemu 2.2\novs 2.4 and dpdk 2.2.\n\nim not sure if those are the correct versions but enabling or disabling multi queue is version dependent.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3dea2155c346fe2457b4c4cfe452a2d7c234bfb","unresolved":false,"context_lines":[{"line_number":443,"context_line":"        self._set_config_VIFPortProfile(instance, vif, conf)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def _set_config_VIFVHostUser(self, instance, vif, conf):"},{"line_number":446,"context_line":"        conf.net_type \u003d \"vhostuser\""},{"line_number":447,"context_line":"        conf.vhostuser_type \u003d \"unix\""},{"line_number":448,"context_line":"        conf.vhostuser_path \u003d vif.path"},{"line_number":449,"context_line":"        conf.vhostuser_mode \u003d vif.mode"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":452,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa6399be_02d6f226","line":449,"range":{"start_line":446,"start_character":8,"end_line":449,"end_character":38},"updated":"2016-10-18 19:44:59.000000000","message":"You could just re-use:\n\ndesigner.set_vif_host_backend_vhostuser_config\n\nBut I\u0027m not sure if danpb wants that to go away yet or what.","commit_id":"55bd0f81288be39d304eb7c6ec7dbf85556dbf78"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"efc6b9f553b9aa1a594838f7c15190807fe38a4a","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                    inst_type, virt_type)"},{"line_number":407,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":408,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":409,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":410,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":411,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":412,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":413,"context_line":"            conf.driver_name \u003d None"},{"line_number":414,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        return conf"},{"line_number":417,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_5ff38773","line":414,"range":{"start_line":409,"start_character":8,"end_line":414,"end_character":36},"updated":"2016-11-23 14:45:53.000000000","message":"I had a comment in the previous patch set about this:\n\n\u003e OK so with os-vif I guess we still call get_base_config from\n\u003e _get_config_os_vif which calls\n\u003e designer.set_vif_guest_frontend_config which sets\n\u003e driver_name and vhost_queues on the config.\n\u003e \n\u003e With the old non-os-vif stuff, we\u0027d call \n\u003e get_config_vhostuser which would call get_base_config. And \u003e as we see here, we have the version check to null these \n\u003e values out. So I\u0027m assuming you need the same thing to \n\u003e happen for the new _set_config_VIFVHostUser method. I\u0027d use \u003e a separate private method for both the old and new style \n\u003e methods to call to null out the config and do the version \n\u003e check.\n\nSo don\u0027t we need the same check in _set_config_VIFVHostUser?","commit_id":"6720813d2db24d024a54897b4ff066e02c0a9d60"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f464f407e1ce6978f92b0d94c0261ed2c896836d","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                    inst_type, virt_type)"},{"line_number":407,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":408,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":409,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":410,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":411,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":412,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":413,"context_line":"            conf.driver_name \u003d None"},{"line_number":414,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        return conf"},{"line_number":417,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_02f294d2","line":414,"range":{"start_line":409,"start_character":8,"end_line":414,"end_character":36},"in_reply_to":"5a74a57a_5ff38773","updated":"2016-11-23 15:26:34.000000000","message":"quick chat on irc on this point.\nwill add check to _set_config_VIFVHostUser\nand have seperate commit to change function signeture of \n_set_config_* to add host\u003dnone","commit_id":"6720813d2db24d024a54897b4ff066e02c0a9d60"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ef7ee2e9e919f03714bb58bfc010ef5e270258e","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    def _set_config_VIFVHostUser(self, instance, vif, conf, host\u003dNone):"},{"line_number":449,"context_line":"        designer.set_vif_host_backend_vhostuser_config("},{"line_number":450,"context_line":"            conf, vif.mode, vif.path)"},{"line_number":451,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":452,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":453,"context_line":"            conf.driver_name \u003d None"},{"line_number":454,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":457,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_586e36ca","line":454,"range":{"start_line":451,"start_character":8,"end_line":454,"end_character":36},"updated":"2016-12-01 20:27:04.000000000","message":"We should have a unit test for this case.","commit_id":"29885d5c7723e63751bec890090f37d359794288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3681f6520f9740acb719f436f9216e8c6e0147a7","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    def _set_config_VIFVHostUser(self, instance, vif, conf, host\u003dNone):"},{"line_number":449,"context_line":"        designer.set_vif_host_backend_vhostuser_config("},{"line_number":450,"context_line":"            conf, vif.mode, vif.path)"},{"line_number":451,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":452,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":453,"context_line":"            conf.driver_name \u003d None"},{"line_number":454,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def _set_config_VIFPortProfileOpenVSwitch(self, profile, conf):"},{"line_number":457,"context_line":"        conf.vporttype \u003d \"openvswitch\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_18883e22","line":454,"range":{"start_line":451,"start_character":8,"end_line":454,"end_character":36},"in_reply_to":"3a71b18c_586e36ca","updated":"2016-12-01 20:53:59.000000000","message":"ok ill add in the next patchset.","commit_id":"29885d5c7723e63751bec890090f37d359794288"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ef7ee2e9e919f03714bb58bfc010ef5e270258e","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        \"\"\""},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        # Do the config that\u0027s common to all vif types"},{"line_number":487,"context_line":"        conf \u003d self.get_base_config(instance, vif.address, image_meta,"},{"line_number":488,"context_line":"                                    inst_type, virt_type)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # Do the VIF type specific config"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_b83e6ab6","line":487,"updated":"2016-12-01 20:27:04.000000000","message":"OK, so this calls designer.set_vif_guest_frontend_config which might set driver_name and vhost_queues on the conf:\n\n    if driver is not None:\n        conf.driver_name \u003d driver\n    if queues is not None:\n        conf.vhost_queues \u003d queues\n\nAnd then that\u0027s why we need to check the version and null them out in _set_config_VIFVHostUser. Just making sure I\u0027m following as it\u0027s a lot of behind the scenes stuff modifying the same conf object throughout this code, so it\u0027s a bit hard to follow.","commit_id":"29885d5c7723e63751bec890090f37d359794288"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3681f6520f9740acb719f436f9216e8c6e0147a7","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        \"\"\""},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        # Do the config that\u0027s common to all vif types"},{"line_number":487,"context_line":"        conf \u003d self.get_base_config(instance, vif.address, image_meta,"},{"line_number":488,"context_line":"                                    inst_type, virt_type)"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # Do the VIF type specific config"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_b3ddab72","line":487,"in_reply_to":"3a71b18c_b83e6ab6","updated":"2016-12-01 20:53:59.000000000","message":"yes you are correct.\nself.get_base_config on line 132 retirves the request for multi queue from the image metadata and then passes this to \ndesigner.set_vif_guest_frontend_config which sets the queus that we then null out if the libvirt version dose not support multi queue. \n\ntechnically we should also do this check for any virtio interfere not just vhost-user but kernel vhost has supported multiqueue for years and i dont think there is a libvirt that meets openstack minimum requirements that does not support requesting multi queue with kernel vhost hence why we only check with vhost-user as that is much newer.\n\nin general this file is a little hard to follow.\n\nit is compounded by the fact that we have legacy functions\nlike get_config_vhostuser which construct and retrun a config object representing the request for vhostuser interface \n\nand \n\nos-vif functions like _set_config_VIFVHostUser which you pass the conf into and they internally modify it with the same config sections generated by the get methods.\n\nthere were two ways to handel this and we did both.","commit_id":"29885d5c7723e63751bec890090f37d359794288"}],"requirements.txt":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c26e483cc298ffba60f7043ead10a14c66c5f6c7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"},{"line_number":54,"context_line":"oslo.versionedobjects\u003e\u003d1.9.1 # Apache-2.0"},{"line_number":55,"context_line":"os-brick!\u003d1.4.0,\u003e\u003d1.3.0 # Apache-2.0"},{"line_number":56,"context_line":"-e git+https://git.openstack.org/openstack/os-vif@master#egg\u003dos_vif"},{"line_number":57,"context_line":"os-win\u003e\u003d0.2.3 # Apache-2.0"},{"line_number":58,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":59,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":1,"id":"3aaa91ec_348e2dd0","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":67},"updated":"2016-06-24 19:08:39.000000000","message":"by the way this is just a workaround to have the code work until there is a new release of os-vif.\n\nthis will be removed before this code is merged.","commit_id":"05f134d0d1006403e764e296923a5e8b0b0c8e37"}]}
