This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push:
new d84b268 CLOUDSTACK-10229: improve xenserver swift logging, removed
usued code (#2152)
d84b268 is described below
commit d84b268b4cb4704ac94ed5ba7c2b01651572489c
Author: Pierre-Luc Dion <[email protected]>
AuthorDate: Fri Jan 12 09:23:35 2018 -0500
CLOUDSTACK-10229: improve xenserver swift logging, removed usued code
(#2152)
This script is used to upload snapshots to swift and is executed on dom0 of
XenServer. The PR make logging from /var/log/cloud/swiftxenserver.log more
meaningful as the below example;
2017-06-15 10:26:32 DEBUG [root] #### CLOUD enter swift ####
2017-06-15 10:26:32 DEBUG [root] #### CLOUD upload begin
S-12522/d841b62a-7f83-4d5d-9e9d-2940115f7fa9.vhd to swift ####
2017-06-15 10:27:13 DEBUG [root] #### CLOUD upload complete
S-12522/d841b62a-7f83-4d5d-9e9d-2940115f7fa9.vhd to swift: 0:00:40 @ 45 MB/s
####
2017-06-15 10:27:13 DEBUG [root] #### CLOUD exit swift ####
---
scripts/vm/hypervisor/xenserver/swiftxenserver | 43 ++++++++++++++++++--------
1 file changed, 30 insertions(+), 13 deletions(-)
diff --git a/scripts/vm/hypervisor/xenserver/swiftxenserver
b/scripts/vm/hypervisor/xenserver/swiftxenserver
index b0be24f..9da0ce4 100644
--- a/scripts/vm/hypervisor/xenserver/swiftxenserver
+++ b/scripts/vm/hypervisor/xenserver/swiftxenserver
@@ -6,9 +6,9 @@
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -18,7 +18,7 @@
# Version @VERSION@
#
-# A plugin for executing script needed by cloud stack
+# A plugin for executing script needed by Apache CloudStack
import os, sys, time
import XenAPIPlugin
@@ -26,15 +26,16 @@ sys.path.extend(["/opt/xensource/sm/"])
import util
import cloudstack_pluginlib as lib
import logging
+import datetime
lib.setup_logging("/var/log/cloud/swiftxenserver.log")
def echo(fn):
def wrapped(*v, **k):
name = fn.__name__
- logging.debug("#### VMOPS enter %s ####" % name )
+ logging.debug("#### CLOUD enter %s ####", name )
res = fn(*v, **k)
- logging.debug("#### VMOPS exit %s ####" % name )
+ logging.debug("#### CLOUD exit %s ####", name )
return res
return wrapped
@@ -52,12 +53,16 @@ def upload(args):
lfilename = args['lfilename']
isISCSI = args['isISCSI']
segment = 0
- logging.debug("#### VMOPS upload %s to swift ####", lfilename)
+ storagepolicy = None
+ if "storagepolicy" in args:
+ storagepolicy = args["storagepolicy"]
+ logging.debug("#### CLOUD upload begin %s/%s to swift ####", container,
lfilename)
+ timestamp_begin = datetime.datetime.now()
savedpath = os.getcwd()
os.chdir(ldir)
try :
- if isISCSI == 'ture':
- cmd1 = [ lvchange , "-ay", lfilename ]
+ if isISCSI == 'true':
+ cmd1 = [ lvchange , "-ay", lfilename ]
util.pread2(cmd1)
cmd1 = [ lvdisplay, "-c", lfilename ]
lines = util.pread2(cmd).split(':');
@@ -66,13 +71,27 @@ def upload(args):
segment = 1
else :
size = os.path.getsize(lfilename)
- if size > MAX_SEG_SIZE :
+ if size > MAX_SEG_SIZE :
segment = 1
- if segment :
+ if segment :
cmd = [SWIFT, "-A", url, "-U", account + ":" + username, "-K",
key, "upload", "-S", str(MAX_SEG_SIZE), container, lfilename]
else :
cmd = [SWIFT, "-A", url ,"-U", account + ":" + username, "-K",
key, "upload", container, lfilename]
+ if storagepolicy is not None:
+ cmd.append("--storage-policy")
+ cmd.append(storagepolicy)
util.pread2(cmd)
+ cmd2 = [SWIFT, "-A", url ,"-U", account + ":" + username, "-K", key,
"stat", container, lfilename]
+ upload_stat = util.pread2(cmd2)
+ upload_stat = [line for line in upload_stat.split('\n') if "Content
Length" in line]
+ upload_stat = upload_stat[0].split(': ')[1]
+ upload_diff = size - long(upload_stat)
+ if upload_diff != 0:
+ logging.error("#### CLOUD upload file size diff: %s", upload_diff)
+ timestamp_end = datetime.datetime.now()
+ timestamp_delta = timestamp_end - timestamp_begin
+ rate = (size / 1024 / 1024) / timestamp_delta.seconds
+ logging.debug("#### CLOUD upload complete %s/%s to swift: %s @ %s MB/s
####", container, lfilename, str(timestamp_delta)[:7], rate)
return 'true'
finally:
os.chdir(savedpath)
@@ -86,8 +105,6 @@ def swift(session, args):
return upload(args)
elif op == 'download':
return download(args)
- elif op == 'delete' :
- cmd = ["st", "-A https://" + hostname + ":8080/auth/v1.0 -U " +
account + ":" + username + " -K " + token + " delete " + rfilename]
else :
logging.debug("doesn't support swift operation %s " % op )
return 'false'
@@ -96,6 +113,6 @@ def swift(session, args):
return 'true'
except:
return 'false'
-
+
if __name__ == "__main__":
XenAPIPlugin.dispatch({"swift": swift})
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].