[Libvirt-cim] [PATCH 1 of 1] [TEST] Don't send commands via ssh for localhost

Eduardo Lima (Etrunko) eblima at linux.vnet.ibm.com
Thu Jun 30 16:04:12 UTC 2011


# HG changeset patch
# User Eduardo Lima (Etrunko) <eblima at br.ibm.com>
# Date 1306519808 10800
# Node ID fcce3eb554659cd76e020f3cb852c352e6a02218
# Parent  6397c0670c35acc78ac13d737b408bb90e30632e
[TEST] Don't send commands via ssh for localhost

Also changes python strings format in many other files. Some commands
required double quotes to work properly when executed locally.

Signed-off-by: Eduardo Lima (Etrunko) <eblima at br.ibm.com>

diff --git a/lib/VirtLib/live.py b/lib/VirtLib/live.py
--- a/lib/VirtLib/live.py
+++ b/lib/VirtLib/live.py
@@ -30,7 +30,7 @@
     """Return a list of the available bridges in the running dom0.
     """
 
-    cmd = "brctl show | grep -v 'bridge name' | awk '/^[^\t]/ { print \$1 }'"
+    cmd = 'brctl show | grep -v "bridge name" | awk "/^[^\\t]/ { print \$1 }"'
 
     rc, out = utils.run_remote(ip, cmd)
     if rc != 0:
@@ -39,8 +39,8 @@
     return out.splitlines()
 
 def exclude_vir_bridge(ip):
-    cmd = "brctl show | grep -v 'bridge name' | grep -v vir | \
-                                  grep -v vif | awk '/^[^\t]/ { print \$1 }'"
+    cmd = 'brctl show | grep -v "bridge name" | grep -v vir | \
+           grep -v vif | awk "/^[^\\t]/ { print \$1 }"'
     rc, out = utils.run_remote(ip, cmd)
     if rc != 0:
         return []
@@ -51,7 +51,7 @@
     """Return a list of the available virtual bridges in the running dom0.
     """
 
-    cmd = "brctl show | grep -v 'bridge name' | grep -v peth | awk '/^[^\t]/ { print \$1 }'"
+    cmd = 'brctl show | grep -v "bridge name" | grep -v peth | awk "/^[^\\t]/ { print \$1 }"'
 
     rc, out = utils.run_remote(ip, cmd)
     if rc != 0:
@@ -78,14 +78,14 @@
     """
 
     xm_ret, mfm = utils.run_remote(server,
-                    "xm info | awk -F ': ' '/max_free_memory/ {print \$2}'")
+                    'xm info | awk -F ": " "/max_free_memory/ {print \$2}"')
     if xm_ret != 0:
         return None
 
     return int(mfm)
 
 def fv_cap(server):
-    cmd = "egrep flags /proc/cpuinfo | uniq | egrep 'vmx|svm'"
+    cmd = 'egrep flags /proc/cpuinfo | uniq | egrep "vmx|svm"'
     ret, out = utils.run_remote(server, cmd)
     return ret == 0
 
diff --git a/lib/VirtLib/utils.py b/lib/VirtLib/utils.py
--- a/lib/VirtLib/utils.py
+++ b/lib/VirtLib/utils.py
@@ -31,15 +31,24 @@
 SSH_KEY = os.path.join(root_dot_ssh, 'id_rsa')
 AUTHED_KEYS = os.path.join(root_dot_ssh, 'authorized_keys')
 
+localhost = ["0.0.0.0", "127.0.0.1", "localhost"]
+
 def run_remote(ip, cmd):
     
-    cmd = 'ssh %s -i %s root@%s "%s"' % (SSH_PARMS, SSH_KEY, ip, cmd)
+    if ip not in localhost:
+        cmd = "ssh %s -i %s root@%s '%s'" % (SSH_PARMS, SSH_KEY, ip, cmd)
     return commands.getstatusoutput(cmd)
 
 def copy_remote(ip, local, remote='/tmp'):
 
-    cmd = 'scp -r %s -i %s %s root@%s:%s' % (SSH_PARMS, 
-                                            SSH_KEY, local, ip, remote)
+    if ip not in localhost:
+        cmd = 'scp -r %s -i %s %s root@%s:%s' % (SSH_PARMS,
+                                                 SSH_KEY, local, ip, remote)
+    else:
+        if local == remote:
+            return (0, "")
+        cmd = 'cp -r %s %s' % (local, remote)
+
     return commands.getstatusoutput(cmd)
 
 def setup_ssh_key():
diff --git a/suites/libvirt-cim/lib/XenKvmLib/common_util.py b/suites/libvirt-cim/lib/XenKvmLib/common_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py
@@ -243,7 +243,7 @@
         rc, out = utils.run_remote(ip, cmd)
 
     if rc == 0 :
-        cmd = "%s | awk '{ print \$8 }' | uniq" % cmd
+        cmd = '%s | awk "{ print \$8 }" | uniq' % cmd
         rc, out = utils.run_remote(ip, cmd)
 
     return rc, out
@@ -252,7 +252,7 @@
     cmd = "virsh -c %s list --all 2>/dev/null" % virt2uri(virt)
     ret, out = utils.run_remote(ip, cmd)
     if ret != 0:
-        return "This libvirt install does not support %s"  % virt
+        return "The libvirt install on '%s' does not support %s" % (ip, virt)
 
     cmd = "virsh -c %s version 2>/dev/null" % virt2uri(virt)
     ret, out = utils.run_remote(ip, cmd)
@@ -491,7 +491,7 @@
 
 
 def get_nfs_bin(server):
-    cmd = "cat /etc/issue | grep -v ^$ | egrep 'Red Hat|Fedora'"
+    cmd = 'cat /etc/issue | grep -v ^$ | egrep "Red Hat|Fedora"'
     rc, out = utils.run_remote(server, cmd)
     if rc != 0:
         #SLES
diff --git a/suites/libvirt-cim/lib/XenKvmLib/const.py b/suites/libvirt-cim/lib/XenKvmLib/const.py
--- a/suites/libvirt-cim/lib/XenKvmLib/const.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/const.py
@@ -166,7 +166,7 @@
     # This is a sloppy mechanism for detecting a distro defined revision value
     distro = None
 
-    cmd = "cat /etc/issue | grep 'SUSE Linux Enterprise Server 11'"
+    cmd = 'cat /etc/issue | grep "SUSE Linux Enterprise Server 11"'
     rc, out = run_remote(ip, cmd)
     if rc == 0:
         distro = "sles11"      
diff --git a/suites/libvirt-cim/lib/XenKvmLib/pool.py b/suites/libvirt-cim/lib/XenKvmLib/pool.py
--- a/suites/libvirt-cim/lib/XenKvmLib/pool.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/pool.py
@@ -107,7 +107,7 @@
 
 def enum_volumes(virt, server, pooln=default_pool_name):
     volume = 0
-    cmd = "virsh -c %s vol-list %s 2>/dev/null | sed -e '1,2 d' -e '$ d'" % \
+    cmd = 'virsh -c %s vol-list %s 2>/dev/null | sed -e "1,2 d" -e "$ d"' % \
           (virt2uri(virt), pooln)
     ret, out = run_remote(server ,cmd)
     if ret != 0:
diff --git a/suites/libvirt-cim/lib/XenKvmLib/reporting.py b/suites/libvirt-cim/lib/XenKvmLib/reporting.py
--- a/suites/libvirt-cim/lib/XenKvmLib/reporting.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/reporting.py
@@ -87,7 +87,7 @@
 
 
 def get_env_data(ip, virt):
-    distro = get_cmd_val("cat /etc/issue | sed '/^$/d' | awk 'NR<=1'", ip)
+    distro = get_cmd_val('cat /etc/issue | sed "/^$/d" | awk "NR<=1"', ip)
     if 'SUSE' in distro:
        distro =  (distro.split('-'))[0].split('to')[1]
 
diff --git a/suites/libvirt-cim/lib/XenKvmLib/test_doms.py b/suites/libvirt-cim/lib/XenKvmLib/test_doms.py
--- a/suites/libvirt-cim/lib/XenKvmLib/test_doms.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/test_doms.py
@@ -67,7 +67,7 @@
 def virdomid_list(server, virt="Xen"):
     """Get a list of domid from virsh"""
     
-    cmd = "virsh -c %s list 2>/dev/null | sed '1,2 d; /^$/d'" % \
+    cmd = 'virsh -c %s list 2>/dev/null | sed "1,2 d; /^$/d"' % \
                 virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
     if ret != 0:
@@ -108,7 +108,7 @@
 
 def viruuid(name, server, virt="Xen"):
     """Return domain uuid given domid or domname"""
-    cmd = "virsh -c %s domuuid %s 2>/dev/null | sed '/^$/d'" % \
+    cmd = 'virsh -c %s domuuid %s 2>/dev/null | sed "/^$/d"' % \
                 (virt2uri(virt), name)
     ret, out = utils.run_remote(server, cmd)
     if ret == 0:
@@ -119,7 +119,7 @@
 def destroy_and_undefine_domain(name, server, virt="Xen"):
     """Destroy and undefine a domain.
     name could be domid or domname"""
-    cmd = "virsh -c %s 'destroy %s ; undefine %s' 2>/dev/null" % \
+    cmd = 'virsh -c %s "destroy %s ; undefine %s" 2>/dev/null' % \
                 (virt2uri(virt), name, name)
     utils.run_remote(server, cmd)
 
@@ -164,7 +164,7 @@
     """
        Get the vcpu lists. The input is either the domid or domname.
     """
-    cmd = "virsh -c %s vcpuinfo %s 2>/dev/null | grep '^$' | wc -l" % \
+    cmd = 'virsh -c %s vcpuinfo %s 2>/dev/null | grep "^$" | wc -l' % \
                 (virt2uri(virt), name_id)
     ret, out = utils.run_remote(server, cmd)
 
diff --git a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py
--- a/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py
+++ b/suites/libvirt-cim/lib/XenKvmLib/xm_virt_util.py
@@ -50,7 +50,7 @@
     specified bridge.
     """
 
-    cmd = "brctl show %s | grep 'vif' | grep -v vif0.*" % bridge
+    cmd = 'brctl show %s | grep "vif" | grep -v vif0.*' % bridge
 
     rc, out = utils.run_remote(ip, cmd)
     if rc != 0:
@@ -71,7 +71,7 @@
     """Returns the list of disk of the specified VS
     """
 
-    guest_cmd = "cat /proc/partitions | awk '/^ /{ print $4 } ' "
+    guest_cmd = 'cat /proc/partitions | awk "/^ /{ print $4 } " '
     rc, out = run_remote_guest(ip, vs_name, guest_cmd)
 
     if rc != 0:
@@ -86,7 +86,7 @@
     """
 
     xm_ret, mfm = utils.run_remote(server,
-                    "xm info | awk -F ': ' '/max_free_memory/ {print \$2}'")
+                    'xm info | awk -F ": " "/max_free_memory/ {print \$2}"')
     if xm_ret != 0:
         return None
 
@@ -108,7 +108,7 @@
     if virt == "XenFV":
        virt = "Xen"
 
-    cmd = "virsh -c %s list --all 2>/dev/null | sed -e '1,2 d' -e '$ d'" % \
+    cmd = 'virsh -c %s list --all 2>/dev/null | sed -e "1,2 d" -e "$ d"' % \
                 virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
 
@@ -128,7 +128,7 @@
     if virt == "XenFV":
         virt = "Xen"
 
-    cmd = "virsh -c %s list 2>/dev/null | sed -e '1,2 d' -e '$ d'" % \
+    cmd = 'virsh -c %s list 2>/dev/null | sed -e "1,2 d" -e "$ d"' % \
                 virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
 
@@ -162,7 +162,7 @@
     if fv_cap(server) and gtype == 1:
         bootloader = "/usr/lib/xen/boot/hvmloader"
     else:
-        cmd = "cat /etc/issue | grep -v ^$ | egrep 'Red Hat|Fedora'"
+        cmd = 'cat /etc/issue | grep -v ^$ | egrep "Red Hat|Fedora"'
         ret, out = utils.run_remote(server,cmd)
         if ret != 0:
         # For SLES
@@ -175,7 +175,7 @@
 def net_list(server, virt="Xen"):
     """Function to list active network"""
     names = []
-    cmd = "virsh -c %s net-list 2>/dev/null | sed -e '1,2 d' -e '$ d'" % \
+    cmd = 'virsh -c %s net-list 2>/dev/null | sed -e "1,2 d" -e "$ d"' % \
                 virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
 
@@ -192,8 +192,8 @@
 def get_bridge_from_network_xml(network, server, virt="Xen"):
     """Function returns bridge name for a given virtual network"""
 
-    cmd = "virsh -c %s net-dumpxml %s 2>/dev/null | \
-           awk '/bridge name/ { print $2 }'" % (virt2uri(virt), network)
+    cmd = 'virsh -c %s net-dumpxml %s 2>/dev/null | \
+           awk "/bridge name/ { print $2 }"' % (virt2uri(virt), network)
     ret, out = utils.run_remote(server, cmd)
 
     if ret != 0:
@@ -233,7 +233,7 @@
 def diskpool_list(server, virt="KVM"):
     """Function to list active DiskPool list"""
     names = []
-    cmd = "virsh -c %s pool-list 2>/dev/null | sed -e '1,2 d' -e '$ d'" % \
+    cmd = 'virsh -c %s pool-list 2>/dev/null | sed -e "1,2 d" -e "$ d"' % \
            virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
 
@@ -251,7 +251,7 @@
 def vol_list(server, virt="KVM", pool_name=None):
     """ Function to list the volumes of a pool"""
 
-    cmd = "virsh -c %s vol-list %s 2>/dev/null | sed -e '1,2 d' -e '$ d'" \
+    cmd = 'virsh -c %s vol-list %s 2>/dev/null | sed -e "1,2 d" -e "$ d"' \
             % (virt2uri(virt), pool_name)
     ret, out = utils.run_remote(server, cmd)
     if ret != 0:
@@ -283,14 +283,14 @@
     cmd = "virsh -c %s version 2>/dev/null"  %virt2uri(virt)
     ret, out = utils.run_remote(server, cmd)
     if ret == 0:
-        cmd = "virsh -c %s version 2>/dev/null | grep ^Running | \
-              cut -d ' ' -f 3,4" % virt2uri(virt)
+        cmd = 'virsh -c %s version 2>/dev/null | grep ^Running | \
+              cut -d " " -f 3,4' % virt2uri(virt)
 
     # This is a workaround work for F10.
     # The version option does not seem to work on F10.
     if ret != 0 and virt == 'KVM':
-        cmd = "qemu-kvm --help | grep -i version | tr -s [:space:]  |" \
-              " cut -d ' ' -f 1,5"
+        cmd = 'qemu-kvm --help | grep -i version | tr -s [:space:]  |' \
+              ' cut -d " " -f 1,5'
 
     ret, out = utils.run_remote(server, cmd)
     if ret == 0:
@@ -362,7 +362,7 @@
     """Returns the number of processors of the specified VS
     """
 
-    guest_cmd = "grep '^$' /proc/cpuinfo | wc -l"
+    guest_cmd = 'grep "^$" /proc/cpuinfo | wc -l'
 
     rc, out = run_remote_guest(ip, vs_name, guest_cmd)
     if rc != 0:




More information about the Libvirt-cim mailing list