Index: /drbl-virt/sbin/check_drbl_XenVM
===================================================================
--- /drbl-virt/sbin/check_drbl_XenVM	(revision 219)
+++ /drbl-virt/sbin/check_drbl_XenVM	(revision 219)
@@ -0,0 +1,69 @@
+#!/bin/bash
+# Program:
+#   Check DRBL client status
+# Author: 
+#   Jazz, Rock {jazz, rock}@nchc.org.tw
+# Version:
+#    1.0
+# History:                                                                                          
+#   2010/08/29  Rock    First release (1.0) 
+
+source /opt/drbl-virt/conf/drbl-virt.conf
+source $Work_Path/functions_drbl_virt
+
+
+# [Varliables]
+client_IPs=$(cat $Work_Home/etc/IP_HOST_TABLE | grep -v "#" | awk '{print $1}')
+drbl_vm_file="/tmp/drbl_vm_status.$$"
+drbl_vm_xentop_file="/tmp/drbl_vm_xentop.$$"
+
+# [Main] 
+check_root
+for client_IP in $client_IPs
+do
+    # local variables
+    IP_status="online"
+    client_hostname="$(cat $Work_Home/etc/IP_HOST_TABLE | grep -v "#" | grep $client_IP | awk '{print $2}')"
+    vm_numbers=""
+    vm_hostnames=""
+    vm_IP=""
+    vm_CPU_core=""
+    vm_Ram=""
+    vm_CPU_loading=""
+    vm_Ram_loading=""
+    # check network status
+    ping -c1 -w1 $client_IP > /dev/null 2>&1 || IP_status="offline"
+    
+    if [ $IP_status == "online" ]; then
+        ssh -o StrictHostKeyChecking=no $client_IP "xentop -d1 -b -i2 | awk '/^.*NAME/{i++}i==2'" > $drbl_vm_xentop_file
+        vm_hostnames="$(cat $drbl_vm_xentop_file | sed -n '3,$p' | awk '{print $1}')"
+    
+#        printf "[$client_hostname] " >> $drbl_vm_file
+        printf "[$client_hostname] "
+        declare -i i=1
+
+        vm_numbers=$(echo $vm_hostnames | wc -w)
+
+#        printf "[Running VM: $vm_numbers]\n" >> $drbl_vm_file
+        printf "[Running VM: $vm_numbers]\n"
+
+        for vm_hostname in $vm_hostnames
+        do  
+            vm_CPU_core="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $9}')"
+            vm_Ram="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $5}')"
+            vm_CPU_loading="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $4}')"
+            vm_Ram_loading="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $6}')"
+#            printf "VM$i: $vm_hostname $vm_CPU_core ${vm_Ram}K $vm_CPU_loading%% $vm_Ram_loading%%\n" >> $drbl_vm_file
+            printf "VM$i: $vm_hostname VCPU=$vm_CPU_core Mem=${vm_Ram}K VCPU_loading=$vm_CPU_loading%% Mem_usage=$vm_Ram_loading%%\n"
+            i=i+1
+        done
+        echo "" 
+    else
+        echo "[Error] $client_hostname $client_IP is offline !"
+
+    fi
+
+done
+
+# dlete tmp file
+rm -f $drbl_vm_xentop_file
Index: /drbl-virt/sbin/check_drbl_total_vm
===================================================================
--- /drbl-virt/sbin/check_drbl_total_vm	(revision 218)
+++ /drbl-virt/sbin/check_drbl_total_vm	(revision 219)
@@ -27,9 +27,9 @@
     # local variables
     vm_IPs=$(cat $vm_IP_file | awk '{print $1}')
-    IP_status="online"
 
     for vm_IP in $vm_IPs
     do
         # check network status
+        IP_status="online"
         ping -c1 -w1 $vm_IP > /dev/null 2>&1 || IP_status="offline"
         vm_IP_Hostname=$(sed -n "/$vm_IP/p" $vm_IP_file)
Index: bl-virt/sbin/check_drbl_vm
===================================================================
--- /drbl-virt/sbin/check_drbl_vm	(revision 218)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#!/bin/bash
-# Program:
-#   Check DRBL client status
-# Author: 
-#   Jazz, Rock {jazz, rock}@nchc.org.tw
-# Version:
-#    1.0
-# History:                                                                                          
-#   2010/08/29  Rock    First release (1.0) 
-
-source /opt/drbl-virt/conf/drbl-virt.conf
-source $Work_Path/functions_drbl_virt
-
-
-# [Varliables]
-client_IPs=$(cat $Work_Home/etc/IP_HOST_TABLE | grep -v "#" | awk '{print $1}')
-drbl_vm_file="/tmp/drbl_vm_status.$$"
-drbl_vm_xentop_file="/tmp/drbl_vm_xentop.$$"
-
-# [Main] 
-check_root
-for client_IP in $client_IPs
-do
-    # local variables
-    IP_status="online"
-    client_hostname="$(cat $Work_Home/etc/IP_HOST_TABLE | grep -v "#" | grep $client_IP | awk '{print $2}')"
-    vm_numbers=""
-    vm_hostnames=""
-    vm_IP=""
-    vm_CPU_core=""
-    vm_Ram=""
-    vm_CPU_loading=""
-    vm_Ram_loading=""
-    # check network status
-    ping -c1 -w1 $client_IP > /dev/null 2>&1 || IP_status="offline"
-    
-    if [ $IP_status == "online" ]; then
-        ssh -o StrictHostKeyChecking=no $client_IP "xentop -d1 -b -i2 | awk '/^.*NAME/{i++}i==2'" > $drbl_vm_xentop_file
-        vm_hostnames="$(cat $drbl_vm_xentop_file | sed -n '3,$p' | awk '{print $1}')"
-    
-#        printf "[$client_hostname] " >> $drbl_vm_file
-        printf "[$client_hostname] "
-        declare -i i=1
-
-        vm_numbers=$(echo $vm_hostnames | wc -w)
-
-#        printf "[Running VM: $vm_numbers]\n" >> $drbl_vm_file
-        printf "[Running VM: $vm_numbers]\n"
-
-        for vm_hostname in $vm_hostnames
-        do  
-            vm_CPU_core="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $9}')"
-            vm_Ram="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $5}')"
-            vm_CPU_loading="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $4}')"
-            vm_Ram_loading="$(cat $drbl_vm_xentop_file | grep $vm_hostname | awk '{print $6}')"
-#            printf "VM$i: $vm_hostname $vm_CPU_core ${vm_Ram}K $vm_CPU_loading%% $vm_Ram_loading%%\n" >> $drbl_vm_file
-            printf "VM$i: $vm_hostname VCPU=$vm_CPU_core Mem=${vm_Ram}K VCPU_loading=$vm_CPU_loading%% Mem_usage=$vm_Ram_loading%%\n"
-            i=i+1
-        done
-        echo "" 
-    else
-        echo "[Error] $client_hostname $client_IP is offline !"
-
-    fi
-
-done
-
-# dlete tmp file
-rm -f $drbl_vm_xentop_file
Index: /drbl-virt/sbin/drbl_PXE_KVM-VM_deploy
===================================================================
--- /drbl-virt/sbin/drbl_PXE_KVM-VM_deploy	(revision 219)
+++ /drbl-virt/sbin/drbl_PXE_KVM-VM_deploy	(revision 219)
@@ -0,0 +1,155 @@
+#!/bin/bash
+# Program:
+#   Deploy PXE PV VM to DRBL client
+# Author: 
+#   Jazz, Rock {jazz, rock}@nchc.org.tw
+# Version:
+#    1.0
+# History:                                                                                          
+#   2010/08/27  Rock    First release (1.0) 
+
+# [Source]
+source /opt/drbl-virt/conf/drbl-virt.conf
+source $Work_Path/functions_drbl_virt
+#source ./functions_drbl_PXE_PV-VM_create
+
+
+# [Declation]
+# = 1. Varibales declation =
+vm_name=""
+vm_ram="256"
+vm_mac=""
+
+vm_dir="/home/domains"
+
+# = 2. Functions declation =
+Usage(){
+echo "Usage: drbl_PXE_PV-VM_deploy [options]"
+echo "Options:"
+echo "-h|--host      deploy vm to which host"
+echo "-v|--vm        vm name"
+echo "-r|--ram       vm ram size(M) (default: 256)"
+echo "Example:"
+echo "drbl_PXE_KVM-VM_deploy -h drbl101 -v drbl131 -r 512"
+}
+
+
+# [Main]
+check_root
+# = 1. Parse parameters = 
+if [ $# -eq 0 ]; then
+Usage && exit
+fi
+
+while [ $# -gt 0 ]; do
+    case "$1" in
+        -h|--host)
+            shift 
+            if [ -z "$(echo $1 |grep ^-.)" ]; then
+                if [ -n "$(echo $1)" ]; then
+                    client_name=$1
+                else
+                    echo "-h host value is null"
+                    Usage && exit 2
+                fi
+            shift 
+            fi 
+            ;; 
+        -v|--vm)
+            shift
+            if [ -z "$(echo $1 |grep ^-.)" ]; then
+                if [ -n "$(echo $1)" ]; then
+                    vm_name=$1
+                else
+                    echo "-v vm name is null"
+                    Usage && exit 2
+                fi
+            shift
+            fi
+            ;;
+        -r|--ram)
+            shift 
+            if [ -z "$(echo $1 |grep ^-.)" ]; then
+                if [ -n "$(echo $1)" ]; then
+                    vm_ram=$1
+                else
+                    echo "-r ram_value is null"
+                    Usage && exit 2
+                fi
+            shift 
+            fi 
+            ;; 
+        -*)
+            echo "$0 $1 invalid option" >&2
+            echo ""
+            Usage >&2
+            exit 2
+            ;;
+        *)  Usage >&2
+            exit 2
+            ;;
+    esac
+done
+
+
+# = 2. Check null value =
+[ -z $client_name ] && echo "[Error] no host" && Usage && exit 2
+[ -z $vm_name ] && echo "[Error] no VM name" && Usage && exit 2
+
+
+# = 3. Check exist
+# check drbl client exist
+cat $Work_Home/etc/IP_HOST_TABLE | grep $client_name
+if [ $? -ne 0 ]; then
+    echo "[Error] This host is not DRBL client"
+    exit 2
+fi
+# check vm name exist
+IP_VM_files=$(ls $Work_Home/etc | grep 'IP_VM_eth[0-9]$')
+vm_exist_jude="no"
+for vm_IP_file in $IP_VM_files
+do
+    if [ -n "$(grep "$vm_name" $Work_Home/etc/$vm_IP_file)" ]; then
+        vm_exist_jude="yes"
+    fi
+done
+
+if [ $vm_exist_jude == "no" ]; then
+    echo "[Error] This VM name isn't DRBL PXE VM"
+    exit 2
+fi
+
+# 4. Get Mac Address
+IP_VM_right_file=""
+IP_VM_right_line=""
+IP_VM_eth=""
+for IP_VM_file in $IP_VM_files
+do
+    IP_VM_line=$(cat -n $Work_Home/etc/$IP_VM_file | grep "$vm_name" | awk '{print $1}') 
+    if [ -n $IP_VM_line ]; then
+        IP_VM_right_file=$IP_VM_file
+        IP_VM_right_line=$IP_VM_line
+    fi
+done
+
+# if no value, exit and check IP_VM_ethX
+if [ -z $IP_VM_right_file ]; then
+    echo ""
+    echo "[Error] don't fine ${vm_name}'s IP address"
+    echo "Please check $Wokr_Home/etc/"
+    exit 2
+fi
+
+# start get mac address
+IP_VM_eth=$(echo $IP_VM_right_file | sed 's/IP_VM_//g' )
+vm_mac=$(cat $Work_Home/etc/macadr-VM-${IP_VM_eth}.txt | sed -n "${IP_VM_right_line}p")
+
+# = 4. ssh host to deploy VM  =
+# local varibales
+host_IP=$(cat $Work_Home/etc/IP_HOST_TABLE | grep $client_name | awk '{print $1}')
+
+# start ssh
+vnc_nus=$(ssh -o StrictHostKeyChecking=no $host_IP "netstat -tunlp | grep kvm | wc -l")
+vnc_nus=$((vnc_nus+1))
+ssh -o StrictHostKeyChecking=no $host_IP "kvm -name $vm_name -m $vm_ram -net nic,macaddr=$vm_mac -net tap -vnc :$vnc_nus -boot n &"
+
Index: /drbl-virt/sbin/drbl_PXE_PV-VM_create
===================================================================
--- /drbl-virt/sbin/drbl_PXE_PV-VM_create	(revision 218)
+++ /drbl-virt/sbin/drbl_PXE_PV-VM_create	(revision 219)
@@ -111,5 +111,4 @@
         vm_exist_jude="yes"
     fi
-    
 done
 
Index: /drbl-virt/sbin/drbl_PXE_PV-VM_deploy
===================================================================
--- /drbl-virt/sbin/drbl_PXE_PV-VM_deploy	(revision 218)
+++ /drbl-virt/sbin/drbl_PXE_PV-VM_deploy	(revision 219)
@@ -52,5 +52,5 @@
             fi 
             ;; 
-        -v|--vm_cfg)
+        -v|--vm)
             shift
             if [ -z "$(echo $1 |grep ^-.)" ]; then
Index: /drbl-virt/sbin/drbl_bridge_kvm_patch
===================================================================
--- /drbl-virt/sbin/drbl_bridge_kvm_patch	(revision 218)
+++ /drbl-virt/sbin/drbl_bridge_kvm_patch	(revision 219)
@@ -17,5 +17,5 @@
 # = 1. Patch DRBL initrd to support bridge =
 # == Patch /usr/bin/mkpxeinitrd-net ==
-# backup mkpxeinitrd-net. if already has "drbl-virt add", dones't sed
+# backup mkpxeinitrd-net. if already has "drbl-virt add", doesn't sed
 cat /usr/bin/mkpxeinitrd-net | grep "# drbl-virt add" >> /dev/null
 if [ $? != 0 ]; then
Index: /drbl-virt/sbin/drbl_bridge_xen_patch
===================================================================
--- /drbl-virt/sbin/drbl_bridge_xen_patch	(revision 218)
+++ /drbl-virt/sbin/drbl_bridge_xen_patch	(revision 219)
@@ -25,4 +25,5 @@
 cp $Work_Home/conf/initrd_bin/xen-network-common.sh /usr/lib/mkpxeinitrd-net/initrd-skel/bin/
 cp $Work_Home/conf/initrd_bin/xen-script-common.sh /usr/lib/mkpxeinitrd-net/initrd-skel/bin/
+
 # patch it to copy command
 declare -i modify_line=$(cat -n /usr/bin/mkpxeinitrd-net | grep 'include_bin_prog_from_server=' | awk '{print $1}')
Index: /drbl-virt/sbin/drbl_kvm_patch.sh
===================================================================
--- /drbl-virt/sbin/drbl_kvm_patch.sh	(revision 218)
+++ /drbl-virt/sbin/drbl_kvm_patch.sh	(revision 219)
@@ -64,27 +64,35 @@
 
 # = 3. Load KVM module when booting =
+if [ -e /opt/drbl/conf/client-extra-service ]; then
+    grep 'service_extra_added="kvm"' /opt/drbl/conf/client-extra-service
+    if [ $? -eq 1 ]; then
+        echo 'service_extra_added="kvm"' >> /opt/drbl/conf/client-extra-service
+    fi
+else
+    echo 'service_extra_added="kvm"' > /opt/drbl/conf/client-extra-service
+fi
 # for Debian & Ubuntu
-if [ -e /etc/modules ]; then
-    grep kvm /etc/modules
-    if [ $? -eq 1 ]; then
-       echo "kvm" >> /etc/modules
-    fi
+#if [ -e /etc/modules ]; then
+#    grep kvm /etc/modules
+#    if [ $? -eq 1 ]; then
+#       echo "kvm" >> /etc/modules
+#    fi
 # for CentOS & Fedora
-elif [ -e /etc/sysconfig/modules ]; then
-    grep -r "modprobe kvm" /etc/sysconfig/modules/ 
-    if [ $? -eq 1 ]; then
-        cat  > /etc/sysconfig/modules/kvm.modules << EOF
-#!/bin/sh                 
-echo -n "Loading kvm module..."
-if \$(/sbin/modprobe kvm)
-    then
-        echo "[SUCCESS]:"
-    else
-        echo "[FAILURE]:"
-fi
-EOF
-    chmod +x /etc/sysconfig/modules/kvm.modules
-    fi
-fi
+#elif [ -e /etc/sysconfig/modules ]; then
+#    grep -r "modprobe kvm" /etc/sysconfig/modules/ 
+#    if [ $? -eq 1 ]; then
+#        cat  > /etc/sysconfig/modules/kvm.modules << EOF
+##!/bin/sh                 
+#echo -n "Loading kvm module..."
+#if \$(/sbin/modprobe kvm)
+#    then
+#        echo "[SUCCESS]:"
+#    else
+#        echo "[FAILURE]:"
+#fi
+#EOF
+#    chmod +x /etc/sysconfig/modules/kvm.modules
+#    fi
+#fi
 
 # = 4. Copy xen kernel & initrd to /home/domains =
Index: /drbl-virt/sbin/drbl_xen_patch.sh
===================================================================
--- /drbl-virt/sbin/drbl_xen_patch.sh	(revision 218)
+++ /drbl-virt/sbin/drbl_xen_patch.sh	(revision 219)
@@ -72,5 +72,8 @@
 # = 3. enable xend xendomains daemon in DRBL Client =
 if [ -e /opt/drbl/conf/client-extra-service ]; then
-    echo 'service_extra_added="xend xendomains"' >> /opt/drbl/conf/client-extra-service
+    grep 'service_extra_added="xend xendomains"' /opt/drbl/conf/client-extra-service
+    if [ $? -eq 1 ]; then
+        echo 'service_extra_added="xend xendomains"' >> /opt/drbl/conf/client-extra-service
+    fi
 else
     echo 'service_extra_added="xend xendomains"' > /opt/drbl/conf/client-extra-service
