Bug 1167099

Summary: Packstack - Adding support for Neutron ML2 SR-IOV mechanism driver
Product: Red Hat OpenStack Reporter: Itzik Brown <itbrown>
Component: openstack-packstackAssignee: Ivan Chavero <ichavero>
Status: CLOSED CURRENTRELEASE QA Contact: Toni Freger <tfreger>
Severity: high Docs Contact:
Priority: high    
Version: 6.0 (Juno)CC: aortega, derekh, dnavale, emacchi, emilien.macchi, fbaudin, ichavero, ihrachys, itbrown, jschluet, ksundara, lbezdick, mburns, mmagr, nyechiel, oblaut, rhos-maint, sclewis, srevivo, supadhya, tfreger
Target Milestone: ---Keywords: TestOnly, Triaged, ZStream
Target Release: 8.0 (Liberty)   
Hardware: Unspecified   
OS: Unspecified   
URL: https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking
Whiteboard:
Fixed In Version: openstack-packstack-7.0.0-0.8.dev1661.gaf13b7e.el7ost Doc Type: Bug Fix
Doc Text:
The Red Hat OpenStack Platform 8 release adds the support for OpenStack Networking ML2 SR-IOV driver during Packstack installation. For this feature to work, you have to add 'sriovnicswitch' option to the 'CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS' parameter. If you fail to add this option, Packstack will not install the driver. For 'physical_device_mappings' parameter to be set in the '/etc/neutron/plugins/ml2/sriov_agent.ini' file, you have to set the 'CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS' directive. For example: CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS=physnet1:eth1,physnet2:eth2
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-01-30 23:44:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
SRIOV answer file
none
answer file 1controller 1compute none

Description Itzik Brown 2014-11-23 15:49:24 UTC
Description of problem:
Missing support in installer to configure sriovnicswitch Mechanism driver in Neutron and pci_passthrough_whitelist to enable booting Instances with 

Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1.
2.
3.

Actual results:
No support for SR-IOV in installer

Expected results:
Support for configuring SR-IOV mechanism driver and pci_passthrough_whitelist in nova configuration

Additional info:

Comment 1 Itzik Brown 2014-11-24 07:37:10 UTC
Description of problem:
Missing support in installer to configure sriovnicswitch Mechanism driver in Neutron and pci_passthrough_whitelist to enable booting Instances with "SR-IOV" interface

Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1.
2.
3.

Actual results:
No support for SR-IOV in installer

Expected results:
Support for configuring SR-IOV mechanism driver and pci_passthrough_whitelist in nova configuration

Additional info:

Comment 2 Itzik Brown 2014-11-24 15:29:03 UTC
 In order to support SR-IOV in RHOS there are some requirements from
 the
 installer (packstack/staypuft)

 1. There should be an option to configure "sriovnicswitch"
 mechanism
 driver
 that means:
  
    a. In /etc/neutron/plugins/ml2/ml2_conf.ini:
    
       Adding 'sriovnicswitch' to mechanism_drivers option in
       /etc/neutron/plugins/ml2/ml2_conf.ini
      
       Adding 'openvswitch' to mechanism_drivers option in
       /etc/neutron/plugins/ml2/ml2_conf.ini ( For DHCP support)
    
       Adding 'vlan' to type_drivers and tenant_network_types
       options

       network_vlan_ranges should be configured as well

    b. When enabling sriovnicswitch mechanism driver Neutron server
    should run with the following configuration files:

       /etc/neutron/neutron.conf, /etc/neutron/plugin.ini (points to
       /etc/neutron/plugins/ml2/ml2_conf.ini) ,
       /etc/neutron/plugins/ml2/ml2_conf_sriov.ini

       So /usr/lib/systemd/system/neutron-server.service needs to be
       changed

    c. Make sure when creating SR-IOV tenant network the type of the
    network is VLAN.
    
    d. When specifying sriovnicswitch as mechanism driver openvswitch should also be enabled


 2. There should be a way to add "vendor_idrodcut_id" entries to
 /etc/neutron/plugins/ml2/ml2_conf_sriov.ini and/or add supported
 couples
 (e.g. ones that are already supported by libvirt).

 3. There should be a way to add pci_passthrough_whitelist to
 /etc/nova/nova.conf.

    This configuration will hopefully going to be changed so maybe
    just configuring a PF - i.e. the installer just accepts the PF name
    and configure the pci_passthrough_whitelist).

 4. Add an option to configure which Compute supports SR-IOV and add
 a sanity check to see whether they support SR-IOV,Are there any VFs
 ,iommu  etc.

 5. Packstack should configure vfio_iommu_type1 to be loaded with allow_unsafe_interrupts=1

Comment 4 Nir Yechiel 2014-11-24 15:54:29 UTC
Hi Alvaro,

Starting with Juno/OSP-6 it is now possible to bring up a VM instance with SR-IOV enabled port. In order to support that there are couple of things we need to do in the installer side. Realistically, we are not going to have any support for this on Staypuft or TripleO at this point, but I think we should enable the basic minimum config in Puppet and PackStack to allow users to setup the environment correctly. These should be small and scoped changes: looking at comment #2 above, I think that only part 1 and 2 should be implemented.

Can you take a look on this and share your thoughts? We can have a follow up call/discussion to provide more info.

Thanks,
Nir

Comment 5 Alvaro Lopez Ortega 2014-11-25 15:22:38 UTC
Lukas, could you please take a look at this?

Comment 6 Nir Yechiel 2014-11-25 17:01:48 UTC
Please let us know how can we help to provide all the information you need here. We can also setup a call to disucss this

Thanks,
Nir

Comment 7 Emilien Macchi 2014-12-17 13:44:41 UTC
I'm making a patch upstream in puppet-neutron, it may help: https://review.openstack.org/#/c/142251/

Comment 9 Itzik Brown 2015-02-02 09:54:21 UTC
PciPassthroughFilter should also be added to scheduler_default_filters in /etc/nova/nova.conf.

Comment 12 Ivan Chavero 2015-07-26 23:30:58 UTC
The puppet changes have been merged, we have to add the proper options to packstack.
Lukas do you need a hand with this?

Comment 13 Ivan Chavero 2015-08-18 18:48:08 UTC
Created patch for packstack: https://review.openstack.org/214302

Comment 14 Ivan Chavero 2015-08-25 19:23:58 UTC
The patch works but we don't have a way to really test it. Do a scratch build be enought to send it to the people that can do the tests?

Comment 15 Itzik Brown 2015-08-26 05:18:17 UTC
Once I have a build I can verify it.

Comment 19 Itzik Brown 2015-09-08 12:07:05 UTC
I added comments to the upstream patch.
Also I think that instead of adding sriov_nic section in /etc/neutron/plugin.ini it the /etc/neutron/plugins/ml2/ml2_conf_sriov.ini file should be modified and linked in /etc/neutron/conf.d/neutron-server.

Comment 20 Ivan Chavero 2015-09-10 00:14:13 UTC
(In reply to Itzik Brown from comment #19)
> I added comments to the upstream patch.
> Also I think that instead of adding sriov_nic section in
> /etc/neutron/plugin.ini it the /etc/neutron/plugins/ml2/ml2_conf_sriov.ini
> file should be modified and linked in /etc/neutron/conf.d/neutron-server.

i've created a patch for puppet-neutron that addresses this:  https://review.openstack.org/221991

Comment 21 Ivan Chavero 2015-09-29 20:30:37 UTC
i've updated the upstream review. Itzik, can you check it out?

Comment 29 Ivan Chavero 2015-11-21 00:33:40 UTC
can i have pm and devel acks please?

Comment 32 Itzik Brown 2015-12-13 13:17:38 UTC
Checked using:
RHEL7.2
RHOS 8
openstack-packstack-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch
openstack-packstack-puppet-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch

SR-IOV agent is not installed  when CONFIG_NEUTRON_ML2_SRIOV_AGENT_REQUIRED=y

An example for CONFIG_NEUTRON_ML2_SUPPORTED_PCI_VENDOR_DEVS with the default values would be great

Comment 33 Ivan Chavero 2015-12-15 17:26:15 UTC
Testing this problem

Comment 34 Ivan Chavero 2015-12-15 18:52:16 UTC
(In reply to Itzik Brown from comment #32)
> Checked using:
> RHEL7.2
> RHOS 8
> openstack-packstack-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch
> openstack-packstack-puppet-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch
> 
> SR-IOV agent is not installed  when CONFIG_NEUTRON_ML2_SRIOV_AGENT_REQUIRED=y
> 

in order for this feature to work you have to add: sriovnicswitch to CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS
if this is not added packstack will not install it

> An example for CONFIG_NEUTRON_ML2_SUPPORTED_PCI_VENDOR_DEVS with the default
> values would be great

the values are specified in the answer file but are not in the packstack documentation this can be fixed but i think this is out of the scope of this bug.

Comment 35 Itzik Brown 2015-12-15 22:22:50 UTC
For sure - Adding sriovnicswitch to CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS is a requirement.

Comment 36 Itzik Brown 2015-12-20 11:08:33 UTC
Checked with:
openstack-packstack-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch
openstack-packstack-puppet-7.0.0-0.8.dev1661.gaf13b7e.el7ost.noarch

The file /etc/neutron/plugins/ml2/sriov_agent.ini is included in the service file but physical_device_mappings under sriov_nic section is commented out.

physical_device_mappings is included in /etc/neutron/plugins/ml2/ml2_conf.ini but /etc/neutron/plugins/ml2/ml2_conf.ini is not included in the service file:

# cat /usr/lib/systemd/system/neutron-sriov-nic-agent.service
[Unit]
Description=OpenStack Neutron SR-IOV NIC Agent
After=syslog.target network.target

[Service]
Type=simple
User=neutron
ExecStart=/usr/bin/neutron-sriov-nic-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/sriov_agent.ini --config-dir /etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-sriov-nic-agent --log-file /var/log/neutron/sriov-nic-agent.log
PrivateTmp=false
KillMode=process

[Install]
WantedBy=multi-user.target

Comment 37 Ivan Chavero 2016-01-05 18:03:30 UTC
For physical_device_mappings to be set in the /etc/neutron/plugins/ml2/sriov_agent.ini you have to set the CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS directive.

eg.
CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS=physnet1:eth1,physnet2:eth2

Comment 39 Itzik Brown 2016-01-18 12:02:24 UTC
Checked with:
openstack-packstack-puppet-7.0.0-0.10.dev1684.g87ec498.el7ost.noarch
openstack-packstack-7.0.0-0.10.dev1684.g87ec498.el7ost.noarch

/etc/neutron/plugins/ml2/ml2_conf_sriov.ini is not read by neutron-server and 
ml2_sriov section is not included in ml2_conf.ini.

Comment 40 Ivan Chavero 2016-01-22 07:37:52 UTC
confirmed /etc/neutron/plugins/ml2/ml2_conf_sriov.ini is not being read, checking the puppet module

Comment 41 Ivan Chavero 2016-01-22 19:17:44 UTC
after checking i remember that the puppet module was modified to reflect the split of the files in neutron sriov [1].

I'm not sure if this should be modified at the neutron puppet module level or the neutron-sriov-nic-agent unit file.

Whtat do you think Itzik?



[1] https://review.openstack.org/#/c/217264/

Comment 42 Itzik Brown 2016-01-24 06:59:35 UTC
As part of the installer I think it's possible to add a link such as 
/etc/neutron/conf.d/neutron-server/ml2_conf_sriov.conf -> /etc/neutron/plugins/ml2/ml2_conf_sriov.ini

Comment 43 Ivan Chavero 2016-01-25 18:41:59 UTC
I was discussed but the problem is in the area of the plugin packaging, we can create this link temporarily while the packaging problem is solved.

Comment 44 Ivan Chavero 2016-01-29 20:28:46 UTC
I would like this issue to be addressed on a package level to avoid future problems.

AFAIK the the feature this bug is requesting has been added to Packstack.

Comment 46 Itzik Brown 2016-02-09 09:55:01 UTC
Installation failed.
10.35.160.29_neutron.pp.log:

    Notice: /Stage[main]/Neutron::Agents::Metadata/Neutron_metadata_agent_config[DEFAULT/nova_metadata_protocol]/ensure: created
    Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Wrapped exception:
    No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini
    Error: /Stage[main]/Neutron::Plugins::Ml2/Neutron::Plugins::Ml2::Mech_driver[sriovnicswitch]/Neutron_plugin_sriov[ml2_sriov/supported_pci_vendor_devs]/ensure: change from absent to present failed: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Wrapped exception:
    No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini
    Error: /Stage[main]/Neutron::Plugins::Ml2/Neutron::Plugins::Ml2::Mech_driver[sriovnicswitch]/Neutron_plugin_sriov[ml2_sriov/agent_required]/ensure: change from absent to present failed: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a6b587052f1c42eaa3c72c02e9b9ebc1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
    Notice: /Stage[main]/Neutron::Server/Neutron_config[keystone_authtoken/admin_user]/value: value changed '%SERVICE_USER%' to 'neutron'

I checked and /etc/neutron/plugins/ml2/ml2_conf_sriov.ini is present on the controller.

Comment 47 Ivan Chavero 2016-02-09 15:34:22 UTC
This problem didn't arise in my previous tests, trying to reproduce

Comment 48 Ivan Chavero 2016-02-09 21:14:27 UTC
Created attachment 1122534 [details]
SRIOV answer file

Comment 49 Ivan Chavero 2016-02-09 22:29:52 UTC
Could not reproduce on RHEL using the attached answer file with: openstack-packstack-7.0.0-0.10.dev1682.g42b3426.el7

the sriov configuration is stored in: /etc/neutron/plugins/ml2/ml2_conf.ini 

installed using:

packstack -d --answer-file=ans.txt


There is an error on the sriov log file but it does not appear to be related to this bug, can you confirm?

2016-02-09 11:26:57.251 1805 INFO neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent [req-d09794d8-2a6e-44b1-9cc5-ab945016e715 - - - - -] SRIOV NIC Agent RPC Daemon Started!
2016-02-09 11:26:57.251 1805 INFO neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent [req-d09794d8-2a6e-44b1-9cc5-ab945016e715 - - - - -] Agent out of sync with plugin!
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher [-] Exception during message handling: Endpoint does not support RPC version 1.3. Attempted method: security_groups_provider_updated
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher Traceback (most recent call last):
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher   File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 142, in _dispatch_and_reply
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher     executor_callback))
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher   File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 195, in _dispatch
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher     raise UnsupportedVersion(version, method=method)
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher UnsupportedVersion: Endpoint does not support RPC version 1.3. Attempted method: security_groups_provider_updated
2016-02-09 11:35:12.259 1805 ERROR oslo_messaging.rpc.dispatcher

Comment 50 Itzik Brown 2016-02-10 07:47:13 UTC
Created attachment 1122688 [details]
answer file 1controller 1compute

Comment 51 Itzik Brown 2016-02-10 07:49:41 UTC
No I don't think it's related.

My setup:
1 controller node and 1 compute node
RHEL7.2
RHOS8
openstack-packstack-7.0.0-0.11.dev1692.g1b5e83b.el7ost.noarch
openstack-packstack-puppet-7.0.0-0.11.dev1692.g1b5e83b.el7ost.noarch
openstack-neutron-common-7.0.1-9.el7ost.noarch
openstack-neutron-ml2-7.0.1-9.el7ost.noarch
openstack-neutron-openvswitch-7.0.1-9.el7ost.noarch
python-neutron-7.0.1-9.el7ost.noarch
openstack-neutron-7.0.1-9.el7ost.noarch
python-neutronclient-3.1.0-1.el7ost.noarch

I attached the answer file in comment #50

Comment 52 Ivan Chavero 2016-02-12 03:22:29 UTC
Do you still have the problem or is just the problem on comment 49

Comment 53 Jon Schlueter 2016-02-19 18:12:28 UTC
with how to test/reproduce in comment #49 Moving bug back to ON_QA

Comment 54 Itzik Brown 2016-02-21 13:14:07 UTC
Configured 
CONFIG_NEUTRON_ML2_SUPPORTED_PCI_VENDOR_DEVS=15b3:1004,8086:10ca, 8086:1520, 8086:10ed

/etc/neutron/plugins/ml2/ml2_conf_sriov.ini is correct

# egrep -v '#|^$' /etc/neutron/plugins/ml2/ml2_conf_sriov.ini 
[ml2_sriov]
supported_pci_vendor_devs = 15b3:1004,8086:10ca, 8086:1520, 8086:10ed
agent_required = True

But /etc/neutron/plugins/ml2/ml2_conf_sriov.ini is not read by the server.

Was the link issue from comment #39 resolved?

Comment 55 Itzik Brown 2016-02-21 13:26:17 UTC
Regarding #54:
I first got the following error:
2016-02-21 14:47:27::ERROR::run_setup::1017::root:: Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 1012, in main
    _main(options, confFile, logFile)
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 660, in _main
    runSequences()
  File "/usr/lib/python2.7/site-packages/packstack/installer/run_setup.py", line 627, in runSequences
    controller.runAllSequences()
  File "/usr/lib/python2.7/site-packages/packstack/installer/setup_controller.py", line 81, in runAllSequences
    sequence.run(config=self.CONF, messages=self.MESSAGES)
  File "/usr/lib/python2.7/site-packages/packstack/installer/core/sequences.py", line 109, in run
    step.run(config=config, messages=messages)
  File "/usr/lib/python2.7/site-packages/packstack/installer/core/sequences.py", line 50, in run
    self.function(config, messages)
  File "/usr/lib/python2.7/site-packages/packstack/plugins/puppet_950.py", line 209, in apply_puppet_manifest
    wait_for_puppet(currently_running, messages)
  File "/usr/lib/python2.7/site-packages/packstack/plugins/puppet_950.py", line 123, in wait_for_puppet
    validate_logfile(log)
  File "/usr/lib/python2.7/site-packages/packstack/modules/puppet.py", line 107, in validate_logfile
    raise PuppetError(message)
PuppetError: Error appeared during Puppet run: 10.35.160.29_neutron.pp
Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/6e951bd6bde24343a515027b71f3edd1/modules/neutron/manifests/plugins/ml2/mech_driver.pp
You will find full trace in log /var/tmp/packstack/20160221-142530-8hzOBK/manifests/10.35.160.29_neutron.pp.log

2016-02-21 14:47:27::INFO::shell::94::root:: [10.35.160.29] Executing script:
rm -rf /var/tmp/packstack/6e951bd6bde24343a515027b71f3edd1
2016-02-21 14:47:27::INFO::shell::94::root:: [10.35.160.39] Executing script:
rm -rf /var/tmp/packstack/d1e06edb4c0b465299e5f402431174c0

Then ran again and got the result in #54

Comment 56 Jon Schlueter 2016-02-22 13:27:17 UTC
key things I noticed different between provided answer file and file generated by --gen-answer-file

CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,sriovnicswitch
CONFIG_NEUTRON_ML2_SRIOV_AGENT_REQUIRED=y
CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS=physnet1:eth0,physnet2:eth0

For single node packstack setup this installs, I don't know if

Comment 57 Jon Schlueter 2016-02-22 13:28:02 UTC
key things I noticed different between provided answer file and file generated by --gen-answer-file

CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch,sriovnicswitch
CONFIG_NEUTRON_ML2_SRIOV_AGENT_REQUIRED=y
CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS=physnet1:eth0,physnet2:eth0

For single node packstack setup this installs, I don't know if the installed functionality is working as expected though.

Comment 58 Jon Schlueter 2016-02-24 20:42:14 UTC
What we noticed was multi-node was showing the issue bug single node installs seemed to install correctly.

Comment 59 Ivan Chavero 2016-02-27 20:40:39 UTC
All i one succuesfully installs the sriov agent.
Setting CONFIG_NETWORK_HOSTS to a different node throws a weird behaviour, the sriov agent gets installed in the controller but not on the designed network host.
I'll keep investigating

Comment 60 Ivan Chavero 2016-02-29 21:58:51 UTC
ignore comment 59, the agent should be installed on the compute node not the netwrok node.

Comment 61 Ivan Chavero 2016-02-29 23:47:44 UTC
With two compute nodes i don't get any error on the sriov agent log file (/var/log/neutron/sriov-nic-agent.log)


I can't test the actual functionality because i don't have hardware that supports sr-iov but in the software part everything works ok.

Comment 70 Ivan Chavero 2016-03-30 06:20:32 UTC
Can we have the meeting on thursday? i'm on MST time

Comment 72 Emilien Macchi 2016-04-01 19:19:57 UTC
> neutron is not installed when the class is applied

This is wrong: https://github.com/openstack/puppet-neutron/blob/master/manifests/plugins/ml2.pp#L176-L187

> it appears to be that the ::neutron::plugins::ml2 class is being applied before the /etc/neutron/plugins/ml2/ml2_conf_sriov.ini

I don't understand this statement.
neutron::plugins::ml2 is for Server.
ml2_conf_sriov.ini is for Agent.

What is the orchestration issue? What says logs? What is the error?

Comment 73 Ivan Chavero 2016-04-01 23:15:23 UTC
ml2_conf_sriov.ini is for server plugin [1], the file for the agent is: /etc/neutron/plugins/ml2/sriov_agent.ini [2]



 this is the error:

ERROR : Error appeared during Puppet run: 10.35.160.29_neutron.pp
Error: Could not set 'present' on ensure: No such file or directory - /etc/neutron/plugins/ml2/ml2_conf_sriov.ini at 37:/var/tmp/packstack/a7409c145c394a418eae9a0942c06bb5/modules/neutron/manifests/plugins/ml2/mech_driver.pp

This is a two node setup: one controller and one compute node, the error comes from the controller.

The odd part is that when i run the packstack or the manifest a second time the error does not appear and the file gets created.

Can the problem be that the class neutron::plugins:ml2 is being executed before the neutron [3] class?


[1] https://github.com/openstack/puppet-neutron/blob/master/lib/puppet/provider/neutron_plugin_sriov/ini_setting.rb#L7
[2] https://github.com/openstack/puppet-neutron/blob/master/lib/puppet/provider/neutron_sriov_agent_config/ini_setting.rb#L7
[3] https://gist.github.com/imcsk8/9fed07d3417eb55790355b3a87301f8e#file-10-35-160-29_neutron-pp-L38
[4] https://gist.github.com/imcsk8/9fed07d3417eb55790355b3a87301f8e#file-10-35-160-29_neutron-pp-L112

Comment 75 Ivan Chavero 2016-04-14 17:53:03 UTC
Fixed in the puppet neutron module, backporting to liberty

Comment 76 Ivan Chavero 2016-05-25 20:51:25 UTC
With the latest Openstack Puppet Modules for liberty this should work.

Comment 77 Lon Hohberger 2016-06-23 18:19:51 UTC
According to our records, this should be resolved by openstack-packstack-7.0.0-0.14.dev1702.g490e674.el7ost.  This build is available now.

Comment 78 Itzik Brown 2016-06-29 07:54:14 UTC
1) /etc/neutron/plugins/ml2/ml2_conf_sriov.ini is updated but not read by the Neutron server. When linking it to /etc/neutron/conf.d/neutron-server/ml2_conf_sriov.conf it's ok

2) When having the following ones
CONFIG_NEUTRON_ML2_SUPPORTED_PCI_VENDOR_DEVS=15b3:1004,8086:10c9,8086:10ca,8086:1520,8086:10ed it works but seems like the default is wrong.

Comment 79 Sanjay Upadhyay 2016-06-29 08:14:44 UTC
For 1: there is already a patch https://review.openstack.org/333882

Comment 80 Ivan Chavero 2016-07-05 06:40:44 UTC
This bug has been fixed on the packstack side.
The remaining problem belongs in OPM

Comment 83 Toni Freger 2017-01-25 07:43:53 UTC
Checked on openstack-packstack-7.0.0-0.19.dev1702.g490e674.el7ost.noarch

SR-IOV configuration have added to answer file.

# Comma-separated ordered list of networking mechanism driver entry
# points to be loaded from the neutron.ml2.mechanism_drivers
# namespace. ['logger', 'test', 'linuxbridge', 'openvswitch',
# 'hyperv', 'ncs', 'arista', 'cisco_nexus', 'mlnx', 'l2population',
# 'sriovnicswitch']
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch

# Comma separated list of supported PCI vendor devices defined by
# vendor_id:product_id according to the PCI ID Repository.
CONFIG_NEUTRON_ML2_SUPPORTED_PCI_VENDOR_DEVS=['15b3:1004', '8086:10ca']

# Specify 'y' if the sriov agent is required
CONFIG_NEUTRON_ML2_SRIOV_AGENT_REQUIRED=n

# Comma-separated list of interface mappings for the OpenStack
# Networking ML2 SRIOV agent. Each tuple in the list must be in the
# format <physical_network>:<net_interface>. Example:
# physnet1:eth1,physnet2:eth2,physnet3:eth3.
CONFIG_NEUTRON_ML2_SRIOV_INTERFACE_MAPPINGS=