aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkhila Kishore <akhila.kishore@intel.com>2019-11-11 22:57:39 -0800
committerAkhila Kishore <akhila.kishore@intel.com>2019-11-13 15:17:57 -0800
commitf18b84fb5cb2bbb7e95e346fc74e84368ffcc78e (patch)
treef2c740611eb7301b821d9300cddd9193283b3fa8
parentb0f94ada2751713ea8d62c235d0bc1cc2877034a (diff)
Updating sriov playbook to meet requirements of updated device
Previous sriov playbook supported X710 SRIOV NIC. Updating the scripts to support new device XL710. Other changes include syntactical corrections to "WHEN" condition in ansible. Co-authored-by: hle2 <huifeng.le@intel.com> Signed-off-by: Akhila Kishore <akhila.kishore@intel.com> Issue-ID: MULTICLOUD-929 Change-Id: I697a49a64472ad2d755753e58f8fd4e7857b0456
-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."