)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0526f784ab0e641da92176b5c7c2cceeb4151cb0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Signed-off-by: Francesco Santoro \u003cfrancesco.santoro@6wind.com\u003e"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Iedb00f171bb198c86b843d315154bac5732b0af3"},{"line_number":12,"context_line":"Depends-on: Ibae8e2ae145b2b9ad2b4955825638dee9b56f0aa"},{"line_number":13,"context_line":"Implements: blueprint libvirt-os-vif-fastpath-vhostuser"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da4df55a_a2984c6b","line":12,"updated":"2016-12-28 23:46:23.000000000","message":"This really needs to be a Depends-On for the openstack/requirements repo change where the global-requirements file is updated to require a new minimum version that contains this os-vif change, which will probably get released as part of this:\n\nhttps://review.openstack.org/#/c/411988/","commit_id":"1ca1b88b5d6f88e53bfd863ead53c76248a7bc48"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d5629490ddccf60cbf8dd2371329f076622a5103","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"            # The name of the DVS port group will contain the neutron"},{"line_number":2091,"context_line":"            # network id"},{"line_number":2092,"context_line":"            bridge \u003d port[\u0027network_id\u0027]"},{"line_number":2093,"context_line":"        elif (vif_type \u003d\u003d network_model.VIF_TYPE_VHOSTUSER and"},{"line_number":2094,"context_line":"         port_details.get(network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG,"},{"line_number":2095,"context_line":"                          False)):"},{"line_number":2096,"context_line":"            bridge \u003d port_details.get(network_model.VIF_DETAILS_BRIDGE_NAME,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_86ebaeaf","line":2093,"updated":"2017-01-20 20:28:15.000000000","message":"nit: at some point in a later cleanup I\u0027d create a single if for the vhostuser type and then deal with ovs vs fastpath within that block.","commit_id":"f893e0232abadd2d22dbc3c84fd09e5f91d36778"}],"nova/network/os_vif_util.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27d0361fca356bfc15e55803b31bb032f69c57b0","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                plugin\u003d\"vhostuser_fp\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":289,"context_line":"        if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":290,"context_line":"            profile \u003d objects.vif.VIFPortProfileFPOpenVSwitch("},{"line_number":291,"context_line":"                    interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":292,"context_line":"            if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":293,"context_line":"                profile.bridge_name \u003d _get_hybrid_bridge_name(vif)"},{"line_number":294,"context_line":"                profile.hybrid_plug \u003d True"},{"line_number":295,"context_line":"            else:"},{"line_number":296,"context_line":"                if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":297,"context_line":"                    profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            profile \u003d objects.vif.VIFPortProfileFPBridge()"},{"line_number":300,"context_line":"            bridge \u003d vif[\u0027details\u0027].get(model.VIF_DETAILS_BRIDGE_NAME, None)"},{"line_number":301,"context_line":"            if bridge:"},{"line_number":302,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":303,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":304,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":305,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":306,"context_line":"        obj.port_profile \u003d profile"},{"line_number":307,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":308,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_dc72267c","line":305,"range":{"start_line":289,"start_character":9,"end_line":305,"end_character":62},"updated":"2016-12-13 16:46:01.000000000","message":"how is calico enabled?\n\nhttps://github.com/openstack/os-vif/blob/master/os_vif/objects/vif.py#L210-L220\n\nin the future i would like to pass the profile and the plugin name from neutron also so that the mech driver can explcitly say which one to use without requiring nova to figure it out.","commit_id":"23b9f64489f22b7cf7ecac0ca50830fb180b250b"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"275527472cbd1d9414c7760d47e91a07556f796f","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                plugin\u003d\"vhostuser_fp\","},{"line_number":287,"context_line":"                                vif_name\u003d_get_vif_name(vif))"},{"line_number":288,"context_line":"        profile \u003d objects.vif.VIFPortProfileBase()"},{"line_number":289,"context_line":"        if vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":290,"context_line":"            profile \u003d objects.vif.VIFPortProfileFPOpenVSwitch("},{"line_number":291,"context_line":"                    interface_id\u003dvif.get(\u0027ovs_interfaceid\u0027) or vif[\u0027id\u0027])"},{"line_number":292,"context_line":"            if _is_firewall_required(vif) or vif.is_hybrid_plug_enabled():"},{"line_number":293,"context_line":"                profile.bridge_name \u003d _get_hybrid_bridge_name(vif)"},{"line_number":294,"context_line":"                profile.hybrid_plug \u003d True"},{"line_number":295,"context_line":"            else:"},{"line_number":296,"context_line":"                if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":297,"context_line":"                    profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            profile \u003d objects.vif.VIFPortProfileFPBridge()"},{"line_number":300,"context_line":"            bridge \u003d vif[\u0027details\u0027].get(model.VIF_DETAILS_BRIDGE_NAME, None)"},{"line_number":301,"context_line":"            if bridge:"},{"line_number":302,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":303,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":304,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":305,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":306,"context_line":"        obj.port_profile \u003d profile"},{"line_number":307,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":308,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_c09bfdc7","line":305,"range":{"start_line":289,"start_character":9,"end_line":305,"end_character":62},"in_reply_to":"1a6eadb0_dc72267c","updated":"2016-12-14 08:35:37.000000000","message":"Calico is not yet enabled. Actually to enable calico a patch on neutron and nova should be necessary as well (and probably too late for the ocata cycle).\nIn particular the VIF_DETAILS_FP_PLUG is not enough to describe all the possible scenarios fast path supports (https://review.openstack.org/#/c/366108/).\n\nFor this reason the purpose of this patch is simply to migrate the current newton code (that does not have support for calico) to a fast path os-vif plugin in ocata.\n\nSupport for calico will be certainly possible when neutron will be able to create the os vif objects directly in mechanism drivers (bypassing nova). In particular networking-6wind provides an agent on compute side that drivers can use to verify fast path execution.\nIn this case the proper profile and plugin is chosen to create the os-vif object.","commit_id":"23b9f64489f22b7cf7ecac0ca50830fb180b250b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27d0361fca356bfc15e55803b31bb032f69c57b0","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":308,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"},{"line_number":309,"context_line":"        path \u003d vif[\u0027details\u0027].get("},{"line_number":310,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET, None)"},{"line_number":311,"context_line":"        if path:"},{"line_number":312,"context_line":"            obj.path \u003d path"},{"line_number":313,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_5c9b76c9","line":310,"range":{"start_line":310,"start_character":46,"end_line":310,"end_character":52},"updated":"2016-12-13 16:46:01.000000000","message":"nit: none i belive is the default if not set so this should not be needed","commit_id":"23b9f64489f22b7cf7ecac0ca50830fb180b250b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c492df78097abec52c1d56fbac8068d0fb365b2e","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            if bridge:"},{"line_number":299,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":300,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":301,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":302,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":303,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":304,"context_line":"                        plugin\u003d\"vhostuser_fp\","}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_bd896428","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":52},"updated":"2017-01-17 15:03:10.000000000","message":"Can\u0027t we remove this so the next line is just under the same conditional if bridge specified?","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"14bee5669344d808696cfd288006e761a4c85f52","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            if bridge:"},{"line_number":299,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":300,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":301,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":302,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":303,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":304,"context_line":"                        plugin\u003d\"vhostuser_fp\","}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_fa4d80c4","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":52},"in_reply_to":"7a3c09a3_bd896428","updated":"2017-01-18 09:56:12.000000000","message":"sure","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c492df78097abec52c1d56fbac8068d0fb365b2e","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":301,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":302,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":303,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":304,"context_line":"                        plugin\u003d\"vhostuser_fp\","},{"line_number":305,"context_line":"                        vif_name\u003d_get_vif_name(vif),"},{"line_number":306,"context_line":"                        port_profile\u003dprofile)"},{"line_number":307,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":308,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"},{"line_number":309,"context_line":"        path \u003d vif[\u0027details\u0027].get("},{"line_number":310,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET, None)"},{"line_number":311,"context_line":"        if path:"},{"line_number":312,"context_line":"            obj.path \u003d path"},{"line_number":313,"context_line":"        else:"},{"line_number":314,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":315,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"},{"line_number":316,"context_line":"        return obj"},{"line_number":317,"context_line":"    elif vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":318,"context_line":"        profile \u003d objects.vif.VIFPortProfileOpenVSwitch("}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_822a838e","line":315,"range":{"start_line":303,"start_character":8,"end_line":315,"end_character":33},"updated":"2017-01-17 15:03:10.000000000","message":"This is all duplicated below, can we move this into a common method or somehow make it common in this method.","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"14bee5669344d808696cfd288006e761a4c85f52","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":301,"context_line":"            if vif[\"network\"][\"bridge\"] is not None:"},{"line_number":302,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":303,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":304,"context_line":"                        plugin\u003d\"vhostuser_fp\","},{"line_number":305,"context_line":"                        vif_name\u003d_get_vif_name(vif),"},{"line_number":306,"context_line":"                        port_profile\u003dprofile)"},{"line_number":307,"context_line":"        obj.mode \u003d vif[\u0027details\u0027].get("},{"line_number":308,"context_line":"            model.VIF_DETAILS_VHOSTUSER_MODE, \u0027server\u0027)"},{"line_number":309,"context_line":"        path \u003d vif[\u0027details\u0027].get("},{"line_number":310,"context_line":"            model.VIF_DETAILS_VHOSTUSER_SOCKET, None)"},{"line_number":311,"context_line":"        if path:"},{"line_number":312,"context_line":"            obj.path \u003d path"},{"line_number":313,"context_line":"        else:"},{"line_number":314,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":315,"context_line":"                vif_id\u003dvif[\u0027id\u0027])"},{"line_number":316,"context_line":"        return obj"},{"line_number":317,"context_line":"    elif vif[\u0027details\u0027].get(model.VIF_DETAILS_VHOSTUSER_OVS_PLUG, False):"},{"line_number":318,"context_line":"        profile \u003d objects.vif.VIFPortProfileOpenVSwitch("}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_3a070883","line":315,"range":{"start_line":303,"start_character":8,"end_line":315,"end_character":33},"in_reply_to":"7a3c09a3_822a838e","updated":"2017-01-18 09:56:12.000000000","message":"Ok. Maybe the _get_vif_instance call should be kept outside the common method. But you\u0027re right most of things done here are shared for both ovs and fastpath vhostuser.","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1552a9a814fd4be11eb112279c773682b59e115","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return False"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def _set_vhostuser_settings(self, vif, obj):"},{"line_number":82,"context_line":"    \"\"\"Set vhostuser socket mode and path"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    :param vif: the nova.network.model.VIF instance"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_3f40a835","line":81,"range":{"start_line":81,"start_character":28,"end_line":81,"end_character":32},"updated":"2017-01-18 21:49:38.000000000","message":"Your tests are going to fail since self isn\u0027t needed and isn\u0027t passed.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19c4bccc440e1aa6b38aed296ff0ee3034a9cf1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    \"\"\"Set vhostuser socket mode and path"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    :param vif: the nova.network.model.VIF instance"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    :param obj: a os_vif.objects.vif.VIFVHostUser instance"},{"line_number":87,"context_line":"    \"\"\""},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_844a2f54","line":85,"updated":"2017-01-18 21:34:07.000000000","message":"nit: drop the blank line","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19c4bccc440e1aa6b38aed296ff0ee3034a9cf1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    if path:"},{"line_number":94,"context_line":"        obj.path \u003d path"},{"line_number":95,"context_line":"    else:"},{"line_number":96,"context_line":"        raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":97,"context_line":"            vif_id\u003dvif[\u0027id\u0027])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_e477739d","line":96,"range":{"start_line":96,"start_character":24,"end_line":96,"end_character":58},"updated":"2017-01-18 21:34:07.000000000","message":"nit: could add a :raises: entry to the docstring about this case.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19c4bccc440e1aa6b38aed296ff0ee3034a9cf1","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            bridge \u003d vif[\u0027details\u0027].get(model.VIF_DETAILS_BRIDGE_NAME, None)"},{"line_number":317,"context_line":"            if bridge:"},{"line_number":318,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":319,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":320,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":322,"context_line":"                        plugin\u003d\"vhostuser_fp\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_24a97be0","line":319,"updated":"2017-01-18 21:34:07.000000000","message":"Do we even need this line now? I think it was just used to set profile.bridge_name which we can just do as:\n\n  profile.bridge_name \u003d bridge","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"690e4e64f0d9f25e904268c6273487c92188cf9c","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            bridge \u003d vif[\u0027details\u0027].get(model.VIF_DETAILS_BRIDGE_NAME, None)"},{"line_number":317,"context_line":"            if bridge:"},{"line_number":318,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":319,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":320,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":322,"context_line":"                        plugin\u003d\"vhostuser_fp\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_9a5e0a11","line":319,"in_reply_to":"7a3c09a3_24a97be0","updated":"2017-01-18 22:23:10.000000000","message":"This line is needed to avoid an empty bridge name when vif[\u0027network\u0027] dict is transformed in a os_vif Network object (in _get_vif_instance method).\n\nFor vhostuser vif type and when model.VIF_DETAILS_VHOSTUSER_FP_PLUG is true, this network bridge name is not set because of a missing case here: https://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L2095.\n\nTherefore, in order to correctly fill the network bridge name, I saw 2 possible solutions:\n1) extending the if/else in api.py to add another case (without the need of this line)\n2) setting the bridge name in the network dict during conversion (the current approach chosen in this patch) to provide a proper network dict to the subsequent call to _get_vif_instance.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d83a11006c0b43a054fc0a39da07ae2a6cdec2cd","unresolved":false,"context_lines":[{"line_number":316,"context_line":"            bridge \u003d vif[\u0027details\u0027].get(model.VIF_DETAILS_BRIDGE_NAME, None)"},{"line_number":317,"context_line":"            if bridge:"},{"line_number":318,"context_line":"                bridge \u003d bridge[:model.NIC_NAME_LEN]"},{"line_number":319,"context_line":"                vif[\"network\"][\"bridge\"] \u003d bridge"},{"line_number":320,"context_line":"                profile.bridge_name \u003d vif[\"network\"][\"bridge\"]"},{"line_number":321,"context_line":"        obj \u003d _get_vif_instance(vif, objects.vif.VIFVHostUser,"},{"line_number":322,"context_line":"                        plugin\u003d\"vhostuser_fp\","}],"source_content_type":"text/x-python","patch_set":12,"id":"5a3905b3_7a178451","line":319,"in_reply_to":"7a3c09a3_9a5e0a11","updated":"2017-01-19 16:14:40.000000000","message":"OK so (2: what you\u0027re doing here) is a workaround because of the lack of handling this in the neutronv2 API (1) which is where that should be properly done. Let\u0027s make that change rather than this workaround.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c0100927928d332c7412fa46d69547c6e1998e2","unresolved":false,"context_lines":[{"line_number":2829,"context_line":"        fake_subnets \u003d [model.Subnet(cidr\u003d\u00271.0.0.0/8\u0027)]"},{"line_number":2830,"context_line":"        fake_nets \u003d [{\u0027id\u0027: \u0027net-id\u0027, \u0027name\u0027: \u0027foo\u0027, \u0027tenant_id\u0027: \u0027tenant\u0027}]"},{"line_number":2831,"context_line":"        api \u003d neutronapi.API()"},{"line_number":2832,"context_line":"        neutronapi.get_client(mox.IgnoreArg()).AndReturn(self.moxed_client)"},{"line_number":2833,"context_line":"        self.mox.ReplayAll()"},{"line_number":2834,"context_line":"        neutronapi.get_client(uuids.fake)"},{"line_number":2835,"context_line":"        net, ovs_interfaceid \u003d api._nw_info_build_network("}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_8f154741","line":2832,"range":{"start_line":2832,"start_character":8,"end_line":2832,"end_character":75},"updated":"2017-01-23 12:09:59.000000000","message":"This, a totally new test, should have been written with mock. I guess we can fix this later though","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"b7c0b7f27056ff82972a3eac28d3f91ce6ba29aa","unresolved":false,"context_lines":[{"line_number":2829,"context_line":"        fake_subnets \u003d [model.Subnet(cidr\u003d\u00271.0.0.0/8\u0027)]"},{"line_number":2830,"context_line":"        fake_nets \u003d [{\u0027id\u0027: \u0027net-id\u0027, \u0027name\u0027: \u0027foo\u0027, \u0027tenant_id\u0027: \u0027tenant\u0027}]"},{"line_number":2831,"context_line":"        api \u003d neutronapi.API()"},{"line_number":2832,"context_line":"        neutronapi.get_client(mox.IgnoreArg()).AndReturn(self.moxed_client)"},{"line_number":2833,"context_line":"        self.mox.ReplayAll()"},{"line_number":2834,"context_line":"        neutronapi.get_client(uuids.fake)"},{"line_number":2835,"context_line":"        net, ovs_interfaceid \u003d api._nw_info_build_network("}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_18c35aee","line":2832,"range":{"start_line":2832,"start_character":8,"end_line":2832,"end_character":75},"in_reply_to":"5a3905b3_8f154741","updated":"2017-01-23 15:31:52.000000000","message":"I agree with you that we can postpone this fix given deadlines. I simply did at it is done in this same file for a similar case (test_nw_info_build_network_vhostuser)","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"}],"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":"f4be895b718316d7542abd1ae18249a0fe9bf8fe","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                                    \u0027/tmp/vif-xxx-yyy-zzz\u0027}"},{"line_number":303,"context_line":"              )"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    vif_vhostuser_fp \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":306,"context_line":"              address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":307,"context_line":"              network\u003dnetwork_bridge,"},{"line_number":308,"context_line":"              type\u003dnetwork_model.VIF_TYPE_VHOSTUSER,"},{"line_number":309,"context_line":"              devname\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":310,"context_line":"              details \u003d {network_model.VIF_DETAILS_VHOSTUSER_SOCKET:"},{"line_number":311,"context_line":"                                                     \u0027/tmp/usv-xxx-yyy-zzz\u0027,"},{"line_number":312,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG: True},"},{"line_number":313,"context_line":"              )"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    vif_vhostuser_ovs \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":316,"context_line":"              address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_049e3f07","line":313,"range":{"start_line":305,"start_character":0,"end_line":313,"end_character":15},"updated":"2017-01-18 21:47:24.000000000","message":"This is no longer used. There might be others in here now too.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5d437597a74df723e334ff7c87cb835122e1bcf6","unresolved":false,"context_lines":[{"line_number":323,"context_line":"              ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027, mtu\u003d1500"},{"line_number":324,"context_line":"              )"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    vif_vhostuser_ovs_fp \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":327,"context_line":"              address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":328,"context_line":"              network\u003dnetwork_bridge,"},{"line_number":329,"context_line":"              type\u003dnetwork_model.VIF_TYPE_VHOSTUSER,"},{"line_number":330,"context_line":"              details \u003d {network_model.VIF_DETAILS_VHOSTUSER_MODE: \u0027server\u0027,"},{"line_number":331,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_SOCKET:"},{"line_number":332,"context_line":"                                                     \u0027/tmp/usv-xxx-yyy-zzz\u0027,"},{"line_number":333,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG: True,"},{"line_number":334,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: True},"},{"line_number":335,"context_line":"              devname\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":336,"context_line":"              ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027"},{"line_number":337,"context_line":"              )"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    vif_vhostuser_ovs_fp_hybrid \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":340,"context_line":"              address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":341,"context_line":"              network\u003dnetwork_bridge,"},{"line_number":342,"context_line":"              type\u003dnetwork_model.VIF_TYPE_VHOSTUSER,"},{"line_number":343,"context_line":"              details \u003d {\u0027ovs_hybrid_plug\u0027: True,"},{"line_number":344,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_MODE: \u0027server\u0027,"},{"line_number":345,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_SOCKET:"},{"line_number":346,"context_line":"                                                     \u0027/tmp/usv-xxx-yyy-zzz\u0027,"},{"line_number":347,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG: True,"},{"line_number":348,"context_line":"                         network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG: True},"},{"line_number":349,"context_line":"              devname\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":350,"context_line":"              ovs_interfaceid\u003d\u0027aaa-bbb-ccc\u0027"},{"line_number":351,"context_line":"              )"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    vif_vhostuser_no_path \u003d network_model.VIF(id\u003d\u0027vif-xxx-yyy-zzz\u0027,"},{"line_number":354,"context_line":"          address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_c416f757","line":351,"range":{"start_line":326,"start_character":0,"end_line":351,"end_character":15},"updated":"2017-01-18 21:48:48.000000000","message":"These can also be removed I think.","commit_id":"64063a349fa4664907b14da1543217573f0d44b6"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c492df78097abec52c1d56fbac8068d0fb365b2e","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        return conf"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def _get_vhostuser_settings(self, vif):"},{"line_number":400,"context_line":"        vif_details \u003d vif[\u0027details\u0027]"},{"line_number":401,"context_line":"        mode \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_MODE,"},{"line_number":402,"context_line":"                               \u0027server\u0027)"},{"line_number":403,"context_line":"        sock_path \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":404,"context_line":"        if sock_path is None:"},{"line_number":405,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":406,"context_line":"                                                        vif_id\u003dvif[\u0027id\u0027])"},{"line_number":407,"context_line":"        return mode, sock_path"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def get_config_vhostuser(self, instance, vif, image_meta,"},{"line_number":410,"context_line":"                            inst_type, virt_type, host):"},{"line_number":411,"context_line":"        conf \u003d self.get_base_config(instance, vif[\u0027address\u0027], image_meta,"},{"line_number":412,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027])"},{"line_number":413,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":414,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":415,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":416,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":417,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":418,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":419,"context_line":"            conf.driver_name \u003d None"},{"line_number":420,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        return conf"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def get_config_ib_hostdev(self, instance, vif, image_meta,"},{"line_number":425,"context_line":"                              inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_3d4d743e","line":422,"range":{"start_line":399,"start_character":0,"end_line":422,"end_character":19},"updated":"2017-01-17 15:03:10.000000000","message":"Do we still need these?","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"14bee5669344d808696cfd288006e761a4c85f52","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        return conf"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def _get_vhostuser_settings(self, vif):"},{"line_number":400,"context_line":"        vif_details \u003d vif[\u0027details\u0027]"},{"line_number":401,"context_line":"        mode \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_MODE,"},{"line_number":402,"context_line":"                               \u0027server\u0027)"},{"line_number":403,"context_line":"        sock_path \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":404,"context_line":"        if sock_path is None:"},{"line_number":405,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":406,"context_line":"                                                        vif_id\u003dvif[\u0027id\u0027])"},{"line_number":407,"context_line":"        return mode, sock_path"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def get_config_vhostuser(self, instance, vif, image_meta,"},{"line_number":410,"context_line":"                            inst_type, virt_type, host):"},{"line_number":411,"context_line":"        conf \u003d self.get_base_config(instance, vif[\u0027address\u0027], image_meta,"},{"line_number":412,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027])"},{"line_number":413,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":414,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":415,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":416,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":417,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":418,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":419,"context_line":"            conf.driver_name \u003d None"},{"line_number":420,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        return conf"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def get_config_ib_hostdev(self, instance, vif, image_meta,"},{"line_number":425,"context_line":"                              inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_ffa9f224","line":422,"range":{"start_line":399,"start_character":0,"end_line":422,"end_character":19},"in_reply_to":"7a3c09a3_3d4d743e","updated":"2017-01-18 09:56:12.000000000","message":"I believe we can safely remove all this. I would prefer sean commenting as well.","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c492df78097abec52c1d56fbac8068d0fb365b2e","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":698,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":701,"context_line":"        pass"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":704,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_5d53206b","line":701,"range":{"start_line":700,"start_character":4,"end_line":701,"end_character":12},"updated":"2017-01-17 15:03:10.000000000","message":"If this isn\u0027t used do we even need it anymore?","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"14bee5669344d808696cfd288006e761a4c85f52","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":698,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":701,"context_line":"        pass"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":704,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_ba70580c","line":701,"range":{"start_line":700,"start_character":4,"end_line":701,"end_character":12},"in_reply_to":"7a3c09a3_5d53206b","updated":"2017-01-18 09:56:12.000000000","message":"It was just to be coherent with other plug methods in this file that have an empty implementation (like plug_802qbg). But if it is good to you to have this deleted no problem.","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"686b26221fb90c85cf2ee88f50336b1dc935afab","unresolved":false,"context_lines":[{"line_number":697,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":698,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":701,"context_line":"        pass"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":704,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_abfd3e0a","line":701,"range":{"start_line":700,"start_character":4,"end_line":701,"end_character":12},"in_reply_to":"7a3c09a3_ba70580c","updated":"2017-01-18 20:31:40.000000000","message":"I believe those others are just stubs and required for those types of vifs, and they aren\u0027t using os-vif yet, but vhostuser is now entirely os-vif based (I think) so it seems we can just remove these legacy plug/unplug methods for vhostuser as they won\u0027t be used.","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c492df78097abec52c1d56fbac8068d0fb365b2e","unresolved":false,"context_lines":[{"line_number":911,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":912,"context_line":"                          instance\u003dinstance)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def unplug_vhostuser(self, instance, vif):"},{"line_number":915,"context_line":"        pass"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def unplug_vrouter(self, instance, vif):"},{"line_number":918,"context_line":"        \"\"\"Unplug Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_bdc88423","line":915,"range":{"start_line":914,"start_character":4,"end_line":915,"end_character":12},"updated":"2017-01-17 15:03:10.000000000","message":"Do we still even need this?","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"14bee5669344d808696cfd288006e761a4c85f52","unresolved":false,"context_lines":[{"line_number":911,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":912,"context_line":"                          instance\u003dinstance)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def unplug_vhostuser(self, instance, vif):"},{"line_number":915,"context_line":"        pass"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"    def unplug_vrouter(self, instance, vif):"},{"line_number":918,"context_line":"        \"\"\"Unplug Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_5a669451","line":915,"range":{"start_line":914,"start_character":4,"end_line":915,"end_character":12},"in_reply_to":"7a3c09a3_bdc88423","updated":"2017-01-18 09:56:12.000000000","message":"Same comment as before","commit_id":"f8ef83244a8077579a89a29be8e51be9c9f23fdf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4be895b718316d7542abd1ae18249a0fe9bf8fe","unresolved":false,"context_lines":[{"line_number":720,"context_line":"                                  dev, run_as_root\u003dTrue)"},{"line_number":721,"context_line":"                else:"},{"line_number":722,"context_line":"                    iface_id \u003d self.get_ovs_interfaceid(vif)"},{"line_number":723,"context_line":"                    mtu \u003d vif[\u0027network\u0027].get_meta(\u0027mtu\u0027)"},{"line_number":724,"context_line":"                    linux_net.create_ovs_vif_port(self.get_bridge_name(vif),"},{"line_number":725,"context_line":"                                                  dev, iface_id,"},{"line_number":726,"context_line":"                                                  vif[\u0027address\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a3c09a3_04b55f7d","side":"PARENT","line":723,"range":{"start_line":723,"start_character":20,"end_line":723,"end_character":56},"updated":"2017-01-18 21:47:24.000000000","message":"Seems we should test that this gets set in the VIFVHostUser object too right?","commit_id":"4c165dc4bc1d5a76f848cb1fef87d1990f63547a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9e066767d5042a16f5b50b9b929413bbae4114a5","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        return conf"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def _get_vhostuser_settings(self, vif):"},{"line_number":400,"context_line":"        vif_details \u003d vif[\u0027details\u0027]"},{"line_number":401,"context_line":"        mode \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_MODE,"},{"line_number":402,"context_line":"                               \u0027server\u0027)"},{"line_number":403,"context_line":"        sock_path \u003d vif_details.get(network_model.VIF_DETAILS_VHOSTUSER_SOCKET)"},{"line_number":404,"context_line":"        if sock_path is None:"},{"line_number":405,"context_line":"            raise exception.VifDetailsMissingVhostuserSockPath("},{"line_number":406,"context_line":"                                                        vif_id\u003dvif[\u0027id\u0027])"},{"line_number":407,"context_line":"        return mode, sock_path"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def get_config_vhostuser(self, instance, vif, image_meta,"},{"line_number":410,"context_line":"                            inst_type, virt_type, host):"},{"line_number":411,"context_line":"        conf \u003d self.get_base_config(instance, vif[\u0027address\u0027], image_meta,"},{"line_number":412,"context_line":"                                    inst_type, virt_type, vif[\u0027vnic_type\u0027])"},{"line_number":413,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"},{"line_number":414,"context_line":"        designer.set_vif_host_backend_vhostuser_config(conf, mode, sock_path)"},{"line_number":415,"context_line":"        # (vladikr) Not setting up driver and queues for vhostuser"},{"line_number":416,"context_line":"        # as queues are not supported in Libvirt until version 1.2.17"},{"line_number":417,"context_line":"        if not host.has_min_version(MIN_LIBVIRT_VHOSTUSER_MQ):"},{"line_number":418,"context_line":"            LOG.debug(\u0027Queues are not a vhostuser supported feature.\u0027)"},{"line_number":419,"context_line":"            conf.driver_name \u003d None"},{"line_number":420,"context_line":"            conf.vhost_queues \u003d None"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        return conf"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def get_config_ib_hostdev(self, instance, vif, image_meta,"},{"line_number":425,"context_line":"                              inst_type, virt_type, host):"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_91af6a93","side":"PARENT","line":422,"range":{"start_line":399,"start_character":4,"end_line":422,"end_character":19},"updated":"2017-01-20 20:49:31.000000000","message":"This is still needed apparently for the non-fp/non-ovs plug case.","commit_id":"4c165dc4bc1d5a76f848cb1fef87d1990f63547a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"500f12c87a2f7906880a4d135644f45ec1e6f4e1","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":731,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":734,"context_line":"        fp_plug \u003d vif[\u0027details\u0027].get("},{"line_number":735,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG,"},{"line_number":736,"context_line":"                                False)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a3905b3_31c87622","side":"PARENT","line":733,"range":{"start_line":733,"start_character":8,"end_line":733,"end_character":22},"updated":"2017-01-20 20:54:30.000000000","message":"Actually, we might still need this if we need get_config_vhostuser still.","commit_id":"32e2654152a1b805375d8c7b5a5c41ad2ee8ce65"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"4bbb2c336a30997b137ee574c65ebfbbacba19e4","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":731,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":734,"context_line":"        fp_plug \u003d vif[\u0027details\u0027].get("},{"line_number":735,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG,"},{"line_number":736,"context_line":"                                False)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a3905b3_4c51e50d","side":"PARENT","line":733,"range":{"start_line":733,"start_character":8,"end_line":733,"end_character":22},"in_reply_to":"5a3905b3_11a7fa4f","updated":"2017-01-20 21:03:32.000000000","message":"I am aware of networking-vpp using vhostuser as well. According to my understanding vpp uses an agent on compute nodes to deal with plugging/unplugging.\nThat said I will investigate the exact way they use and comment here.","commit_id":"32e2654152a1b805375d8c7b5a5c41ad2ee8ce65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9da907deaf09c3cdbdad82b4dcd4943dc3d54027","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":731,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":734,"context_line":"        fp_plug \u003d vif[\u0027details\u0027].get("},{"line_number":735,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG,"},{"line_number":736,"context_line":"                                False)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a3905b3_b12626cc","side":"PARENT","line":733,"range":{"start_line":733,"start_character":8,"end_line":733,"end_character":22},"in_reply_to":"5a3905b3_11a7fa4f","updated":"2017-01-20 20:59:31.000000000","message":"I guess this is why you had the pass in the earlier patch set:\n\nhttps://review.openstack.org/#/c/385061/11/nova/virt/libvirt/vif.py@701\n\nI\u0027ll just go back to pass.","commit_id":"32e2654152a1b805375d8c7b5a5c41ad2ee8ce65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f82e29570202810c4826b67b07cdf936c575dc88","unresolved":false,"context_lines":[{"line_number":730,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":731,"context_line":"            LOG.exception(_LE(\"Failed while plugging vif\"), instance\u003dinstance)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":734,"context_line":"        fp_plug \u003d vif[\u0027details\u0027].get("},{"line_number":735,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG,"},{"line_number":736,"context_line":"                                False)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a3905b3_11a7fa4f","side":"PARENT","line":733,"range":{"start_line":733,"start_character":8,"end_line":733,"end_character":22},"in_reply_to":"5a3905b3_31c87622","updated":"2017-01-20 20:57:47.000000000","message":"Well, these wouldn\u0027t do anything, because fastpath plug would be handled by os-vif...so why do we need the get_config_vhostuser - do we have vhostuser cases that are non-fastpath and non-ovs plug?","commit_id":"32e2654152a1b805375d8c7b5a5c41ad2ee8ce65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"500f12c87a2f7906880a4d135644f45ec1e6f4e1","unresolved":false,"context_lines":[{"line_number":967,"context_line":"            LOG.exception(_LE(\"Failed while unplugging vif\"),"},{"line_number":968,"context_line":"                          instance\u003dinstance)"},{"line_number":969,"context_line":""},{"line_number":970,"context_line":"    def unplug_vhostuser(self, instance, vif):"},{"line_number":971,"context_line":"        fp_plug \u003d vif[\u0027details\u0027].get("},{"line_number":972,"context_line":"                        network_model.VIF_DETAILS_VHOSTUSER_FP_PLUG,"},{"line_number":973,"context_line":"                        False)"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a3905b3_51cb421e","side":"PARENT","line":970,"range":{"start_line":970,"start_character":8,"end_line":970,"end_character":24},"updated":"2017-01-20 20:54:30.000000000","message":"same","commit_id":"32e2654152a1b805375d8c7b5a5c41ad2ee8ce65"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c0100927928d332c7412fa46d69547c6e1998e2","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":700,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":703,"context_line":"        pass"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":706,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_6f71fba7","line":703,"range":{"start_line":702,"start_character":0,"end_line":703,"end_character":12},"updated":"2017-01-23 12:09:59.000000000","message":"Surely we can delete this now? It doesn\u0027t appear to be called anywhere.\n\n  $ ag plug_vhostuser\n  nova/virt/libvirt/vif.py\n  702:    def plug_vhostuser(self, instance, vif):\n  916:    def unplug_vhostuser(self, instance, vif):\n  $","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"95f5d872603277335a4298223df29db5fa4fa6c2","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":700,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":703,"context_line":"        pass"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":706,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_e8b86677","line":703,"range":{"start_line":702,"start_character":0,"end_line":703,"end_character":12},"in_reply_to":"5a3905b3_627905c8","updated":"2017-01-23 21:55:31.000000000","message":"for generic vhost user backends, that can monitor for the creation fo the vhost-user socket nova does not need to do anything when plugging the vif.\n\nin this case the vif-type will still be vhostuser and this method will still be invoked.\n\ni belive this is how snabb switch and vpp are implemented.\nif we remove this function i belive it will break there intergration. ian wells could proably confirm for vpp.","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"},{"author":{"_account_id":17671,"name":"Francesco Santoro","email":"fraroot@gmail.com","username":"francesco.santoro"},"change_message_id":"b7c0b7f27056ff82972a3eac28d3f91ce6ba29aa","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":700,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":703,"context_line":"        pass"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":706,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_ecd16c58","line":703,"range":{"start_line":702,"start_character":0,"end_line":703,"end_character":12},"in_reply_to":"5a3905b3_6f71fba7","updated":"2017-01-23 15:31:52.000000000","message":"If my understanding is correct this is needed for integration tests to pass","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e6cbc581cb1d0f08f12fb9b023f1d48a993d8d35","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":700,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":703,"context_line":"        pass"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":706,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_627905c8","line":703,"range":{"start_line":702,"start_character":0,"end_line":703,"end_character":12},"in_reply_to":"5a3905b3_c2e0f998","updated":"2017-01-23 16:12:21.000000000","message":"Aha, gotcha. If you could do this in a follow up patch, Francesco, I\u0027d be very appreciative.","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3209d653c9e420b24e0b2736a9c9221367a30a0","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        mtu \u003d network.get_meta(\u0027mtu\u0027) if network else None"},{"line_number":700,"context_line":"        linux_net._set_device_mtu(dev, mtu)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def plug_vhostuser(self, instance, vif):"},{"line_number":703,"context_line":"        pass"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def plug_vrouter(self, instance, vif):"},{"line_number":706,"context_line":"        \"\"\"Plug into Contrail\u0027s network port"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_c2e0f998","line":703,"range":{"start_line":702,"start_character":0,"end_line":703,"end_character":12},"in_reply_to":"5a3905b3_ecd16c58","updated":"2017-01-23 16:09:48.000000000","message":"We should add a comment in here in a later patch. See the earlier review comment from Sean Mooney, but there are other types of vhostuser VIFs that will use the legacy non-os-vif code, and this is there to not break them.","commit_id":"67868cf7d70324a7f8e3b9658abd8355bfc8ae68"}]}
