)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5eab4d70ef89a7819f61938b4ca075540988f955","unresolved":false,"context_lines":[{"line_number":10,"context_line":"VIF_PLUGIN_SCRIPT. This field will be populated by Neutron and refer to"},{"line_number":11,"context_line":"a back-end specific script that will be called from the virtualization"},{"line_number":12,"context_line":"driver when the system is ready to connect the guest to a L2 network."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I3b5daadc9bba446cd6c644f1052b05cb77111b19"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3acd31a7_2aa9ab90","line":13,"updated":"2015-05-04 20:58:43.000000000","message":"can you please add a link to the neutron blueprint/spec for this change?","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"}],"bin/vif_ovs_plug_script.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"116b7ea22d249554eca38037201cc0871ef9764b","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"\u003c!DOCTYPE html\u003e"},{"line_number":5,"context_line":"\u003chtml lang\u003d\"en\" class\u003d\"\"\u003e"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_8c6ec494","line":2,"updated":"2015-05-07 19:44:02.000000000","message":"this should be the content of \n\nhttps://raw.githubusercontent.com/6WIND/nova-vif-plug-example/master/vif_ovs_plug_script.py\n\nnot the raw html of \n\nhttps://github.com/6WIND/nova-vif-plug-example/blob/master/vif_ovs_plug_script.py\n\nif you want this to be reviewable by a human :)","commit_id":"cad9673ae89f3dc6337a13a06a425146831f1a80"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"df6ecb8997815324ffa97e8c754a92ddc716b65f","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"\u003c!DOCTYPE html\u003e"},{"line_number":5,"context_line":"\u003chtml lang\u003d\"en\" class\u003d\"\"\u003e"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aca2d91_4ca66c54","line":2,"in_reply_to":"1aca2d91_8c6ec494","updated":"2015-05-07 19:53:17.000000000","message":"Doh! Fixed","commit_id":"cad9673ae89f3dc6337a13a06a425146831f1a80"}],"neutron/common/config.py":[{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"6c73518360d6177ff37ae124767f1ebe7094f8a4","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                      \u0027there are any events to send.\u0027)),"},{"line_number":124,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":125,"context_line":"               help\u003d_(\u0027Path to script to be invoked by nova to complete \u0027"},{"line_number":126,"context_line":"                      \u0027connection of a VIF to a networking back end\u0027)),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_8bd8241f","line":126,"updated":"2015-04-17 12:27:18.000000000","message":"Surprised to see this - see my comment in mech_openvswitch.py.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7c9472a4ea60db9ecaa38d42bc8be07fd8554655","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                      \u0027there are any events to send.\u0027)),"},{"line_number":124,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":125,"context_line":"               help\u003d_(\u0027Path to script to be invoked by nova to complete \u0027"},{"line_number":126,"context_line":"                      \u0027connection of a VIF to a networking back end\u0027)),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_83ce8cb2","line":126,"in_reply_to":"3ab451fb_8bd8241f","updated":"2015-05-03 04:18:14.000000000","message":"specifying a file system path may not be the best approach as that assumes that the script to be executed will be installed in the same location on all compute nodes.\n\nif all node are not running the same os this may not be the case due to different packaging conventions.\n\nthis also does not allow multiple mechanism drivers to have different plugin scripts.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"8cd5168d9e8ca86424cddbe997b879b3279fa0d1","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                      \u0027there are any events to send.\u0027)),"},{"line_number":124,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":125,"context_line":"               help\u003d_(\u0027Path to script to be invoked by nova to complete \u0027"},{"line_number":126,"context_line":"                      \u0027connection of a VIF to a networking back end\u0027)),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_c9edc526","line":126,"in_reply_to":"3acd31a7_83ce8cb2","updated":"2015-05-03 21:18:51.000000000","message":"1. This option and this patch is only for testing purpose. Please see,\nthe following example reimplementing the hybrid plug method for the\novs bridge and used to test the vif plug mechanism driver:\nhttps://github.com/6WIND/nova-vif-plug-example/.\n\n2.  The plugin script should be specified in the ml2 mechanism driver or l2 plugging driver in the VIF details.\n\n2. Yes, it\u0027s better to provide the script name rather that the full path.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d29da69226c9ba143a4cda96f39b1888a1b6bf0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                      \u0027there are any events to send.\u0027)),"},{"line_number":124,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":125,"context_line":"               help\u003d_(\u0027Path to script to be invoked by nova to complete \u0027"},{"line_number":126,"context_line":"                      \u0027connection of a VIF to a networking back end\u0027)),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_a77f34aa","line":126,"in_reply_to":"3acd31a7_c9edc526","updated":"2015-05-04 20:41:25.000000000","message":"using a script name would be better provided the nova conf was updated with at vif_plug_dir parameter so that the nova agent could construct the full path on the compute node based on its local config.\n\nas the script will be mechanism and possibly vif_type dependant the script name should probably either be in a mechanism driver config file( not the main neutron config) or fixed in the mech driver code where the mechanism driver does not want to support replacing the script.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"12e0e3756a206c26b7ad53a6c6437caa2cde1ba2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":138,"context_line":"               help\u003d_(\u0027Example only: path to script to be invoked by nova \u0027"},{"line_number":139,"context_line":"                      \u0027to complete connection of a VIF to a networking back \u0027"},{"line_number":140,"context_line":"                      \u0027end\u0027)),"},{"line_number":141,"context_line":"]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"9af37de9_726856bb","line":140,"updated":"2015-05-09 20:30:25.000000000","message":"can you explain why the script is configurable by the user and not just hard coded in the MD?","commit_id":"50d04f4dd0c1cbe5a72c3845a0ff44a547cb84e9"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"52d0282439f4a6dd140dea6d7e73d25fa3ff1b8c","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    cfg.StrOpt(\u0027vif_plugin_script\u0027,"},{"line_number":138,"context_line":"               help\u003d_(\u0027Example only: path to script to be invoked by nova \u0027"},{"line_number":139,"context_line":"                      \u0027to complete connection of a VIF to a networking back \u0027"},{"line_number":140,"context_line":"                      \u0027end\u0027)),"},{"line_number":141,"context_line":"]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"core_cli_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_5e5ad984","line":140,"in_reply_to":"9af37de9_726856bb","updated":"2015-05-15 10:03:43.000000000","message":"This option is mainline for purpose testing. It allow to easily change the script into the ovs mechanism (i.e. without patching it). For example:\n- Brent has tested on his side a bash script (see: https://github.com/beagles/neutron_hacking/blob/vif-plug-script/neutron/plugins/ml2/drivers/plug_hybrid.sh)\n- myself I tested a python script (see: vif_ovs_plug_script.py in this patch).\n\nYes normally it should be hard coded directly into the mechanism driver.","commit_id":"50d04f4dd0c1cbe5a72c3845a0ff44a547cb84e9"}],"neutron/plugins/ml2/drivers/mech_openvswitch.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c05bf142f7e906a1200f1ffc021e7068fbd439a6","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2106cb1d","line":45,"updated":"2015-03-13 08:15:39.000000000","message":"Armando, I think the plugin script would be mech driver dependent. The Big Switch mech driver for example would want to return a different path than the OVS driver if it wants the the compute node to plug the VIF into IVS instead of OVS.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4c9c2dc9694d116c09060827d45324ad64e7558b","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ba15a29c","line":45,"updated":"2015-03-12 17:21:59.000000000","message":"here you\u0027re effectively extending the API response for port bindings. I don\u0027t believe this is the right way to go about it: it is obscure and mech driver dependent, which goes against what you mention in the commit message.\n\nHaving said that, you\u0027re returning the path to script to be invoked by nova to complete connection of a VIF to a networking back end, is that all there is? This does sound incomplete.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7c9472a4ea60db9ecaa38d42bc8be07fd8554655","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_230578bb","line":45,"in_reply_to":"3ab451fb_eb956840","updated":"2015-05-03 04:18:14.000000000","message":"mech drivers may want to have several plug handler scripts also if they support multiple vif_types. one for sriov another for vhost_user  for example. \n\nas i commented on the nova spec i believe a better approach would be to define a simple 2 function interface.\nplug and unplug that will be called with the vif object.\n\nthe mechanism driver backend library would then provide a python module that implemented those two functions.\n\nthe vif_plugin_script field would be set to mechanism driver plug handler module\u0027s fully qualified module name.  \ne.g. networking_ovs_dpdk.driver.plug_handler\n\non the nova side\nimportlib.import_module(vif_plug_script)\ncan be used to import the mech driver\u0027s plug_handler module and invoke the plug and unplug methods directly. \n\nThis has the advantage of not  requiring the serialisation of the vif object to environmental variables as proposed in the current nova spec and ensuring that any privileged calls made by the script are confided by the rootwapper.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"8cd5168d9e8ca86424cddbe997b879b3279fa0d1","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_c93b859b","line":45,"in_reply_to":"3acd31a7_230578bb","updated":"2015-05-03 21:18:51.000000000","message":"1. I didn\u0027t see any mech driver supporting several VIF_TYPES. Are there any ? How do you want to implement that ?\n\n2. Your proposal with your library of backend driver is similar to my initial specs: https://blueprints.launchpad.net/nova/+spec/libvirt-vif-driver-plugin.\n\nBut the nova core community is against to maintain a stable Python API\nfor VIF plugging.\n\nThat\u0027s why a consensus came up on the mailing list (http://lists.openstack.org/pipermail/openstack-dev/2014-December/052744.html) about a VIF plug script.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"e866f1dba9ff49f0d74be0fc0f871362f6ef7243","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aca2d91_035b7ef7","line":45,"in_reply_to":"3acd31a7_24c8c2a7","updated":"2015-05-09 12:23:36.000000000","message":"Kevin and Sean, thanks for the interesting links.\n\nThus, in the bind_port, you can provide a different vif plug script in function of the host like the Big Switch mechanism driver or in function of the VNIC_TYPE like in the Mellanox mechanism driver.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d29da69226c9ba143a4cda96f39b1888a1b6bf0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_24c8c2a7","line":45,"in_reply_to":"3acd31a7_67e135fe","updated":"2015-05-04 20:41:25.000000000","message":"@Maxime Leroy\n\ni did review your initial spec : https://blueprints.launchpad.net/nova/+spec/libvirt-vif-driver-plugin when you proposed it last cycle. \n\ni think it had many advantages over the current nova spec though i was also  following the discussion on the mailing list when it was happening. \n\ni did not think however that a consensus had been formed on how the extensible plug and unplug method should be implemented but rather a that a mechanism was needed to allow neuron to tell nova how to plug the vif in a modular way.\n\n\n@Kevin Benton\n\nyes the Mellanox driver also support 2 vif_types \n\nhttps://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/mlnx/mech_mlnx.py#L63 \n\nhttps://github.com/stackforge/networking-mlnx/blob/master/networking_mlnx/plugins/ml2/drivers/mlnx/constants.py\n\nin there case they choose the VIF_TYPE based on the VNIC_TYPE","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"fa210f76dd34b2911fb6395790ea101b10943300","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_67e135fe","line":45,"in_reply_to":"3acd31a7_c93b859b","updated":"2015-05-04 03:18:51.000000000","message":"If a driver wanted to support multiple vif types it would just have some kind of lookup mechanism to determine which type to use during the bind operation. \n\nSlightly related, the Big Switch mechanism driver is compatible with the OVS mechanism driver being run at the same time in an environment with a mix of hosts running OVS and some running IVS. You can see where the bind mechanism checks with the backend to see if it\u0027s an IVS host[1]. The OVS driver basically does the same thing by checking for an L2 agent that matches the hostname.[2]\n\n\n1. https://github.com/stackforge/networking-bigswitch/blob/d97c6e4b84e687c63c43aaed93164443136fa60a/bsnstacklib/plugins/ml2/drivers/mech_bigswitch/driver.py#L176\n\n2. https://github.com/openstack/neutron/blob/2921d3c686b5f5cd68d51f906766983f975b1cf2/neutron/plugins/ml2/drivers/mech_agent.py#L67","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"6c73518360d6177ff37ae124767f1ebe7094f8a4","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_eb956840","line":45,"in_reply_to":"9a80dd14_2106cb1d","updated":"2015-04-17 12:27:18.000000000","message":"I had the same assumption as Kevin here, so was surprised to see vif_plugin_script as a Neutron-level config option.  I suppose that could be interpreted as an option that is almost always unset, and defaulted by the relevant mechanism driver - but which a particular deployment might use to override the mechanism driver\u0027s default.  But that feels a bit weird, as it means a config option with a variable default value.\n\nIf there is a need for a deployment to sometimes override the mech driver, I guess cleaner to enable that with a mech-driver-specific config option (for each mech driver that needs this).","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"6c73518360d6177ff37ae124767f1ebe7094f8a4","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_4bbb3cc5","line":45,"in_reply_to":"9a80dd14_3559c55b","updated":"2015-04-17 12:27:18.000000000","message":"(As I\u0027ve commented elsewhere) I\u0027d suggest that it\u0027s also incomplete in the sense that we should be allowing Neutron to directly specify the \u003cinterface\u003e XML parameters too - or equivalent information (bearing in mind other hypervisors) in some generic form.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"d160c403358610a4199935a7f06ad7a6ab603bad","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        plug_script \u003d cfg.CONF.get(\u0027vif_plugin_script\u0027)"},{"line_number":44,"context_line":"        if plug_script:"},{"line_number":45,"context_line":"            vif_details[portbindings.VIF_PLUGIN_SCRIPT] \u003d plug_script"},{"line_number":46,"context_line":"        super(OpenvswitchMechanismDriver, self).__init__("},{"line_number":47,"context_line":"            constants.AGENT_TYPE_OVS,"},{"line_number":48,"context_line":"            portbindings.VIF_TYPE_OVS,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_3559c55b","line":45,"in_reply_to":"9a80dd14_ba15a29c","updated":"2015-03-12 17:44:17.000000000","message":"Hi Armando, \n\nThis is part of a P.O.C. to illustrate how this mechanism is meant to work and is part of a larger effort. See https://review.openstack.org/#/c/162468/2/specs/liberty/approved/vif-plug-script.rst - which is the nova side spec. The references give more more background as well.","commit_id":"2877f18d364da0ec2084d1fd84072dfb02eab912"}]}
