aboutsummaryrefslogtreecommitdiffstats
path: root/kud/deployment_infra/playbooks
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 /kud/deployment_infra/playbooks
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
Diffstat (limited to 'kud/deployment_infra/playbooks')
-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
4 files changed, 73 insertions, 41 deletions
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"