Merge "Add intel_iommu to kernel cmdline"
authorKuralamudhan Ramakrishnan <kuralamudhan.ramakrishnan@intel.com>
Wed, 9 Dec 2020 23:13:15 +0000 (23:13 +0000)
committerGerrit Code Review <gerrit@akraino.org>
Wed, 9 Dec 2020 23:13:15 +0000 (23:13 +0000)
1  2 
deploy/metal3/scripts/01_metal3.sh

@@@ -59,10 -59,8 +59,10 @@@ EO
  
  function deprovision_compute_node {
      name="$1"
 -    kubectl patch baremetalhost $name -n metal3 --type merge \
 -    -p '{"spec":{"image":{"url":"","checksum":""}}}'
 +    if kubectl get baremetalhost $name -n metal3 &>/dev/null; then
 +        kubectl patch baremetalhost $name -n metal3 --type merge \
 +        -p '{"spec":{"image":{"url":"","checksum":""}}}'
 +    fi
  }
  
  function set_compute_ssh_config {
@@@ -130,7 -128,7 +130,7 @@@ EO
      fi
  
      cat $HOME/.ssh/id_rsa.pub >>  $name-userdata.yaml
-     network_config_files >> $name-userdata.yaml
+     cloud_init_scripts >> $name-userdata.yaml
      printf "\n" >>  $name-userdata.yaml
  }
  
@@@ -153,10 -151,25 +153,25 @@@ function remove_baremetal_operator 
      kubectl delete -f bmo/namespace/namespace.yaml
  }
  
- function network_config_files {
+ function cloud_init_scripts {
+     # The "intel_iommu=on iommu=pt" kernel command line is necessary
+     # for QAT support.
      cat << 'EOF'
  write_files:
- - path: /opt/ironic_net.sh
+ - path: /var/lib/cloud/scripts/per-instance/set_kernel_cmdline.sh
+   owner: root:root
+   permissions: '0777'
+   content: |
+     #!/usr/bin/env bash
+     set -eux -o pipefail
+     grub_file=${1:-"/etc/default/grub"}
+     kernel_parameters="intel_iommu=on iommu=pt"
+     sed -i~ "/^GRUB_CMDLINE_LINUX=/{h;s/\(=\".*\)\"/\1 ${kernel_parameters}\"/};\${x;/^$/{s//GRUB_CMDLINE_LINUX=\"${kernel_parameters}\"/;H};x}" "$grub_file"
+     update-grub
+     reboot
+ EOF
+     cat << 'EOF'
+ - path: /var/lib/cloud/scripts/per-boot/run_dhclient.sh
    owner: root:root
    permissions: '0777'
    content: |
          sudo dhclient -nw `basename $intf`
      done
  EOF
- cat << EOF
- - path: /opt/user_net.sh
    cat << EOF
+ - path: /var/lib/cloud/scripts/per-boot/set_provider_network.sh
    owner: root:root
    permissions: '0777'
    content: |
      sed -i -e 's/^#DNS=.*/DNS=$PROVIDER_NETWORK_DNS/g' /etc/systemd/resolved.conf
      systemctl daemon-reload
      systemctl restart systemd-resolved
- runcmd:
-  - [ /opt/ironic_net.sh ]
-  - [ /opt/user_net.sh ]
  EOF
  }
  
@@@ -241,9 -251,9 +253,9 @@@ function remove_bm_hosts 
  
  function cleanup {
      while IFS=',' read -r name ipmi_username ipmi_password ipmi_address os_username os_password os_image_name; do
 -        kubectl delete bmh $name -n metal3
 -        kubectl delete secrets $name-bmc-secret -n metal3
 -        kubectl delete secrets $name-user-data -n metal3
 +        kubectl delete --ignore-not-found=true bmh $name -n metal3
 +        kubectl delete --ignore-not-found=true secrets $name-bmc-secret -n metal3
 +        kubectl delete --ignore-not-found=true secrets $name-user-data -n metal3
          if [ -f $name-bm-node.yaml ]; then
              rm -rf $name-bm-node.yaml
          fi