From c1be05cfb9a460a122872cf667e0a15a7855c9b7 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Sun, 3 Jul 2022 11:55:49 +0200 Subject: [PATCH] F #5890: Initial support of not up-to-date hosts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adjust :ip[6]tables commands to work with legacy versions. Prior to version 1.6.1 -W option is not supported (e.g. ubuntu 16.04) * Check sudo access for vgpu commands. Added in 6.4.0 release co-authoted-by: Christian González --- src/vmm_mad/remotes/kvm/cancel | 4 ++-- src/vmm_mad/remotes/kvm/deploy | 3 ++- src/vmm_mad/remotes/kvm/shutdown | 4 ++-- src/vnm_mad/remotes/lib/command.rb | 10 ++++++++++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/vmm_mad/remotes/kvm/cancel b/src/vmm_mad/remotes/kvm/cancel index 204d39b98e..86e7e6379a 100755 --- a/src/vmm_mad/remotes/kvm/cancel +++ b/src/vmm_mad/remotes/kvm/cancel @@ -32,8 +32,8 @@ function destroy_and_monitor virsh --connect $LIBVIRT_URI destroy $deploy_id - # Destroy vGPU - sudo /var/tmp/one/vgpu "DELETE" "$DATASTORE/vm.xml" + # Destroy vGPU (only if suported by node) + (sudo -l | grep -q vgpu) && sudo /var/tmp/one/vgpu "DELETE" "$DATASTORE/vm.xml" virsh --connect $LIBVIRT_URI --readonly dominfo $deploy_id > /dev/null 2>&1 [ "x$?" != "x0" ] diff --git a/src/vmm_mad/remotes/kvm/deploy b/src/vmm_mad/remotes/kvm/deploy index 6a3d4b51e7..b71f91d732 100755 --- a/src/vmm_mad/remotes/kvm/deploy +++ b/src/vmm_mad/remotes/kvm/deploy @@ -37,7 +37,8 @@ if [ -n "${nvram}" ]; then fi # Create vGPU following NVIDIA official guide: https://docs.nvidia.com/grid/latest/pdf/grid-vgpu-user-guide.pdf -sudo /var/tmp/one/vgpu "CREATE" "$DEP_FILE_LOCATION/vm.xml" +# Only if supported by node +(sudo -l | grep -q vgpu) && sudo /var/tmp/one/vgpu "CREATE" "$DEP_FILE_LOCATION/vm.xml" DATA=`virsh --connect $LIBVIRT_URI create $DEP_FILE` diff --git a/src/vmm_mad/remotes/kvm/shutdown b/src/vmm_mad/remotes/kvm/shutdown index fb4452b60a..ac778cc646 100755 --- a/src/vmm_mad/remotes/kvm/shutdown +++ b/src/vmm_mad/remotes/kvm/shutdown @@ -73,8 +73,8 @@ retry $TIMEOUT monitor force_shutdown "$deploy_id" \ "virsh --connect $LIBVIRT_URI destroy $deploy_id" -# Destroy vGPU -sudo /var/tmp/one/vgpu "DELETE" "$DATASTORE/vm.xml" +# Destroy vGPU. Only if supported by node +(sudo -l | grep -q vgpu) && sudo /var/tmp/one/vgpu "DELETE" "$DATASTORE/vm.xml" # Compact memory if [ "x$CLEANUP_MEMORY_ON_STOP" = "xyes" ]; then diff --git a/src/vnm_mad/remotes/lib/command.rb b/src/vnm_mad/remotes/lib/command.rb index 075eaace12..f5d79382be 100644 --- a/src/vnm_mad/remotes/lib/command.rb +++ b/src/vnm_mad/remotes/lib/command.rb @@ -37,6 +37,16 @@ module VNMMAD :ipset => 'sudo -n ipset' } + # Adjust :ip[6]tables commands to work with legacy version + stdout = Open3.capture3('iptables --version')[0] + regex = /.*v(?\d+.\d+.\d+)/ + iptables_version = Gem::Version.new(stdout.match(regex)[:version]) + + if Gem::Version.new('1.6.1') > iptables_version + COMMANDS[:iptables] = 'sudo -n iptables -w 3' + COMMANDS[:ip6tables] = 'sudo -n ip6tables -w 3' + end + # Represents an Array of commands to be executed by the networking # drivers # The commands class Commands < Array