diff options
Diffstat (limited to 'kud')
-rw-r--r-- | kud/build/Dockerfile | 4 | ||||
-rw-r--r-- | kud/deployment_infra/images/sriov-daemonset.yml | 4 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/configure-sriov.yml | 19 | ||||
-rwxr-xr-x | kud/deployment_infra/playbooks/install_iavf_drivers.sh | 47 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/preconfigure-sriov.yml | 44 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/sriov_hardware_check.sh | 4 | ||||
-rw-r--r-- | kud/hosting_providers/containerized/README.md | 4 | ||||
-rwxr-xr-x | kud/hosting_providers/containerized/installer.sh | 19 | ||||
-rwxr-xr-x | kud/tests/plugin_edgex.sh | 14 | ||||
-rwxr-xr-x | kud/tests/plugin_fw.sh | 14 | ||||
-rwxr-xr-x | kud/tests/sriov.sh | 4 |
11 files changed, 118 insertions, 59 deletions
diff --git a/kud/build/Dockerfile b/kud/build/Dockerfile index da100bb7..38c63295 100644 --- a/kud/build/Dockerfile +++ b/kud/build/Dockerfile @@ -1,4 +1,8 @@ FROM ubuntu:18.04 as base +ARG KUD_ENABLE_TESTS=false +ARG KUD_PLUGIN_ENABLED=false +ENV KUD_ENABLE_TESTS=$KUD_ENABLE_TESTS +ENV KUD_PLUGIN_ENABLED=$KUD_PLUGIN_ENABLED ADD . /usr/src/multicloud-k8s USER root SHELL ["/bin/bash", "-c"] diff --git a/kud/deployment_infra/images/sriov-daemonset.yml b/kud/deployment_infra/images/sriov-daemonset.yml index 1edbc6c3..72f33869 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", "iavf"] } }] } 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/hosting_providers/containerized/README.md b/kud/hosting_providers/containerized/README.md index d1659629..12ce1a19 100644 --- a/kud/hosting_providers/containerized/README.md +++ b/kud/hosting_providers/containerized/README.md @@ -27,7 +27,7 @@ Kubernetes jobs(a cluster per job) are used to install multiple clusters and log ## Quickstart Installation Guide -Build the kud docker images as follows: +Build the kud docker images as follows, add KUD_ENABLE_TESTS & KUD_PLUGIN_ENABLED for the testing only: ``` $ git clone https://github.com/onap/multicloud-k8s.git && cd multicloud-k8s @@ -38,6 +38,8 @@ $ docker build --rm \ --build-arg HTTPS_PROXY=${HTTPS_PROXY} \ --build-arg no_proxy=${no_proxy} \ --build-arg NO_PROXY=${NO_PROXY} \ + --build-arg KUD_ENABLE_TESTS=true \ + --build-arg KUD_PLUGIN_ENABLED=true \ -t github.com/onap/multicloud-k8s:latest . -f build/Dockerfile ``` Let's create a cluster-101 and cluster-102 hosts.ini as follows diff --git a/kud/hosting_providers/containerized/installer.sh b/kud/hosting_providers/containerized/installer.sh index ad44dc56..713847ea 100755 --- a/kud/hosting_providers/containerized/installer.sh +++ b/kud/hosting_providers/containerized/installer.sh @@ -19,7 +19,7 @@ function install_prerequisites { #install package for docker images apt-get update apt-get install -y curl vim wget git \ - software-properties-common python-pip + software-properties-common python-pip sudo add-apt-repository -y ppa:longsleep/golang-backports apt-get update apt-get install -y golang-go rsync @@ -136,21 +136,17 @@ function install_addons { # install_plugin() - Install ONAP Multicloud Kubernetes plugin function install_plugin { - echo "Installing multicloud/k8s plugin" - mkdir -p /opt/{kubeconfig,consul/config} - cp $HOME/.kube/config /opt/kubeconfig/kud - - pushd $kud_folder/../../../deployments - ./build.sh + echo "Installing multicloud/k8s onap4k8s plugin" if [[ "${testing_enabled}" == "true" ]]; then - ./start.sh pushd $kud_tests - for functional_test in plugin plugin_edgex plugin_fw; do - bash ${functional_test}.sh + echo "Test the onap4k8s installation" + bash onap4k8s.sh + echo "Test the onap4k8s plugin installation" + for functional_test in plugin_edgex plugin_fw; do + bash ${functional_test}.sh --external done popd fi - popd } # _print_kubernetes_info() - Prints the login Kubernetes information @@ -191,6 +187,7 @@ k8s_info_file=$kud_folder/k8s_info.log testing_enabled=${KUD_ENABLE_TESTS:-false} mkdir -p /opt/csar +export CSAR_DIR=/opt/csar function install_pkg { # Install dependencies diff --git a/kud/tests/plugin_edgex.sh b/kud/tests/plugin_edgex.sh index 8eae5692..ae390add 100755 --- a/kud/tests/plugin_edgex.sh +++ b/kud/tests/plugin_edgex.sh @@ -17,7 +17,16 @@ source _common_test.sh source _functions.sh source _common.sh -base_url="http://localhost:9015/v1" +if [ ${1:+1} ]; then + if [ "$1" == "--external" ]; then + master_ip=$(kubectl cluster-info | grep "Kubernetes master" | \ + awk -F ":" '{print $2}' | awk -F "//" '{print $2}') + onap_svc_node_port=30498 + base_url="http://$master_ip:$onap_svc_node_port/v1" + fi +fi + +base_url=${base_url:-"http://localhost:9015/v1"} kubeconfig_path="$HOME/.kube/config" csar_id=cb009bfe-bbee-11e8-9766-525400435678 rb_name="edgex" @@ -91,6 +100,9 @@ response="$(call_api -d "${payload}" "${base_url}/instance")" echo "$response" vnf_id="$(jq -r '.id' <<< "${response}")" +print_msg "Waiting for EdgeX instances" +sleep 240 + print_msg "Validating Kubernetes" kubectl get --no-headers=true --namespace=${namespace} deployment edgex-core-command kubectl get --no-headers=true --namespace=${namespace} service edgex-core-command diff --git a/kud/tests/plugin_fw.sh b/kud/tests/plugin_fw.sh index d7bed4fd..eec467c3 100755 --- a/kud/tests/plugin_fw.sh +++ b/kud/tests/plugin_fw.sh @@ -17,7 +17,16 @@ source _common_test.sh source _functions.sh source _common.sh -base_url="http://localhost:9015/v1" +if [ ${1:+1} ]; then + if [ "$1" == "--external" ]; then + master_ip=$(kubectl cluster-info | grep "Kubernetes master" | \ + awk -F ":" '{print $2}' | awk -F "//" '{print $2}') + onap_svc_node_port=30498 + base_url="http://$master_ip:$onap_svc_node_port/v1" + fi +fi + +base_url=${base_url:-"http://localhost:9015/v1"} kubeconfig_path="$HOME/.kube/config" csar_id=cc009bfe-bbee-11e8-9766-525400435678 rb_name="vfw" @@ -98,6 +107,9 @@ wait_for_pod -n "${namespace}" -l app=firewall wait_for_pod -n "${namespace}" -l app=packetgen # TODO: Provide some health check to verify vFW work +print_msg "Waiting for VNF instances" +sleep 480 + print_msg "Retrieving VNF details" call_api "${base_url}/instance/${vnf_id}" 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." |