Change in vdsm[master]: getReceivedNumfBytes API.
aaviram at redhat.com
aaviram at redhat.com
Wed Oct 21 12:05:27 UTC 2015
Amit Aviram has uploaded a new change for review.
Change subject: getReceivedNumfBytes API.
......................................................................
getReceivedNumfBytes API.
Change-Id: I49553be2d1b10b112c224dfd09e16e54fd634d08
Signed-off-by: Amit Aviram <aaviram at redhat.com>
---
M client/vdsClient.py
M vdsm/API.py
M vdsm/rpc/Bridge.py
M vdsm/rpc/bindingxmlrpc.py
M vdsm/rpc/vdsmapi-schema.json
M vdsm/storage/hsm.py
M vdsm/storage/transfer.py
7 files changed, 57 insertions(+), 15 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/74/47574/1
diff --git a/client/vdsClient.py b/client/vdsClient.py
index 98ca033..82f9b25 100755
--- a/client/vdsClient.py
+++ b/client/vdsClient.py
@@ -1652,6 +1652,14 @@
return stats['status']['code'], stats['status']['message']
return 0, ''
+ def do_getBytesReceivedForTransfer(self, args):
+ ticketId = args[0]
+ stats = self.s.getBytesReceivedForTransfer(ticketId)
+ if stats['status']['code']:
+ return stats['status']['code'], stats['status']['message']
+ return 0, ''
+
+
def do_getVmsInfo(self, args):
spUUID = args[0]
if len(args) >= 2:
@@ -2688,6 +2696,10 @@
('<ticketUUID> ',
'<expiration>',
'Extend an image transfer session.')),
+ 'getBytesReceivedForTransfer': (serv.do_getBytesReceivedForTransfer,
+ ('<ticketUUID> ',
+ 'get number of bytes sent in '
+ 'transfer session.')),
'deleteImage': (serv.deleteImage,
('<sdUUID> <spUUID> <imgUUID> [<postZero>] [<force>]',
'Delete Image folder with all volumes.',
diff --git a/vdsm/API.py b/vdsm/API.py
index 29dd412..6e68f16 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -1759,6 +1759,9 @@
def extendImageTransferSession(self, ticketUUID, expiration):
return self._irs.extendImageTransferSession(ticketUUID, expiration)
+ def getBytesReceivedForTransfer(self, ticketUUID):
+ return self._irs.getBytesReceivedForTransfer(ticketUUID)
+
# take a rough estimate on how much free mem is available for new vm
# memTotal = memFree + memCached + mem_used_by_non_qemu + resident .
# simply returning (memFree + memCached) is not good enough, as the
diff --git a/vdsm/rpc/Bridge.py b/vdsm/rpc/Bridge.py
index f6a6992..166edf0 100644
--- a/vdsm/rpc/Bridge.py
+++ b/vdsm/rpc/Bridge.py
@@ -424,6 +424,7 @@
'Host_startImageTransferSession': {'ret': 'uuid'},
'Host_stopImageTransferSession': {},
'Host_extendImageTransferSession': {},
+ 'Host_getBytesReceivedForTransfer': {'ret': 'longVal'},
'Host_getVMList': {'call': Host_getVMList_Call, 'ret': 'vmList'},
'Host_getVMFullList': {'call': Host_getVMFullList_Call, 'ret': 'vmList'},
'Host_getAllVmStats': {'ret': 'statsList'},
diff --git a/vdsm/rpc/bindingxmlrpc.py b/vdsm/rpc/bindingxmlrpc.py
index bd41ba0..a7053c9 100644
--- a/vdsm/rpc/bindingxmlrpc.py
+++ b/vdsm/rpc/bindingxmlrpc.py
@@ -671,6 +671,21 @@
return api.startImageTransferSession(ticket, ops, expiration,
spId, sdId, imgId, volId)
+ def stopImageTransferSession(self, ticketUUID,
+ spId, sdId, imgId, volId):
+ api = API.Host()
+ return api.stopImageTransferSession(ticketUUID,
+ spId, sdId, imgId, volId)
+
+ def extendImageTransferSession(self, ticketUUID, expiration):
+ api = API.Host()
+ return api.extendImageTransferSession(ticketUUID, expiration)
+
+ def getBytesReceivedForTransfer(self, ticketUUID):
+ api = API.Host()
+ return api.getBytesReceivedForTransfer(ticketUUID)
+
+
def domainActivate(self, sdUUID, spUUID, options=None):
domain = API.StorageDomain(sdUUID)
return domain.activate(spUUID)
@@ -1105,6 +1120,9 @@
(self.setKsmTune, 'setKsmTune'),
(self.setHaMaintenanceMode, 'setHaMaintenanceMode'),
(self.startImageTransferSession, 'startImageTransferSession'),
+ (self.stopImageTransferSession, 'stopImageTransferSession'),
+ (self.extendImageTransferSession, 'extendImageTransferSession'),
+ (self.getBytesReceivedForTransfer, 'getBytesReceivedForTransfer'),
(self.vmHotplugDisk, 'hotplugDisk'),
(self.vmHotunplugDisk, 'hotunplugDisk'),
(self.vmHotplugNic, 'hotplugNic'),
diff --git a/vdsm/rpc/vdsmapi-schema.json b/vdsm/rpc/vdsmapi-schema.json
index 4095fc7..0a65f5c 100644
--- a/vdsm/rpc/vdsmapi-schema.json
+++ b/vdsm/rpc/vdsmapi-schema.json
@@ -651,6 +651,18 @@
'data': {'ticketUUID': 'UUID', 'expiration': 'long'}}
##
+# @Host.getBytesReceivedForTransfer:
+#
+# Get the number of bytes sent for a transfer.
+#
+# @ticketUUID: Ticket UUID
+#
+# Since: 4.17.4
+##
+{'command': {'class': 'Host', 'name': 'getBytesReceivedForTransfer'},
+ 'data': {'ticketUUID': 'UUID'}}
+
+##
# @TaskDetails:
#
# A collection of information about a task.
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index dfd1bdb..e9d4098 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -3115,6 +3115,11 @@
return transfer.extendSession(ticketUUID, expiration)
@public
+ def getBytesReceivedForTransfer(self, ticketUUID):
+ res = transfer.getBytesReceivedForTransfer(ticketUUID)
+ return dict(longVal=res)
+
+ @public
def getVolumeSize(self, sdUUID, spUUID, imgUUID, volUUID, options=None):
"""
Gets the size of a volume.
diff --git a/vdsm/storage/transfer.py b/vdsm/storage/transfer.py
index 0f0d807..696700c 100644
--- a/vdsm/storage/transfer.py
+++ b/vdsm/storage/transfer.py
@@ -55,12 +55,10 @@
raise se.TransferTicketError(e.message)
-def getProgress(ticketUUID):
- log.info("getProgress: ticketUUID: %r", ticketUUID)
+def getBytesReceivedForTransfer(ticketUUID):
+ log.info("getNumOfBytesSent: ticketUUID: %r", ticketUUID)
try:
- ticket = progress_ticket_json(ticketUUID)
- progress_ticket(ticketUUID, ticket)
- return True
+ return progress_ticket(ticketUUID)
except (se.TransferTicketRequestError, se.TransferTicketError):
log.exception("Error starting transfer session")
raise
@@ -99,7 +97,9 @@
def progress_ticket(ticketUUID):
- imaged_request("BYTES", "/tickets/%s" % ticketUUID)
+ res = imaged_request("GET", "/tickets/%s" % ticketUUID)
+ data = json.loads(res.read())
+ return data["bytes"]
def imaged_request(method, path, body=None):
@@ -143,12 +143,6 @@
}
-def progress_ticket_json(ticketUUID):
- return {
- "uuid": ticketUUID,
- }
-
-
def unix_request(config, method, uri, body=None, headers=None):
# con = UnixHTTPSConnection(config.socket, config.key_file, config.cert_file)
con = UnixHTTPConnection(config.socket)
@@ -157,9 +151,6 @@
log.debug("request body: %r, headers: %r", body, headers)
con.request(method, uri, body, headers=headers or {})
res = con.getresponse()
- log.info("response: %d %s", res.status, res.reason)
- log.debug("response body: %r, headers: %r",
- res.read(), res.getheaders())
return res
--
To view, visit https://gerrit.ovirt.org/47574
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I49553be2d1b10b112c224dfd09e16e54fd634d08
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Amit Aviram <aaviram at redhat.com>
More information about the vdsm-patches
mailing list