aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRitu Sood <Ritu.Sood@intel.com>2019-11-15 00:51:09 +0000
committerGerrit Code Review <gerrit@onap.org>2019-11-15 00:51:09 +0000
commitf168ebb73d8dad0e1c75747cbc9b0a0de8fc2357 (patch)
tree2be8f13053ba812f3972defb4ce49b0e1bb0860e
parentc58a35989f731a0d1c8ec75e85480873da4b1c35 (diff)
parentf18b84fb5cb2bbb7e95e346fc74e84368ffcc78e (diff)
Merge "Updating sriov playbook to meet requirements of updated device"
-rw-r--r--kud/deployment_infra/images/sriov-daemonset.yml4
-rw-r--r--kud/deployment_infra/playbooks/configure-sriov.yml19
-rwxr-xr-xkud/deployment_infra/playbooks/install_iavf_drivers.sh47
-rw-r--r--kud/deployment_infra/playbooks/preconfigure-sriov.yml44
-rw-r--r--kud/deployment_infra/playbooks/sriov_hardware_check.sh4
-rwxr-xr-xkud/tests/sriov.sh4
6 files changed, 77 insertions, 45 deletions
diff --git a/kud/deployment_infra/images/sriov-daemonset.yml b/kud/deployment_infra/images/sriov-daemonset.yml
index 1edbc6c3..a133dbed 100644
--- a/kud/deployment_infra/images/sriov-daemonset.yml
+++ b/kud/deployment_infra/images/sriov-daemonset.yml
@@ -13,8 +13,8 @@ data:
"resourceList": [{
"resourceName": "intel_sriov_700",
"selectors": {
- "vendors": ["8086"]
- "devices": ["37cd"]
+ "vendors": ["8086"],
+ "drivers": ["i40evf"]
}
}]
}
diff --git a/kud/deployment_infra/playbooks/configure-sriov.yml b/kud/deployment_infra/playbooks/configure-sriov.yml
index 8ba6cf48..45f276c6 100644
--- a/kud/deployment_infra/playbooks/configure-sriov.yml
+++ b/kud/deployment_infra/playbooks/configure-sriov.yml
@@ -12,25 +12,18 @@
- hosts: localhost
become: yes
- pre_tasks:
- - block:
- - name: "End play if SRIOV is False"
- debug:
- msg: "SRIOV option not available, ending play"
- - meta: end_play
- when: SRIOV_NODE == "False"
tasks:
- debug:
var: SRIOV_NODE
- name: Apply Multus
shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/multus-daemonset.yml"
- when: SRIOV_NODE==True
+ when: SRIOV_NODE
- name: Apply SRIOV CNI
- shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/sriov-cni.yaml"
- when: SRIOV_NODE==True
+ shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/sriov-cni.yml"
+ when: SRIOV_NODE
- name: Apply SRIOV DaemonSet
- shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/sriov-daemonset.yaml"
- when: SRIOV_NODE==True
+ shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/sriov-daemonset.yml"
+ when: SRIOV_NODE
- name: Apply SRIOV Network Attachment definition
shell: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/sriov-nad.yml"
- when: SRIOV_NODE==True
+ when: SRIOV_NODE
diff --git a/kud/deployment_infra/playbooks/install_iavf_drivers.sh b/kud/deployment_infra/playbooks/install_iavf_drivers.sh
index d44483de..7a54e9f2 100755
--- a/kud/deployment_infra/playbooks/install_iavf_drivers.sh
+++ b/kud/deployment_infra/playbooks/install_iavf_drivers.sh
@@ -3,6 +3,10 @@
# Based on:
# https://gerrit.akraino.org/r/#/c/icn/+/1359/1/deploy/kud-plugin-addons/device-plugins/sriov/driver/install_iavf_drivers.sh
+nic_models=(XL710 X722)
+nic_drivers=(i40e)
+device_checkers=(is_not_used is_driver_match is_model_match)
+
function install_iavf_driver {
local ifname=$1
@@ -27,22 +31,55 @@ function install_iavf_driver {
echo '8' > /sys/class/net/$ifname/device/sriov_numvfs
}
-function is_used {
+function is_not_used {
local ifname=$1
route_info=`ip route show | grep $ifname`
if [ -z "$route_info" ]; then
- return 0
- else
return 1
+ else
+ return 0
+ fi
+}
+
+function is_driver_match {
+ local ifname=$1
+ driver=`cat /sys/class/net/$ifname/device/uevent | grep DRIVER | cut -f2 -d "="`
+ if [ ! -z "$driver" ]; then
+ for nic_driver in ${nic_drivers[@]}; do
+ if [ "$driver" = "$nic_driver" ]; then
+ return 1
+ fi
+ done
+ fi
+ return 0
+}
+
+function is_model_match {
+ local ifname=$1
+ pci_addr=`cat /sys/class/net/$ifname/device/uevent | grep PCI_SLOT_NAME | cut -f2 -d "=" | cut -f2,3 -d ":"`
+ if [ ! -z "$pci_addr" ]; then
+ for nic_model in ${nic_models[@]}; do
+ model_match=$(lspci | grep $pci_addr | grep $nic_model)
+ if [ ! -z "$model_match" ]; then
+ return 1
+ fi
+ done
fi
+ return 0
}
function get_sriov_ifname {
for net_device in /sys/class/net/*/ ; do
if [ -e $net_device/device/sriov_numvfs ] ; then
ifname=$(basename $net_device)
- is_used $ifname
- if [ "$?" = "0" ]; then
+ for device_checker in ${device_checkers[@]}; do
+ eval $device_checker $ifname
+ if [ "$?" = "0" ]; then
+ ifname=""
+ break
+ fi
+ done
+ if [ ! -z "$ifname" ]; then
echo $ifname
return
fi
diff --git a/kud/deployment_infra/playbooks/preconfigure-sriov.yml b/kud/deployment_infra/playbooks/preconfigure-sriov.yml
index c4276e1b..fd16d935 100644
--- a/kud/deployment_infra/playbooks/preconfigure-sriov.yml
+++ b/kud/deployment_infra/playbooks/preconfigure-sriov.yml
@@ -31,7 +31,7 @@
command: sriov/sriov_hardware_check.sh
register: output
- set_fact:
- SRIOV: "{{ output.stdout }}"
+ _SRIOV: "{{ output.stdout }}"
- name: Recreate the conf file for every host
file:
path: /tmp/sriov.conf
@@ -40,7 +40,7 @@
- lineinfile : >
dest=/tmp/sriov.conf
create=yes
- line='{{SRIOV}}'
+ line='{{_SRIOV}}'
delegate_to: localhost
- name: Clean the script and folder.
file:
@@ -58,32 +58,30 @@
become: yes
- set_fact:
SRIOV_NODE: "{{ installer_output.stdout }}"
- - meta: end_play
- when: SRIOV_NODE == "False"
- name: Load kud variables
include_vars:
file: kud-vars.yml
- when: SRIOV_NODE == "True"
+ when: SRIOV_NODE
tasks:
- name: Create sriov folder
file:
state: directory
path: "{{ sriov_dest }}"
- when: SRIOV_NODE == "True"
ignore_errors: yes
+ when: SRIOV_NODE
- name: Get SRIOV compatible driver
get_url: "url={{ driver_url }} dest=/tmp/{{ package }}.tar.gz"
- when: SRIOV_NODE == "True"
+ when: SRIOV_NODE
- name: Extract sriov source code
unarchive:
src: "/tmp/{{ package }}.tar.gz"
dest: "{{ sriov_dest }}"
- when: SRIOV_NODE == "True"
+ when: SRIOV_NODE
- name: Build the default target
make:
chdir: "/tmp/sriov/{{ package }}/src"
become: yes
- when: SRIOV_NODE == "True"
+ when: SRIOV_NODE
# Copy all the driver and install script into target node
- hosts: kube-node
become: yes
@@ -91,7 +89,7 @@
- name: Load kud variables
include_vars:
file: kud-vars.yml
- when: SRIOV == "True"
+ when: _SRIOV
tasks:
- name: create SRIOV driver folder in the target destination
file:
@@ -99,18 +97,22 @@
path: "{{ item }}"
with_items:
- sriov_driver
- when: SRIOV == "True"
- - name: Copy SRIOV driver to target destination
- command: "cp {{ sriov_dest }}/{{ package }}/src/iavf.ko /root/sriov_driver/"
- when: SRIOV == "True"
- - name: Copy SRIOV driver install script to target folder
- command: "cp {{ playbook_dir }}/install_iavf_drivers.sh /root/sriov_driver/install.sh"
- when: SRIOV == "True"
+ when: _SRIOV
+ - copy:
+ src: "{{ sriov_dest }}/{{ package }}/src/iavf.ko"
+ dest: sriov_driver
+ remote_src: no
+ when: _SRIOV
+ - copy:
+ src: "{{ playbook_dir }}/install_iavf_drivers.sh"
+ dest: sriov_driver/install.sh
+ remote_src: no
+ when: _SRIOV
- name: Changing perm of "install.sh", adding "+x"
- file: dest=/root/sriov_driver/install.sh mode=a+x
- when: SRIOV == "True"
+ file: dest=sriov_driver/install.sh mode=a+x
+ when: _SRIOV
- name: Run a script with arguments
shell: ./install.sh
args:
- chdir: "/root/sriov_driver"
- when: SRIOV == "True"
+ chdir: "sriov_driver"
+ when: _SRIOV
diff --git a/kud/deployment_infra/playbooks/sriov_hardware_check.sh b/kud/deployment_infra/playbooks/sriov_hardware_check.sh
index ea1b7b0c..662c28c8 100644
--- a/kud/deployment_infra/playbooks/sriov_hardware_check.sh
+++ b/kud/deployment_infra/playbooks/sriov_hardware_check.sh
@@ -12,14 +12,14 @@ set -o pipefail
source /etc/environment
-ethernet_adpator_version=$( lspci | grep "Ethernet Controller X710" | head -n 1 | cut -d " " -f 8 )
+ethernet_adpator_version=$( lspci | grep "Ethernet Controller XL710" | head -n 1 | cut -d " " -f 8 )
if [ -z "$ethernet_adpator_version" ]; then
echo "False"
exit 0
fi
SRIOV_ENABLED=${ethernet_adpator_version:-"false"}
#checking for the right hardware version of NIC on the machine
-if [ "$ethernet_adpator_version" == "X710" ]; then
+if [ "$ethernet_adpator_version" == "XL710" ]; then
echo "True"
else
echo "False"
diff --git a/kud/tests/sriov.sh b/kud/tests/sriov.sh
index c66f5db8..a721b722 100755
--- a/kud/tests/sriov.sh
+++ b/kud/tests/sriov.sh
@@ -10,13 +10,13 @@
set -o pipefail
-ethernet_adpator_version=$( lspci | grep "Ethernet Controller X710" | head -n 1 | cut -d " " -f 8 )
+ethernet_adpator_version=$( lspci | grep "Ethernet Controller XL710" | head -n 1 | cut -d " " -f 8 )
if [ -z "$ethernet_adpator_version" ]; then
echo " Ethernet adapator version is not set. SRIOV test case cannot run on this machine"
exit 0
fi
#checking for the right hardware version of NIC on the machine
-if [ $ethernet_adpator_version == "X710" ]; then
+if [ $ethernet_adpator_version == "XL710" ]; then
echo "NIC card specs match. SRIOV option avaiable for this version."
else
echo -e "Failed. The version supplied does not match.\nTest cannot be executed."