You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by an...@apache.org on 2013/12/10 10:12:51 UTC

git commit: updated refs/heads/4.3 to ff97861

Updated Branches:
  refs/heads/4.3 794c17921 -> ff9786177


put CS/XS plugin log into seperate directory


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ff978617
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ff978617
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ff978617

Branch: refs/heads/4.3
Commit: ff9786177eec375dad18332c2123993c6f1df72a
Parents: 794c179
Author: Anthony Xu <an...@citrix.com>
Authored: Tue Dec 10 01:11:59 2013 -0800
Committer: Anthony Xu <an...@citrix.com>
Committed: Tue Dec 10 01:11:59 2013 -0800

----------------------------------------------------------------------
 .../xen/resource/CitrixResourceBase.java        |   2 +-
 scripts/vm/hypervisor/xenserver/cloudlog        |  12 +
 scripts/vm/hypervisor/xenserver/ovs-pvlan       |   6 +-
 scripts/vm/hypervisor/xenserver/ovstunnel       |   6 +-
 scripts/vm/hypervisor/xenserver/s3xen           |   6 +-
 scripts/vm/hypervisor/xenserver/storagePlugin   |  10 +-
 scripts/vm/hypervisor/xenserver/swiftxen        |  12 +-
 scripts/vm/hypervisor/xenserver/vmops           | 236 ++++++++++---------
 scripts/vm/hypervisor/xenserver/vmopsSnapshot   | 108 +++++----
 scripts/vm/hypervisor/xenserver/vmopspremium    |   8 +-
 scripts/vm/hypervisor/xenserver/xcposs/patch    |   1 +
 scripts/vm/hypervisor/xenserver/xcpserver/patch |   1 +
 .../vm/hypervisor/xenserver/xenserver56/patch   |   2 +-
 .../hypervisor/xenserver/xenserver56fp1/patch   |   2 +-
 .../vm/hypervisor/xenserver/xenserver60/patch   |   1 +
 15 files changed, 226 insertions(+), 187 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 86e2176..6280aa8 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -5298,7 +5298,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
                 com.trilead.ssh2.Session session = sshConnection.openSession();
 
-                String cmd = "mkdir -p /opt/cloud/bin";
+                String cmd = "mkdir -p /opt/cloud/bin /var/log/cloud";
                 if (!SSHCmdHelper.sshExecuteCmd(sshConnection, cmd)) {
                     throw new CloudRuntimeException("Cannot create directory /opt/cloud/bin on XenServer hosts");
                 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/cloudlog
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/cloudlog b/scripts/vm/hypervisor/xenserver/cloudlog
new file mode 100644
index 0000000..19560ef
--- /dev/null
+++ b/scripts/vm/hypervisor/xenserver/cloudlog
@@ -0,0 +1,12 @@
+/var/log/cloud/vmops.log {
+    daily
+    size 1M
+    rotate 20
+}
+
+/var/log/cloud/ovstunnel.log /var/log/cloud/ovs-pvlan.log /var/log/cloud/swiftxen.log /var/log/cloud/s3xen /var/log/cloud/storageplugin {
+    daily
+    size 1M
+    rotate 2
+}
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/ovs-pvlan
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/ovs-pvlan b/scripts/vm/hypervisor/xenserver/ovs-pvlan
index 8579b55..c9280a5 100755
--- a/scripts/vm/hypervisor/xenserver/ovs-pvlan
+++ b/scripts/vm/hypervisor/xenserver/ovs-pvlan
@@ -31,7 +31,7 @@ import util
 from time import localtime as _localtime, asctime as _asctime
 
 xePath = "/opt/xensource/bin/xe"
-lib.setup_logging("/var/log/ovs-pvlan.log")
+lib.setup_logging("/var/log/cloud/ovs-pvlan.log")
 dhcpSetupPath = "/opt/cloud/bin/ovs-pvlan-dhcp-host.sh"
 vmSetupPath = "/opt/cloud/bin/ovs-pvlan-vm.sh"
 getDhcpIfacePath = "/opt/cloud/bin/ovs-get-dhcp-iface.sh"
@@ -41,9 +41,9 @@ getBridgePath = "/opt/cloud/bin/ovs-get-bridge.sh"
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name)
+        logging.debug("#### VMOPS enter  %s ####" % name)
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name)
+        logging.debug("#### VMOPS exit  %s ####" % name)
         return res
     return wrapped
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/ovstunnel
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/ovstunnel b/scripts/vm/hypervisor/xenserver/ovstunnel
index ddcaa5b..075de85 100755
--- a/scripts/vm/hypervisor/xenserver/ovstunnel
+++ b/scripts/vm/hypervisor/xenserver/ovstunnel
@@ -34,7 +34,7 @@ import util
 from time import localtime as _localtime, asctime as _asctime
 
 xePath = "/opt/xensource/bin/xe"
-lib.setup_logging("/var/log/ovstunnel.log")
+lib.setup_logging("/var/log/cloud/ovstunnel.log")
 
 
 def block_ipv6_v5(bridge):
@@ -53,9 +53,9 @@ block_ipv6_handlers = {
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name)
+        logging.debug("#### VMOPS enter  %s ####" % name)
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name)
+        logging.debug("#### VMOPS exit  %s ####" % name)
         return res
     return wrapped
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/s3xen
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/s3xen b/scripts/vm/hypervisor/xenserver/s3xen
index bf81bbd..ccd7ce5 100644
--- a/scripts/vm/hypervisor/xenserver/s3xen
+++ b/scripts/vm/hypervisor/xenserver/s3xen
@@ -39,6 +39,10 @@ from xml.dom.minidom import parseString
 import XenAPIPlugin
 sys.path.extend(["/opt/xensource/sm/"])
 import util
+import cloudstack_pluginlib as lib
+import logging
+
+lib.setup_logging("/var/log/cloud/s3xen.log")
 
 NULL = 'null'
 
@@ -102,7 +106,7 @@ def get_optional_key(map, key, default=''):
 
 def log(message):
 
-    util.SMlog('#### VMOPS %s ####' % message)
+    logging.debug('#### VMOPS %s ####' % message)
 
 
 def echo(fn):

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/storagePlugin
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/storagePlugin b/scripts/vm/hypervisor/xenserver/storagePlugin
index bb03379..ff00fa2 100755
--- a/scripts/vm/hypervisor/xenserver/storagePlugin
+++ b/scripts/vm/hypervisor/xenserver/storagePlugin
@@ -32,13 +32,17 @@ import subprocess
 import zlib
 import urllib2
 import traceback
+import cloudstack_pluginlib as lib
+import logging
+
+lib.setup_logging("/var/log/cloud/storageplugin.log")
 
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### xen plugin enter  %s ####" % name )
+        logging.debug("#### xen plugin enter  %s ####" % name )
         res = fn(*v, **k)
-        util.SMlog("#### xen plugin exit  %s ####" % name )
+        logging.debug("#### xen plugin exit  %s ####" % name )
         return res
     return wrapped
 
@@ -53,7 +57,7 @@ def downloadTemplateFromUrl(session, args):
         destFile.close()
         return "success"
     except:
-        util.SMlog("exception: " + str(sys.exc_info()))
+        logging.debug("exception: " + str(sys.exc_info()))
         return ""
     
 @echo

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/swiftxen
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/swiftxen b/scripts/vm/hypervisor/xenserver/swiftxen
index 46229e3..8342238 100644
--- a/scripts/vm/hypervisor/xenserver/swiftxen
+++ b/scripts/vm/hypervisor/xenserver/swiftxen
@@ -24,13 +24,17 @@ import os, sys, time
 import XenAPIPlugin
 sys.path.extend(["/opt/xensource/sm/"])
 import util
+import cloudstack_pluginlib as lib
+import logging
+
+lib.setup_logging("/var/log/cloud/swiftxen.log")
 
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name )
+        logging.debug("#### VMOPS enter  %s ####" % name )
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name )
+        logging.debug("#### VMOPS exit  %s ####" % name )
         return res
     return wrapped
 
@@ -48,7 +52,7 @@ def upload(args):
     lfilename = args['lfilename']
     isISCSI = args['isISCSI']
     segment = 0
-    util.SMlog("#### VMOPS upload %s to swift ####", lfilename)
+    logging.debug("#### VMOPS upload %s to swift ####", lfilename)
     savedpath = os.getcwd()
     os.chdir(ldir)
     try :
@@ -85,7 +89,7 @@ def swift(session, args):
     elif op == 'delete' :
         cmd = ["st", "-A https://" + hostname + ":8080/auth/v1.0 -U " + account + ":" + username + " -K " + token + " delete " + rfilename]
     else :
-        util.SMlog("doesn't support swift operation  %s " % op )
+        logging.debug("doesn't support swift operation  %s " % op )
         return 'false'
     try:
         util.pread2(cmd)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/vmops
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops
index e4b3caf..2e14fad 100755
--- a/scripts/vm/hypervisor/xenserver/vmops
+++ b/scripts/vm/hypervisor/xenserver/vmops
@@ -34,14 +34,18 @@ import tempfile
 import util
 import subprocess
 import zlib
+import cloudstack_pluginlib as lib
+import logging
 from util import CommandException
 
+lib.setup_logging("/var/log/cloud/vmops.log")
+
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name )
+        logging.debug("#### VMOPS enter  %s ####" % name )
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name )
+        logging.debug("#### VMOPS exit  %s ####" % name )
         return res
     return wrapped
 
@@ -96,7 +100,7 @@ def preparemigration(session, args):
         util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog("Catch prepare migration exception" )
+        logging.debug("Catch prepare migration exception" )
         txt = ''
 
     return txt
@@ -108,7 +112,7 @@ def setIptables(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog("  setIptables execution failed "  )
+        logging.debug("  setIptables execution failed "  )
         txt = '' 
 
     return txt
@@ -153,7 +157,7 @@ def pingtest(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog("  pingtest failed "  )
+        logging.debug("  pingtest failed "  )
         txt = ''
 
     return txt
@@ -168,7 +172,7 @@ def savePassword(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog("  save password to domr failed "  )
+        logging.debug("  save password to domr failed "  )
         txt = '' 
 
     return txt
@@ -183,7 +187,7 @@ def saveDhcpEntry(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog(" save dhcp entry failed "  )
+        logging.debug(" save dhcp entry failed "  )
         txt = '' 
 
     return txt
@@ -245,7 +249,7 @@ def setFirewallRule(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog(" set firewall rule failed "  )
+        logging.debug(" set firewall rule failed "  )
         txt = '' 
 
     return txt
@@ -261,7 +265,7 @@ def routerProxy(session, args):
         if txt is None or len(txt) == 0 :
             txt = 'success'
     except:
-        util.SMlog("routerProxy command " + sargs + " failed "  )
+        logging.debug("routerProxy command " + sargs + " failed "  )
         txt = '' 
 
     return txt
@@ -278,7 +282,7 @@ def setLoadBalancerRule(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog(" set loadbalancer rule failed "  )
+        logging.debug(" set loadbalancer rule failed "  )
         txt = '' 
 
     return txt
@@ -291,7 +295,7 @@ def configdnsmasq(session, args):
        util.pread2(['ssh','-p','3922','-q','-o','StrictHostKeyChecking=no','-i','/root/.ssh/id_rsa.cloud',target,'/root/dnsmasq.sh',args])
        txt='success'
     except:
-       util.SMlog("failed to config dnsmasq server")
+       logging.debug("failed to config dnsmasq server")
        txt=''
     return txt
 
@@ -305,7 +309,7 @@ def createipAlias(session, args):
        txt=util.pread2(cmd)
        txt='success'
     except:
-       util.SMlog("failed to create ip alias on router vm")
+       logging.debug("failed to create ip alias on router vm")
        txt=''
     return txt
 
@@ -319,7 +323,7 @@ def deleteipAlias(session, args):
        txt=util.pread2(cmd)
        txt='success'
     except:
-       util.SMlog("failed to create ip alias on router vm")
+       logging.debug("failed to create ip alias on router vm")
        txt=''
     return txt
 
@@ -334,7 +338,7 @@ def createFile(session, args):
         f.close()
         txt = 'success'
     except:
-        util.SMlog(" failed to create HA proxy cfg file ")
+        logging.debug(" failed to create HA proxy cfg file ")
         txt = ''
 
     return txt
@@ -354,7 +358,7 @@ def createFileInDomr(session, args):
         util.pread2(['rm',tmpfile])
         txt = 'success'
     except:
-        util.SMlog(" failed to create HA proxy cfg file ")
+        logging.debug(" failed to create HA proxy cfg file ")
         txt = ''
 
     return txt
@@ -368,7 +372,7 @@ def deleteFile(session, args):
             os.remove(file_path)
         txt = 'success'
     except:
-        util.SMlog(" failed to remove HA proxy cfg file ")
+        logging.debug(" failed to remove HA proxy cfg file ")
         txt = ''
 
     return txt
@@ -409,7 +413,7 @@ def can_bridge_firewall(session, args):
         util.pread2(['iptables', '-A', 'BRIDGE-FIREWALL', '-m', 'physdev', '--physdev-is-bridged',  '-p', 'udp', '--dport', '68', '--sport', '67',  '-j', 'ACCEPT'])
         util.pread2(['iptables', '-D', 'FORWARD',  '-j', 'RH-Firewall-1-INPUT'])
     except:
-        util.SMlog('Chain BRIDGE-FIREWALL already exists')
+        logging.debug('Chain BRIDGE-FIREWALL already exists')
 
     try:
         util.pread2(['iptables', '-N', 'BRIDGE-DEFAULT-FIREWALL'])
@@ -421,7 +425,7 @@ def can_bridge_firewall(session, args):
         util.pread2(['iptables', '-D', 'BRIDGE-FIREWALL', '-m', 'physdev', '--physdev-is-bridged',  '-p', 'udp', '--dport', '67', '--sport', '68',  '-j', 'ACCEPT'])
         util.pread2(['iptables', '-D', 'BRIDGE-FIREWALL', '-m', 'physdev', '--physdev-is-bridged',  '-p', 'udp', '--dport', '68', '--sport', '67',  '-j', 'ACCEPT'])
     except:
-        util.SMlog('Chain BRIDGE-DEFAULT-FIREWALL already exists')
+        logging.debug('Chain BRIDGE-DEFAULT-FIREWALL already exists')
 
     result = 'true'
     try:
@@ -468,7 +472,7 @@ def default_ebtables_rules():
         # deny all others (e.g., 802.1d, CDP)
         util.pread2(['ebtables', '-A', 'DEFAULT_EBTABLES',  '-j', 'DROP'])
     except:
-        util.SMlog('Chain DEFAULT_EBTABLES already exists')
+        logging.debug('Chain DEFAULT_EBTABLES already exists')
 
 
 @echo
@@ -485,7 +489,7 @@ def allow_egress_traffic(session):
             try:
                 util.pread2(['iptables', '-I', 'FORWARD', '2', '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', d, '-j', 'ACCEPT'])
             except:
-                util.SMlog("Failed to add FORWARD rule through to %s" % d)
+                logging.debug("Failed to add FORWARD rule through to %s" % d)
                 return 'false'
     return 'true'
 
@@ -494,7 +498,7 @@ def ipset(ipsetname, proto, start, end, ips):
     try:
         util.pread2(['ipset', '-N', ipsetname, 'iptreemap'])
     except:
-        util.SMlog("ipset chain already exists" + ipsetname)
+        logging.debug("ipset chain already exists" + ipsetname)
 
     result = True
     ipsettmp = ''.join(''.join(ipsetname.split('-')).split('_')) + str(int(time.time()) % 1000)
@@ -502,11 +506,11 @@ def ipset(ipsetname, proto, start, end, ips):
     try: 
         util.pread2(['ipset', '-N', ipsettmp, 'iptreemap']) 
     except:
-        util.SMlog("Failed to create temp ipset, reusing old name= " + ipsettmp)
+        logging.debug("Failed to create temp ipset, reusing old name= " + ipsettmp)
         try: 
             util.pread2(['ipset', '-F', ipsettmp]) 
         except:
-            util.SMlog("Failed to clear old temp ipset name=" + ipsettmp)
+            logging.debug("Failed to clear old temp ipset name=" + ipsettmp)
             return False
         
     try: 
@@ -517,7 +521,7 @@ def ipset(ipsetname, proto, start, end, ips):
                 if cex.reason.rfind('already in set') == -1:
                    raise
     except:
-        util.SMlog("Failed to program ipset " + ipsetname)
+        logging.debug("Failed to program ipset " + ipsetname)
         util.pread2(['ipset', '-F', ipsettmp]) 
         util.pread2(['ipset', '-X', ipsettmp]) 
         return False
@@ -525,7 +529,7 @@ def ipset(ipsetname, proto, start, end, ips):
     try: 
         util.pread2(['ipset', '-W', ipsettmp, ipsetname]) 
     except:
-        util.SMlog("Failed to swap ipset " + ipsetname)
+        logging.debug("Failed to swap ipset " + ipsetname)
         result = False
 
     try: 
@@ -533,7 +537,7 @@ def ipset(ipsetname, proto, start, end, ips):
         util.pread2(['ipset', '-X', ipsettmp]) 
     except:
         # if the temporary name clashes next time we'll just reuse it
-        util.SMlog("Failed to delete temp ipset " + ipsettmp)
+        logging.debug("Failed to delete temp ipset " + ipsettmp)
 
     return result
 
@@ -550,7 +554,7 @@ def destroy_network_rules_for_vm(session, args):
             util.pread2(['iptables', '-F', vmchain_default])
             util.pread2(['iptables', '-X', vmchain_default])
         except:
-            util.SMlog("Ignoring failure to delete  chain " + vmchain_default)
+            logging.debug("Ignoring failure to delete  chain " + vmchain_default)
     
     destroy_ebtables_rules(vmchain)
     destroy_arptables_rules(vmchain)
@@ -559,14 +563,14 @@ def destroy_network_rules_for_vm(session, args):
         util.pread2(['iptables', '-F', vmchain])
         util.pread2(['iptables', '-X', vmchain])
     except:
-        util.SMlog("Ignoring failure to delete ingress chain " + vmchain)
+        logging.debug("Ignoring failure to delete ingress chain " + vmchain)
         
    
     try:
         util.pread2(['iptables', '-F', vmchain_egress])
         util.pread2(['iptables', '-X', vmchain_egress])
     except:
-        util.SMlog("Ignoring failure to delete egress chain " + vmchain_egress)
+        logging.debug("Ignoring failure to delete egress chain " + vmchain_egress)
     
     remove_rule_log_for_vm(vm_name)
     remove_secip_log_for_vm(vm_name)
@@ -582,7 +586,7 @@ def destroy_network_rules_for_vm(session, args):
                 util.pread2(['ipset', '-F', set])       
                 util.pread2(['ipset', '-X', set])       
     except:
-        util.SMlog("Failed to destroy ipsets for %" % vm_name)
+        logging.debug("Failed to destroy ipsets for %" % vm_name)
     
     
     return 'true'
@@ -599,12 +603,12 @@ def destroy_ebtables_rules(vm_chain):
             dc.insert(0, 'ebtables')
             util.pread2(dc)
         except:
-            util.SMlog("Ignoring failure to delete ebtables rules for vm " + vm_chain)
+            logging.debug("Ignoring failure to delete ebtables rules for vm " + vm_chain)
     try:
         util.pread2(['ebtables', '-F', vm_chain])
         util.pread2(['ebtables', '-X', vm_chain])
     except:
-            util.SMlog("Ignoring failure to delete ebtables chain for vm " + vm_chain)   
+            logging.debug("Ignoring failure to delete ebtables chain for vm " + vm_chain)   
 
 @echo
 def destroy_arptables_rules(vm_chain):
@@ -619,18 +623,18 @@ def destroy_arptables_rules(vm_chain):
             dc.insert(2, 'FORWARD')
             util.pread2(dc)
         except:
-            util.SMlog("Ignoring failure to delete arptables rules for vm " + vm_chain)
+            logging.debug("Ignoring failure to delete arptables rules for vm " + vm_chain)
     
     try:
         util.pread2(['arptables', '-F', vm_chain])
         util.pread2(['arptables', '-X', vm_chain])
     except:
-        util.SMlog("Ignoring failure to delete arptables chain for vm " + vm_chain) 
+        logging.debug("Ignoring failure to delete arptables chain for vm " + vm_chain) 
               
 @echo
 def default_ebtables_antispoof_rules(vm_chain, vifs, vm_ip, vm_mac):
     if vm_mac == 'ff:ff:ff:ff:ff:ff':
-        util.SMlog("Ignoring since mac address is not valid")
+        logging.debug("Ignoring since mac address is not valid")
         return 'true'
     
     try:
@@ -639,7 +643,7 @@ def default_ebtables_antispoof_rules(vm_chain, vifs, vm_ip, vm_mac):
         try:
             util.pread2(['ebtables', '-F', vm_chain])
         except:
-            util.SMlog("Failed to create ebtables antispoof chain, skipping")
+            logging.debug("Failed to create ebtables antispoof chain, skipping")
             return 'true'
 
     # note all rules for packets into the bridge (-i) precede all output rules (-o)
@@ -649,7 +653,7 @@ def default_ebtables_antispoof_rules(vm_chain, vifs, vm_ip, vm_mac):
             util.pread2(['ebtables', '-I', 'FORWARD', '2', '-i',  vif,  '-j', vm_chain])
             util.pread2(['ebtables', '-A', 'FORWARD', '-o',  vif, '-j', vm_chain])
     except:
-        util.SMlog("Failed to program default ebtables FORWARD rules for %s" % vm_chain)
+        logging.debug("Failed to program default ebtables FORWARD rules for %s" % vm_chain)
         return 'false'
 
     try:
@@ -665,7 +669,7 @@ def default_ebtables_antispoof_rules(vm_chain, vifs, vm_ip, vm_mac):
             # do not allow snooping of dhcp requests
             util.pread2(['ebtables', '-A', vm_chain, '-o', vif, '-p', 'IPv4', '--ip-proto', 'udp', '--ip-dport', '67', '-j', 'DROP'])
     except:
-        util.SMlog("Failed to program default ebtables antispoof rules for %s" % vm_chain)
+        logging.debug("Failed to program default ebtables antispoof rules for %s" % vm_chain)
         return 'false'
 
     return 'true'
@@ -673,7 +677,7 @@ def default_ebtables_antispoof_rules(vm_chain, vifs, vm_ip, vm_mac):
 @echo
 def default_arp_antispoof(vm_chain, vifs, vm_ip, vm_mac):
     if vm_mac == 'ff:ff:ff:ff:ff:ff':
-        util.SMlog("Ignoring since mac address is not valid")
+        logging.debug("Ignoring since mac address is not valid")
         return 'true'
 
     try:
@@ -682,7 +686,7 @@ def default_arp_antispoof(vm_chain, vifs, vm_ip, vm_mac):
         try:
             util.pread2(['arptables', '-F', vm_chain])
         except:
-            util.SMlog("Failed to create arptables rule, skipping")
+            logging.debug("Failed to create arptables rule, skipping")
             return 'true'
 
     # note all rules for packets into the bridge (-i) precede all output rules (-o)
@@ -691,7 +695,7 @@ def default_arp_antispoof(vm_chain, vifs, vm_ip, vm_mac):
            util.pread2(['arptables',  '-I', 'FORWARD', '-i',  vif, '-j', vm_chain])
            util.pread2(['arptables',  '-A', 'FORWARD', '-o',  vif, '-j', vm_chain])
     except:
-        util.SMlog("Failed to program default arptables rules in FORWARD chain vm=" + vm_chain)
+        logging.debug("Failed to program default arptables rules in FORWARD chain vm=" + vm_chain)
         return 'false'
     
     try:
@@ -708,7 +712,7 @@ def default_arp_antispoof(vm_chain, vifs, vm_ip, vm_mac):
         util.pread2(['arptables',  '-A', vm_chain,  '-j', 'DROP'])
 
     except:
-        util.SMlog("Failed to program default arptables  rules")
+        logging.debug("Failed to program default arptables  rules")
         return 'false'
 
     return 'true'
@@ -720,10 +724,10 @@ def network_rules_vmSecondaryIp(session, args):
     vm_mac = args.pop('vmMac')
     ip_secondary = args.pop('vmSecIp')
     action = args.pop('action')
-    util.SMlog("vmMac = "+ vm_mac)
-    util.SMlog("vmName = "+ vm_name)
+    logging.debug("vmMac = "+ vm_mac)
+    logging.debug("vmName = "+ vm_name)
     #action = "-A"
-    util.SMlog("action = "+ action)
+    logging.debug("action = "+ action)
     try:
         vm = session.xenapi.VM.get_by_name_label(vm_name)
         if len(vm) != 1:
@@ -733,11 +737,11 @@ def network_rules_vmSecondaryIp(session, args):
         vifnums = [session.xenapi.VIF.get_record(vif).get('device') for vif in vm_vifs]
         domid = vm_rec.get('domid')
     except:
-        util.SMlog("### Failed to get domid or vif list for vm  ##" + vm_name)
+        logging.debug("### Failed to get domid or vif list for vm  ##" + vm_name)
         return 'false'
 
     if domid == '-1':
-        util.SMlog("### Failed to get domid for vm (-1):  " + vm_name)
+        logging.debug("### Failed to get domid for vm (-1):  " + vm_name)
         return 'false'
 
     vifs = ["vif" + domid + "." + v for v in vifnums]
@@ -767,11 +771,11 @@ def default_network_rules_systemvm(session, args):
         vifnums = [session.xenapi.VIF.get_record(vif).get('device') for vif in vm_vifs]
         domid = vm_rec.get('domid')
     except:
-        util.SMlog("### Failed to get domid or vif list for vm  ##" + vm_name)
+        logging.debug("### Failed to get domid or vif list for vm  ##" + vm_name)
         return 'false'
     
     if domid == '-1':
-        util.SMlog("### Failed to get domid for vm (-1):  " + vm_name)
+        logging.debug("### Failed to get domid for vm (-1):  " + vm_name)
         return 'false'
 
     vifs = ["vif" + domid + "." + v for v in vifnums]
@@ -792,26 +796,26 @@ def default_network_rules_systemvm(session, args):
             util.pread2(['iptables', '-I', 'BRIDGE-FIREWALL', '2', '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', vif, '-j', vmchain])
             util.pread2(['iptables', '-I', vmchain, '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', vif, '-j', 'RETURN'])
         except:
-            util.SMlog("Failed to program default rules")
+            logging.debug("Failed to program default rules")
             return 'false'
 	
 	
     util.pread2(['iptables', '-A', vmchain, '-j', 'ACCEPT'])
     
     if write_rule_log_for_vm(vm_name, '-1', '_ignore_', domid, '_initial_', '-1') == False:
-        util.SMlog("Failed to log default network rules for systemvm, ignoring")
+        logging.debug("Failed to log default network rules for systemvm, ignoring")
     return 'true'
 
 @echo
 def create_ipset_forvm (ipsetname):
     result = True
     try:
-        util.SMlog("Creating ipset chain .... " + ipsetname)
+        logging.debug("Creating ipset chain .... " + ipsetname)
         util.pread2(['ipset', '-F', ipsetname])
         util.pread2(['ipset', '-X', ipsetname])
         util.pread2(['ipset', '-N', ipsetname, 'iphash'])
     except:
-        util.SMlog("ipset chain not exists creating.... " + ipsetname)
+        logging.debug("ipset chain not exists creating.... " + ipsetname)
         util.pread2(['ipset', '-N', ipsetname, 'iphash'])
 
     return result
@@ -821,10 +825,10 @@ def add_to_ipset(ipsetname, ips, action):
     result = True
     for ip in ips:
         try:
-            util.SMlog("vm ip " + ip)
+            logging.debug("vm ip " + ip)
             util.pread2(['ipset', action, ipsetname, ip])
         except:
-            util.SMlog("vm ip alreday in ip set" + ip)
+            logging.debug("vm ip alreday in ip set" + ip)
             continue
 
     return result
@@ -846,7 +850,7 @@ def arp_rules_vmip (vm_chain, vifs, ips, vm_mac, action):
                 #also important to restrict source ip and src mac in these requests as they can be used to update arp tables on destination
                 util.pread2(['arptables',  action, vm_chain, '-i', vif, '--opcode', 'Request',  '--source-mac',  vm_mac, '--source-ip',  vm_ip, '-j', 'RETURN'])
     except:
-        util.SMlog("Failed to program arptables  rules for ip")
+        logging.debug("Failed to program arptables  rules for ip")
         return 'false'
 
     return 'true'
@@ -864,15 +868,15 @@ def default_network_rules(session, args):
     try:
         vm = session.xenapi.VM.get_by_name_label(vm_name)
         if len(vm) != 1:
-             util.SMlog("### Failed to get record for vm  " + vm_name)
+             logging.debug("### Failed to get record for vm  " + vm_name)
              return 'false'
         vm_rec = session.xenapi.VM.get_record(vm[0])
         domid = vm_rec.get('domid')
     except:
-        util.SMlog("### Failed to get domid for vm " + vm_name)
+        logging.debug("### Failed to get domid for vm " + vm_name)
         return 'false'
     if domid == '-1':     
-        util.SMlog("### Failed to get domid for vm (-1):  " + vm_name)
+        logging.debug("### Failed to get domid for vm (-1):  " + vm_name)
         return 'false'
     
     vif = "vif" + domid + ".0"
@@ -912,12 +916,12 @@ def default_network_rules(session, args):
     vmipset = vm_name
     #create ipset and add vm ips to that ip set
     if create_ipset_forvm(vmipset) == False:
-       util.SMlog(" failed to create ipset for rule " + str(tokens))
+       logging.debug(" failed to create ipset for rule " + str(tokens))
        return 'false'
 
     #add primary nic ip to ipset
     if add_to_ipset(vmipset, [vm_ip], action ) == False:
-       util.SMlog(" failed to add vm " + vm_ip + " ip to set ")
+       logging.debug(" failed to add vm " + vm_ip + " ip to set ")
        return 'false'
 
     #add secodnary nic ips to ipset
@@ -928,10 +932,10 @@ def default_network_rules(session, args):
         secIpSet = "0";
 
     if secIpSet == "1":
-        util.SMlog("Adding ipset for secondary ips")
+        logging.debug("Adding ipset for secondary ips")
         add_to_ipset(vmipset, ips, action)
         if write_secip_log_for_vm(vm_name, sec_ips, vm_id) == False:
-            util.SMlog("Failed to log default network rules, ignoring")
+            logging.debug("Failed to log default network rules, ignoring")
 
     keyword = '--' + get_ipset_keyword()
 
@@ -949,21 +953,21 @@ def default_network_rules(session, args):
             util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-in', v, '-m', 'set', keyword, vmipset, 'src', '-j', vmchain_egress])
             util.pread2(['iptables', '-A', vmchain_default, '-m', 'physdev', '--physdev-is-bridged', '--physdev-out', v,  '-j', vmchain])
     except:
-        util.SMlog("Failed to program default rules for vm " + vm_name)
+        logging.debug("Failed to program default rules for vm " + vm_name)
         return 'false'
     
     default_arp_antispoof(vmchain, vifs, vm_ip, vm_mac)
     #add default arp rules for secondary ips;
     if secIpSet == "1":
-        util.SMlog("Adding arp rules for sec ip")
+        logging.debug("Adding arp rules for sec ip")
         arp_rules_vmip(vmchain, vifs, ips, vm_mac, action)
 
     default_ebtables_antispoof_rules(vmchain, vifs, vm_ip, vm_mac)
     
     if write_rule_log_for_vm(vm_name, vm_id, vm_ip, domid, '_initial_', '-1', vm_mac) == False:
-        util.SMlog("Failed to log default network rules, ignoring")
+        logging.debug("Failed to log default network rules, ignoring")
         
-    util.SMlog("Programmed default rules for vm " + vm_name)
+    logging.debug("Programmed default rules for vm " + vm_name)
     return 'true'
 
 @echo
@@ -972,12 +976,12 @@ def check_domid_changed(session, vmName):
     try:
         vm = session.xenapi.VM.get_by_name_label(vmName)
         if len(vm) != 1:
-             util.SMlog("### Could not get record for vm ## " + vmName)
+             logging.debug("### Could not get record for vm ## " + vmName)
         else:
             vm_rec = session.xenapi.VM.get_record(vm[0])
             curr_domid = vm_rec.get('domid')
     except:
-        util.SMlog("### Failed to get domid for vm  ## " + vmName)
+        logging.debug("### Failed to get domid for vm  ## " + vmName)
         
     
     logfilename = "/var/run/cloud/" + vmName +".log"
@@ -1011,7 +1015,7 @@ def delete_rules_for_vm_in_bridge_firewall_chain(vmName):
             dc.pop()
             util.pread2(filter(None, dc))
         except:
-              util.SMlog("Ignoring failure to delete rules for vm " + vmName)
+              logging.debug("Ignoring failure to delete rules for vm " + vmName)
 
   
 @echo
@@ -1028,7 +1032,7 @@ def network_rules_for_rebooted_vm(session, vmName):
     if curr_domid == '-1':
         return True
     
-    util.SMlog("Found a rebooted VM -- reprogramming rules for  " + vm_name)
+    logging.debug("Found a rebooted VM -- reprogramming rules for  " + vm_name)
     
     delete_rules_for_vm_in_bridge_firewall_chain(vm_name)
     if 1 in [ vm_name.startswith(c) for c in ['r-', 's-', 'v-', 'l-'] ]:
@@ -1073,9 +1077,9 @@ def network_rules_for_rebooted_vm(session, vmName):
             try:
                 util.pread2(filter(None,ipt))
             except:
-                util.SMlog("Failed to rewrite antispoofing rules for vm " + vm_name)
+                logging.debug("Failed to rewrite antispoofing rules for vm " + vm_name)
     except:
-        util.SMlog("No rules found for vm " + vm_name)
+        logging.debug("No rules found for vm " + vm_name)
 
     destroy_ebtables_rules(vmchain)
     destroy_arptables_rules(vmchain)
@@ -1179,7 +1183,7 @@ def get_rule_logs_for_vms(session, args):
         hostrec = session.xenapi.host.get_record(thishost)
         vms = hostrec.get('resident_VMs')
     except:
-        util.SMlog("Failed to get host from uuid " + host_uuid)
+        logging.debug("Failed to get host from uuid " + host_uuid)
         return ' '
     
     result = []
@@ -1192,7 +1196,7 @@ def get_rule_logs_for_vms(session, args):
                 log = get_rule_log_for_vm(session, name)
                 result.append(log)
     except:
-        util.SMlog("Failed to get rule logs, better luck next time!")
+        logging.debug("Failed to get rule logs, better luck next time!")
         
     return ";".join(result)
 
@@ -1209,13 +1213,13 @@ def cleanup_rules_for_dead_vms(session):
             vm_rec = session.xenapi.VM.get_record(vm[0])
             state = vm_rec.get('power_state')
             if state != 'Running' and state != 'Paused':
-                util.SMlog("vm " + vm_name + " is not running, cleaning up")
+                logging.debug("vm " + vm_name + " is not running, cleaning up")
                 destroy_network_rules_for_vm(session, {'vmName':vm_name})
                 cleaned = cleaned+1
                 
-    util.SMlog("Cleaned up rules for " + str(cleaned) + " vms")
+    logging.debug("Cleaned up rules for " + str(cleaned) + " vms")
   except:
-    util.SMlog("Failed to cleanup rules for dead vms!")
+    logging.debug("Failed to cleanup rules for dead vms!")
         
 
 @echo
@@ -1234,12 +1238,12 @@ def cleanup_rules(session, args):
     hostrec = session.xenapi.host.get_record(thishost[0])
     vms = hostrec.get('resident_VMs')
     resident_vms = [session.xenapi.VM.get_name_label(x) for x in vms]
-    util.SMlog('cleanup_rules: found %s resident vms on this host %s' % (len(resident_vms)-1, hostname[0]))
+    logging.debug('cleanup_rules: found %s resident vms on this host %s' % (len(resident_vms)-1, hostname[0]))
  
     chainscmd = "iptables-save | grep '^:' | awk '{print $1}' | cut -d':' -f2 | sed 's/-def/-%s/'| sed 's/-eg//' | sort|uniq" % instance
     chains = util.pread2(['/bin/bash', '-c', chainscmd]).split('\n')
     vmchains = [ch  for ch in chains if 1 in [ ch.startswith(c) for c in ['r-', 'i-', 's-', 'v-', 'l-']]]
-    util.SMlog('cleanup_rules: found %s iptables chains for vms on this host %s' % (len(vmchains), hostname[0]))
+    logging.debug('cleanup_rules: found %s iptables chains for vms on this host %s' % (len(vmchains), hostname[0]))
     cleaned = 0
     cleanup = []
     for chain in vmchains:
@@ -1247,16 +1251,16 @@ def cleanup_rules(session, args):
         if vmname not in resident_vms:
             vmname = chain + "-untagged"
             if vmname not in resident_vms:
-                util.SMlog("vm " + chain + " is not running on this host, cleaning up")
+                logging.debug("vm " + chain + " is not running on this host, cleaning up")
                 cleanup.append(chain)
 
     for vm_name in cleanup:
         destroy_network_rules_for_vm(session, {'vmName':vm_name})
                     
-    util.SMlog("Cleaned up rules for " + str(len(cleanup)) + " chains")
+    logging.debug("Cleaned up rules for " + str(len(cleanup)) + " chains")
     return str(len(cleanup))                
   except Exception, ex:
-    util.SMlog("Failed to cleanup rules, reason= " + str(ex))
+    logging.debug("Failed to cleanup rules, reason= " + str(ex))
     return '-1';
 
 @echo
@@ -1264,7 +1268,7 @@ def check_rule_log_for_vm(vmName, vmID, vmIP, domID, signature, seqno):
     vm_name = vmName;
     logfilename = "/var/run/cloud/" + vm_name +".log"
     if not os.path.exists(logfilename):
-        util.SMlog("Failed to find logfile %s" %logfilename)
+        logging.debug("Failed to find logfile %s" %logfilename)
         return [True, True, True]
         
     lines = (line.rstrip() for line in open(logfilename))
@@ -1278,39 +1282,39 @@ def check_rule_log_for_vm(vmName, vmID, vmIP, domID, signature, seqno):
                 [_vmName,_vmID,_vmIP,_domID,_signature,_seqno] = line.split(',')
             break
     except:
-        util.SMlog("Failed to parse log file for vm " + vmName)
+        logging.debug("Failed to parse log file for vm " + vmName)
         remove_rule_log_for_vm(vmName)
         return [True, True, True]
     
     reprogramDefault = False
     if (domID != _domID) or (vmID != _vmID) or (vmIP != _vmIP):
-        util.SMlog("Change in default info set of vm %s" % vmName)
+        logging.debug("Change in default info set of vm %s" % vmName)
         return [True, True, True]
     else:
-        util.SMlog("No change in default info set of vm %s" % vmName)
+        logging.debug("No change in default info set of vm %s" % vmName)
     
     reprogramChain = False
     rewriteLog = True
     if (int(seqno) > int(_seqno)):
         if (_signature != signature):
             reprogramChain = True
-            util.SMlog("Seqno increased from %s to %s: reprogamming "\
+            logging.debug("Seqno increased from %s to %s: reprogamming "\
                         "ingress rules for vm %s" % (_seqno, seqno, vmName))
         else:
-            util.SMlog("Seqno increased from %s to %s: but no change "\
+            logging.debug("Seqno increased from %s to %s: but no change "\
                         "in signature for vm: skip programming ingress "\
                         "rules %s" % (_seqno, seqno, vmName))
     elif (int(seqno) < int(_seqno)):
-        util.SMlog("Seqno decreased from %s to %s: ignoring these "\
+        logging.debug("Seqno decreased from %s to %s: ignoring these "\
                         "ingress rules for vm %s" % (_seqno, seqno, vmName))
         rewriteLog = False
     elif (signature != _signature):
-        util.SMlog("Seqno %s stayed the same but signature changed from "\
+        logging.debug("Seqno %s stayed the same but signature changed from "\
                     "%s to %s for vm %s" % (seqno, _signature, signature, vmName))
         rewriteLog = True
         reprogramChain = True
     else:
-        util.SMlog("Seqno and signature stayed the same: %s : ignoring these "\
+        logging.debug("Seqno and signature stayed the same: %s : ignoring these "\
                         "ingress rules for vm %s" % (seqno, vmName))
         rewriteLog = False
         
@@ -1320,7 +1324,7 @@ def check_rule_log_for_vm(vmName, vmID, vmIP, domID, signature, seqno):
 def write_secip_log_for_vm (vmName, secIps, vmId):
     vm_name = vmName
     logfilename = "/var/run/cloud/"+vm_name+".ip"
-    util.SMlog("Writing log to " + logfilename)
+    logging.debug("Writing log to " + logfilename)
     logf = open(logfilename, 'w')
     output = ','.join([vmName, secIps, vmId])
     result = True
@@ -1329,7 +1333,7 @@ def write_secip_log_for_vm (vmName, secIps, vmId):
         logf.write(output)
         logf.write('\n')
     except:
-        util.SMlog("Failed to write to rule log file " + logfilename)
+        logging.debug("Failed to write to rule log file " + logfilename)
         result = False
 
     logf.close()
@@ -1345,7 +1349,7 @@ def remove_secip_log_for_vm(vmName):
     try:
         os.remove(logfilename)
     except:
-        util.SMlog("Failed to delete rule log file " + logfilename)
+        logging.debug("Failed to delete rule log file " + logfilename)
         result = False
 
     return result
@@ -1354,7 +1358,7 @@ def remove_secip_log_for_vm(vmName):
 def write_rule_log_for_vm(vmName, vmID, vmIP, domID, signature, seqno, vmMac='ff:ff:ff:ff:ff:ff'):
     vm_name = vmName
     logfilename = "/var/run/cloud/" + vm_name +".log"
-    util.SMlog("Writing log to " + logfilename)
+    logging.debug("Writing log to " + logfilename)
     logf = open(logfilename, 'w')
     output = ','.join([vmName, vmID, vmIP, domID, signature, seqno, vmMac])
     result = True
@@ -1362,7 +1366,7 @@ def write_rule_log_for_vm(vmName, vmID, vmIP, domID, signature, seqno, vmMac='ff
         logf.write(output)
         logf.write('\n')
     except:
-        util.SMlog("Failed to write to rule log file " + logfilename)
+        logging.debug("Failed to write to rule log file " + logfilename)
         result = False
         
     logf.close()
@@ -1378,7 +1382,7 @@ def remove_rule_log_for_vm(vmName):
     try:
         os.remove(logfilename)
     except:
-        util.SMlog("Failed to delete rule log file " + logfilename)
+        logging.debug("Failed to delete rule log file " + logfilename)
         result = False
     
     return result
@@ -1408,13 +1412,13 @@ def cache_ipset_keyword():
        pass
        
     cachefile = "/var/cache/cloud/ipset.keyword"
-    util.SMlog("Writing ipset keyword to " + cachefile)
+    logging.debug("Writing ipset keyword to " + cachefile)
     cachef = open(cachefile, 'w')
     try:
         cachef.write(keyword)
         cachef.write('\n')
     except:
-        util.SMlog("Failed to write to cache file " + cachef)
+        logging.debug("Failed to write to cache file " + cachef)
         
     cachef.close()
     return keyword
@@ -1425,7 +1429,7 @@ def get_ipset_keyword():
     keyword = 'match-set'
     
     if not os.path.exists(cachefile):
-        util.SMlog("Failed to find ipset keyword cachefile %s" %cachefile)
+        logging.debug("Failed to find ipset keyword cachefile %s" %cachefile)
         keyword = cache_ipset_keyword()
     else:
         lines = (line.rstrip() for line in open(cachefile))
@@ -1458,15 +1462,15 @@ def network_rules(session, args):
     try:
         vm = session.xenapi.VM.get_by_name_label(vm_name)
         if len(vm) != 1:
-             util.SMlog("### Could not get record for vm ## " + vm_name)
+             logging.debug("### Could not get record for vm ## " + vm_name)
              return 'false'
         vm_rec = session.xenapi.VM.get_record(vm[0])
         domid = vm_rec.get('domid')
     except:
-        util.SMlog("### Failed to get domid for vm  ## " + vm_name)
+        logging.debug("### Failed to get domid for vm  ## " + vm_name)
         return 'false'
     if domid == '-1':
-        util.SMlog("### Failed to get domid for vm (-1):  " + vm_name)
+        logging.debug("### Failed to get domid for vm (-1):  " + vm_name)
         return 'false'
    
     vif = "vif" + domid + ".0"
@@ -1484,21 +1488,21 @@ def network_rules(session, args):
              check_rule_log_for_vm (vm_name, vm_id, vm_ip, domid, signature, seqno)
     
     if not reprogramDefault and not reprogramChain:
-        util.SMlog("No changes detected between current state and received state")
+        logging.debug("No changes detected between current state and received state")
         reason = 'seqno_same_sig_same'
         if rewriteLog:
             reason = 'seqno_increased_sig_same'
             write_rule_log_for_vm(vm_name, vm_id, vm_ip, domid, signature, seqno, vm_mac)
-        util.SMlog("Programming network rules for vm  %s seqno=%s signature=%s guestIp=%s,"\
+        logging.debug("Programming network rules for vm  %s seqno=%s signature=%s guestIp=%s,"\
                " do nothing, reason=%s" % (vm_name, seqno, signature, vm_ip, reason))
         return 'true'
            
     if not reprogramChain:
-        util.SMlog("###Not programming any ingress rules since no changes detected?")
+        logging.debug("###Not programming any ingress rules since no changes detected?")
         return 'true'
 
     if reprogramDefault:
-        util.SMlog("Change detected in vmId or vmIp or domId, resetting default rules")
+        logging.debug("Change detected in vmId or vmIp or domId, resetting default rules")
         default_network_rules(session, args)
         reason = 'domid_change'
     
@@ -1508,7 +1512,7 @@ def network_rules(session, args):
     keyword = '--' + get_ipset_keyword() 
     lines = rules.split(' ')
 
-    util.SMlog("Programming network rules for vm  %s seqno=%s numrules=%s signature=%s guestIp=%s,"\
+    logging.debug("Programming network rules for vm  %s seqno=%s numrules=%s signature=%s guestIp=%s,"\
               " update iptables, reason=%s" % (vm_name, seqno, len(lines), signature, vm_ip, reason))
     
     cmds = []
@@ -1546,7 +1550,7 @@ def network_rules(session, args):
                 ipsetname = vmchain + "_" + protocol + "_any"
 
             if ipset(ipsetname, protocol, start, end, ips) == False:
-                util.SMlog(" failed to create ipset for rule " + str(tokens))
+                logging.debug(" failed to create ipset for rule " + str(tokens))
 
             if protocol == 'all':
                 iptables = ['iptables', '-I', vmchain, '-m', 'state', '--state', 'NEW', '-m', 'set', keyword, ipsetname, direction, '-j', action]
@@ -1559,7 +1563,7 @@ def network_rules(session, args):
                 iptables = ['iptables', '-I', vmchain, '-p',  'icmp', '--icmp-type',  range,  '-m', 'set', keyword, ipsetname, direction, '-j', action]
                 
             cmds.append(iptables)
-            util.SMlog(iptables)
+            logging.debug(iptables)
         
         if allow_any and protocol != 'all':
             if protocol != 'icmp':
@@ -1570,20 +1574,20 @@ def network_rules(session, args):
                     range = "any"
                 iptables = ['iptables', '-I', vmchain, '-p',  'icmp', '--icmp-type',  range, '-j', action]
             cmds.append(iptables)
-            util.SMlog(iptables)
+            logging.debug(iptables)
       
     vmchain = chain_name(vm_name)
     try:
         util.pread2(['iptables', '-F', vmchain])
     except:
-        util.SMlog("Ignoring failure to delete chain " + vmchain)
+        logging.debug("Ignoring failure to delete chain " + vmchain)
         util.pread2(['iptables', '-N', vmchain])
 
     egress_vmchain = egress_chain_name(vm_name)
     try:
         util.pread2(['iptables', '-F', egress_vmchain])
     except:
-        util.SMlog("Ignoring failure to delete chain " + egress_vmchain)
+        logging.debug("Ignoring failure to delete chain " + egress_vmchain)
         util.pread2(['iptables', '-N', egress_vmchain])
 
     
@@ -1602,7 +1606,7 @@ def network_rules(session, args):
     
     return 'true'
   except:
-    util.SMlog("Failed to network rule !")
+    logging.debug("Failed to network rule !")
 
 @echo
 def bumpUpPriority(session, args):
@@ -1614,7 +1618,7 @@ def bumpUpPriority(session, args):
         txt = util.pread2(cmd)
         txt = 'success'
     except:
-        util.SMlog("bump up priority fail! ")
+        logging.debug("bump up priority fail! ")
         txt = ''
 
     return txt

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/vmopsSnapshot
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmopsSnapshot b/scripts/vm/hypervisor/xenserver/vmopsSnapshot
index 00ed93a..a9a5a72 100755
--- a/scripts/vm/hypervisor/xenserver/vmopsSnapshot
+++ b/scripts/vm/hypervisor/xenserver/vmopsSnapshot
@@ -38,6 +38,10 @@ import xs_errors
 import cleanup
 import stat
 import random
+import cloudstack_pluginlib as lib
+import logging
+
+lib.setup_logging("/var/log/cloud/vmops.log")
 
 VHDUTIL = "vhd-util"
 VHD_PREFIX = 'VHD-'
@@ -46,9 +50,9 @@ CLOUD_DIR = '/var/run/cloud_mount'
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name )
+        logging.debug("#### VMOPS enter  %s ####" % name )
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name )
+        logging.debug("#### VMOPS exit  %s ####" % name )
         return res
     return wrapped
 
@@ -57,7 +61,7 @@ def echo(fn):
 def create_secondary_storage_folder(session, args):
     local_mount_path = None
 
-    util.SMlog("create_secondary_storage_folder, args: " + str(args))
+    logging.debug("create_secondary_storage_folder, args: " + str(args))
 
     try:
         try:
@@ -74,11 +78,11 @@ def create_secondary_storage_folder(session, args):
                 os.umask(current_umask)
         except OSError, (errno, strerror):
             errMsg = "create_secondary_storage_folder failed: errno: " + str(errno) + ", strerr: " + strerror
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
         except:
             errMsg = "create_secondary_storage_folder failed."
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
     finally:
         if local_mount_path != None:
@@ -93,7 +97,7 @@ def create_secondary_storage_folder(session, args):
 def delete_secondary_storage_folder(session, args):
     local_mount_path = None
 
-    util.SMlog("delete_secondary_storage_folder, args: " + str(args))
+    logging.debug("delete_secondary_storage_folder, args: " + str(args))
 
     try:
         try:
@@ -109,11 +113,11 @@ def delete_secondary_storage_folder(session, args):
                 os.system("rmdir " + folder)
         except OSError, (errno, strerror):
             errMsg = "delete_secondary_storage_folder failed: errno: " + str(errno) + ", strerr: " + strerror
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
         except:
             errMsg = "delete_secondary_storage_folder failed."
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
     finally:
         if local_mount_path != None:
@@ -159,16 +163,16 @@ def post_create_private_template(session, args):
             f.write("vhd.size=" + str(file_size) + "\n")
             f.write("size=" + str(file_size) + "\n")
             f.close()
-            util.SMlog("Created template.properties file")
+            logging.debug("Created template.properties file")
            
             # Set permissions
             permissions = stat.S_IREAD | stat.S_IWRITE | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH
             os.chmod(template_properties_install_path, permissions)
-            util.SMlog("Set permissions on template and template.properties")
+            logging.debug("Set permissions on template and template.properties")
 
         except:
             errMsg = "post_create_private_template failed."
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
 
     finally:
@@ -189,12 +193,12 @@ def isfile(path, isISCSI):
         
     if not exists:
         errMsg = "File " + path + " does not exist."
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     return errMsg
 
 def copyfile(fromFile, toFile, isISCSI):
-    util.SMlog("Starting to copy " + fromFile + " to " + toFile)
+    logging.debug("Starting to copy " + fromFile + " to " + toFile)
     errMsg = ''
     try:
         cmd = ['dd', 'if=' + fromFile, 'of=' + toFile, 'bs=4M']
@@ -206,10 +210,10 @@ def copyfile(fromFile, toFile, isISCSI):
             txt = ''
         txt = ''
         errMsg = "Error while copying " + fromFile + " to " + toFile + " in secondary storage"
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
 
-    util.SMlog("Successfully copied " + fromFile + " to " + toFile)
+    logging.debug("Successfully copied " + fromFile + " to " + toFile)
     return errMsg
 
 def chdir(path):
@@ -217,9 +221,9 @@ def chdir(path):
         os.chdir(path)
     except OSError, (errno, strerror):
         errMsg = "Unable to chdir to " + path + " because of OSError with errno: " + str(errno) + " and strerr: " + strerror
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
-    util.SMlog("Chdired to " + path)
+    logging.debug("Chdired to " + path)
     return
 
 def scanParent(path):
@@ -234,7 +238,7 @@ def scanParent(path):
         parentUUID = vhdInfo.parentUuid
     except:
         errMsg = "Could not get vhd parent of " + path
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     return parentUUID
 
@@ -247,7 +251,7 @@ def getParent(path, isISCSI):
             parentUUID = vhdutil.getParent(path, cleanup.FileVDI.extractUuid)
     except:
         errMsg = "Could not get vhd parent of " + path
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     return parentUUID
 
@@ -262,7 +266,7 @@ def getParentOfSnapshot(snapshotUuid, primarySRPath, isISCSI):
     else:
         baseCopyUuid = getParent(snapshotPath, isISCSI)
     
-    util.SMlog("Base copy of snapshotUuid: " + snapshotUuid + " is " + baseCopyUuid)
+    logging.debug("Base copy of snapshotUuid: " + snapshotUuid + " is " + baseCopyUuid)
     return baseCopyUuid
 
 def setParent(parent, child):
@@ -271,9 +275,9 @@ def setParent(parent, child):
         txt = util.pread2(cmd)
     except:
         errMsg = "Unexpected error while trying to set parent of " + child + " to " + parent 
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
-    util.SMlog("Successfully set parent of " + child + " to " + parent)
+    logging.debug("Successfully set parent of " + child + " to " + parent)
     return
 
 def rename(originalVHD, newVHD):
@@ -281,7 +285,7 @@ def rename(originalVHD, newVHD):
         os.rename(originalVHD, newVHD)
     except OSError, (errno, strerror):
         errMsg = "OSError while renaming " + origiinalVHD + " to " + newVHD + "with errno: " + str(errno) + " and strerr: " + strerror
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     return
 
@@ -294,7 +298,7 @@ def makedirs(path):
             if os.path.isdir(path):
                 return
             errMsg = "OSError while creating " + path + " with errno: " + str(errno) + " and strerr: " + strerror
-            util.SMlog(errMsg)
+            logging.debug(errMsg)
             raise xs_errors.XenError(errMsg)
     return
 
@@ -307,9 +311,9 @@ def mount(remoteDir, localDir):
     except:
         txt = ''
         errMsg = "Unexpected error while trying to mount " + remoteDir + " to " + localDir 
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
-    util.SMlog("Successfully mounted " + remoteDir + " to " + localDir)
+    logging.debug("Successfully mounted " + remoteDir + " to " + localDir)
 
     return
 
@@ -319,10 +323,10 @@ def umount(localDir):
         util.pread2(cmd)
     except CommandException:
         errMsg = "CommandException raised while trying to umount " + localDir 
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
 
-    util.SMlog("Successfully unmounted " + localDir)
+    logging.debug("Successfully unmounted " + localDir)
     return
 
 def mountSnapshotsDir(secondaryStorageMountPath, localMountPointPath, path):
@@ -344,7 +348,7 @@ def mountSnapshotsDir(secondaryStorageMountPath, localMountPointPath, path):
         # There is more than one secondary storage per zone.
         # And we are mounting each sec storage under a zone-specific directory
         # So two secondary storage snapshot dirs will never get mounted on the same point on the same XenServer.
-        util.SMlog("The remote snapshots directory has already been mounted on " + localMountPointPath)
+        logging.debug("The remote snapshots directory has already been mounted on " + localMountPointPath)
     else:
         mount(snapshotsDir, localMountPointPath)
 
@@ -357,11 +361,11 @@ def unmountAll(path):
     try:
         for dir in os.listdir(path):
             if dir.isdigit():
-                util.SMlog("Unmounting Sub-Directory: " + dir)
+                logging.debug("Unmounting Sub-Directory: " + dir)
                 localMountPointPath = os.path.join(path, dir)
                 umount(localMountPointPath)
     except:
-        util.SMlog("Ignoring the error while trying to unmount the snapshots dir")
+        logging.debug("Ignoring the error while trying to unmount the snapshots dir")
 
 @echo
 def unmountSnapshotsDir(session, args):
@@ -372,7 +376,7 @@ def unmountSnapshotsDir(session, args):
     try:
         umount(localMountPointPath)
     except:
-        util.SMlog("Ignoring the error while trying to unmount the snapshots dir.")
+        logging.debug("Ignoring the error while trying to unmount the snapshots dir.")
 
     return "1"
 
@@ -409,14 +413,14 @@ def makeUnavailable(uuid, primarySRPath, isISCSI):
 def manageAvailability(path, value):
     if path.__contains__("/var/run/sr-mount"):
         return
-    util.SMlog("Setting availability of " + path + " to " + value)
+    logging.debug("Setting availability of " + path + " to " + value)
     try:
         cmd = ['/usr/sbin/lvchange', value, path]
         util.pread2(cmd)
     except: #CommandException, (rc, cmdListStr, stderr):
         #errMsg = "CommandException thrown while executing: " + cmdListStr + " with return code: " + str(rc) + " and stderr: " + stderr
         errMsg = "Unexpected exception thrown by lvchange"
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         if value == "-ay":
             # Raise an error only if we are trying to make it available.
             # Just warn if we are trying to make it unavailable after the 
@@ -434,7 +438,7 @@ def checkVolumeAvailablility(path):
             manageAvailability(path, '-ay')
     except:
         errMsg = "Could not determine status of ISCSI path: " + path
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     
     success = False
@@ -445,7 +449,7 @@ def checkVolumeAvailablility(path):
         # set isISCSI to true
         success = isVolumeAvailable(path)
         if success:
-            util.SMlog("Made vhd: " + path + " available and confirmed that it is visible")
+            logging.debug("Made vhd: " + path + " available and confirmed that it is visible")
             break
 
         # Sleep for 10 seconds before checking again.
@@ -453,7 +457,7 @@ def checkVolumeAvailablility(path):
 
     # If not visible within 1 min fail
     if not success:
-        util.SMlog("Could not make vhd: " +  path + " available despite waiting for 1 minute. Does it exist?")
+        logging.debug("Could not make vhd: " +  path + " available despite waiting for 1 minute. Does it exist?")
 
     return success
 
@@ -465,19 +469,19 @@ def isVolumeAvailable(path):
         status = p.communicate()[0].strip("\n")
     except:
         errMsg = "Could not determine status of ISCSI path: " + path
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
 
     return (status == "1")  
 
 def getVhdParent(session, args):
-    util.SMlog("getParent with " + str(args))
+    logging.debug("getParent with " + str(args))
     primaryStorageSRUuid      = args['primaryStorageSRUuid']
     snapshotUuid              = args['snapshotUuid']
     isISCSI                   = getIsTrueString(args['isISCSI']) 
 
     primarySRPath = getPrimarySRPath(primaryStorageSRUuid, isISCSI)
-    util.SMlog("primarySRPath: " + primarySRPath)
+    logging.debug("primarySRPath: " + primarySRPath)
 
     baseCopyUuid = getParentOfSnapshot(snapshotUuid, primarySRPath, isISCSI)
 
@@ -485,7 +489,7 @@ def getVhdParent(session, args):
 
 
 def backupSnapshot(session, args):
-    util.SMlog("Called backupSnapshot with " + str(args))
+    logging.debug("Called backupSnapshot with " + str(args))
     primaryStorageSRUuid      = args['primaryStorageSRUuid']
     secondaryStorageMountPath = args['secondaryStorageMountPath']
     snapshotUuid              = args['snapshotUuid']
@@ -495,19 +499,19 @@ def backupSnapshot(session, args):
     path = args['path']
     localMountPoint = args['localMountPoint']
     primarySRPath = getPrimarySRPath(primaryStorageSRUuid, isISCSI)
-    util.SMlog("primarySRPath: " + primarySRPath)
+    logging.debug("primarySRPath: " + primarySRPath)
 
     baseCopyUuid = getParentOfSnapshot(snapshotUuid, primarySRPath, isISCSI)
     baseCopyVHD  = getVHD(baseCopyUuid, isISCSI)
     baseCopyPath = os.path.join(primarySRPath, baseCopyVHD)
-    util.SMlog("Base copy path: " + baseCopyPath)
+    logging.debug("Base copy path: " + baseCopyPath)
 
 
     # Mount secondary storage mount path on XenServer along the path
     # /var/run/sr-mount/<dcId>/snapshots/ and create <accountId>/<volumeId> dir
     # on it.
     backupsDir = mountSnapshotsDir(secondaryStorageMountPath, localMountPoint, path)
-    util.SMlog("Backups dir " + backupsDir)
+    logging.debug("Backups dir " + backupsDir)
     prevBackupUuid = prevBackupUuid.split("/")[-1]
     # Check existence of snapshot on primary storage
     isfile(baseCopyPath, isISCSI)
@@ -520,7 +524,7 @@ def backupSnapshot(session, args):
     # copy baseCopyPath to backupsDir with new uuid
     backupVHD = getBackupVHD(backupUuid)  
     backupFile = os.path.join(backupsDir, backupVHD)
-    util.SMlog("Back up " + baseCopyUuid + " to Secondary Storage as " + backupUuid)
+    logging.debug("Back up " + baseCopyUuid + " to Secondary Storage as " + backupUuid)
     copyfile(baseCopyPath, backupFile, isISCSI)
     vhdutil.setHidden(backupFile, False)
 
@@ -536,7 +540,7 @@ def backupSnapshot(session, args):
 
 @echo
 def deleteSnapshotBackup(session, args):
-    util.SMlog("Calling deleteSnapshotBackup with " + str(args))
+    logging.debug("Calling deleteSnapshotBackup with " + str(args))
     secondaryStorageMountPath = args['secondaryStorageMountPath']
     backupUUID                = args['backupUUID']
     path = args['path']
@@ -547,27 +551,27 @@ def deleteSnapshotBackup(session, args):
     chdir(backupsDir)
 
     backupVHD = getBackupVHD(backupUUID)
-    util.SMlog("checking existence of " + backupVHD)
+    logging.debug("checking existence of " + backupVHD)
 
     # The backupVHD is on secondary which is NFS and not ISCSI.
     if not os.path.isfile(backupVHD):
-        util.SMlog("backupVHD " + backupVHD + "does not exist. Not trying to delete it")
+        logging.debug("backupVHD " + backupVHD + "does not exist. Not trying to delete it")
         return "1"
-    util.SMlog("backupVHD " + backupVHD + " exists.")
+    logging.debug("backupVHD " + backupVHD + " exists.")
         
     # Just delete the backupVHD
     try:
         os.remove(backupVHD)
     except OSError, (errno, strerror):
         errMsg = "OSError while removing " + backupVHD + " with errno: " + str(errno) + " and strerr: " + strerror
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
 
     return "1"
    
 @echo
 def revert_memory_snapshot(session, args):
-    util.SMlog("Calling revert_memory_snapshot with " + str(args))
+    logging.debug("Calling revert_memory_snapshot with " + str(args))
     vmName = args['vmName']
     snapshotUUID = args['snapshotUUID']
     oldVmUuid = args['oldVmUuid']
@@ -587,7 +591,7 @@ def revert_memory_snapshot(session, args):
             os.system("xe vdi-destroy uuid=" + vdiUuid)
     except OSError, (errno, strerror):
         errMsg = "OSError while reverting vm " + vmName + " to snapshot " + snapshotUUID + " with errno: " + str(errno) + " and strerr: " + strerror
-        util.SMlog(errMsg)
+        logging.debug(errMsg)
         raise xs_errors.XenError(errMsg)
     return "0"
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/vmopspremium
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmopspremium b/scripts/vm/hypervisor/xenserver/vmopspremium
index d7d0c6f..6805380 100755
--- a/scripts/vm/hypervisor/xenserver/vmopspremium
+++ b/scripts/vm/hypervisor/xenserver/vmopspremium
@@ -28,13 +28,17 @@ if os.path.exists("/usr/lib/xcp/sm"):
     sys.path.extend(["/usr/lib/xcp/sm/", "/usr/local/sbin/", "/sbin/"])
 import util
 import socket
+import cloudstack_pluginlib as lib
+import logging
+
+lib.setup_logging("/var/log/cloud/vmops.log")
 
 def echo(fn):
     def wrapped(*v, **k):
         name = fn.__name__
-        util.SMlog("#### VMOPS enter  %s ####" % name )
+        logging.debug("#### VMOPS enter  %s ####" % name )
         res = fn(*v, **k)
-        util.SMlog("#### VMOPS exit  %s ####" % name )
+        logging.debug("#### VMOPS exit  %s ####" % name )
         return res
     return wrapped
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/xcposs/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xcposs/patch b/scripts/vm/hypervisor/xenserver/xcposs/patch
index aa551de..dafeeab 100644
--- a/scripts/vm/hypervisor/xenserver/xcposs/patch
+++ b/scripts/vm/hypervisor/xenserver/xcposs/patch
@@ -66,3 +66,4 @@ getDomRVersion.sh=../../../../network/domr/,0755,/opt/cloud/bin
 router_proxy.sh=../../../../network/domr/,0755,/opt/cloud/bin
 createipAlias.sh=..,0755,/opt/cloud/bin
 deleteipAlias.sh=..,0755,/opt/cloud/bin
+cloudlog=..,0644,/etc/logrotate.d

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/xcpserver/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xcpserver/patch b/scripts/vm/hypervisor/xenserver/xcpserver/patch
index 478807f..ed388e4 100644
--- a/scripts/vm/hypervisor/xenserver/xcpserver/patch
+++ b/scripts/vm/hypervisor/xenserver/xcpserver/patch
@@ -64,3 +64,4 @@ getRouterStatus.sh=../../../../network/domr/,0755,/opt/cloud/bin
 bumpUpPriority.sh=../../../../network/domr/,0755,/opt/cloud/bin
 getDomRVersion.sh=../../../../network/domr/,0755,/opt/cloud/bin
 add_to_vcpus_params_live.sh=..,0755,/opt/cloud/bin
+cloudlog=..,0644,/etc/logrotate.d

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/xenserver56/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56/patch b/scripts/vm/hypervisor/xenserver/xenserver56/patch
index e593a5c..4180b6e 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56/patch
@@ -65,4 +65,4 @@ swift=..,0755,/opt/cloud/bin
 swiftxen=..,0755,/etc/xapi.d/plugins
 s3xen=..,0755,/etc/xapi.d/plugins
 add_to_vcpus_params_live.sh=..,0755,/opt/cloud/bin
-
+cloudlog=..,0644,/etc/logrotate.d

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
index b210a88..4a95048 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
@@ -64,4 +64,4 @@ swift=..,0755,/opt/cloud/bin
 swiftxen=..,0755,/etc/xapi.d/plugins
 s3xen=..,0755,/etc/xapi.d/plugins
 add_to_vcpus_params_live.sh=..,0755,/opt/cloud/bin
-
+cloudlog=..,0644,/etc/logrotate.d

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ff978617/scripts/vm/hypervisor/xenserver/xenserver60/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver60/patch b/scripts/vm/hypervisor/xenserver/xenserver60/patch
index 8a0448a..5a648e0 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver60/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver60/patch
@@ -75,3 +75,4 @@ ovs-pvlan-vm.sh=../../../network,0755,/opt/cloud/bin
 ovs-pvlan-cleanup.sh=../../../network,0755,/opt/cloud/bin
 ovs-get-dhcp-iface.sh=..,0755,/opt/cloud/bin
 ovs-get-bridge.sh=..,0755,/opt/cloud/bin
+cloudlog=..,0644,/etc/logrotate.d