Amit Aviram has uploaded a new change for review.
Change subject: getReceivedNumfBytes API. ......................................................................
getReceivedNumfBytes API.
Change-Id: I49553be2d1b10b112c224dfd09e16e54fd634d08 Signed-off-by: Amit Aviram aaviram@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
automation@ovirt.org has posted comments on this change.
Change subject: getReceivedNumfBytes API. ......................................................................
Patch Set 1:
* Update tracker::IGNORE, no Bug-Url found * Check Bug-Url::WARN, no bug url found, make sure header matches 'Bug-Url: ' and is a valid url. * Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
vdsm-patches@lists.fedorahosted.org