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