On Thu, Jun 14, 2018 at 09:16:01PM +0300, Nir Soffer wrote:
When sending request with small or no payload, it is simpler and
possibly more efficient to use the high level HTTPSConnection.request(),
instead of the lower level APIs.
The only reason to use the lower level APIs is to avoid copying the
payload, or on python 2, to use a bigger buffer size when streaming a
file-like object.
Change seems quite straightforward. I'll have to test this out on my
own oVirt system first before I can properly verify it.
Thanks, Rich.
v2v/rhv-upload-plugin.py | 35 ++++++++++++++++-------------------
1 file changed, 16 insertions(+), 19 deletions(-)
diff --git a/v2v/rhv-upload-plugin.py b/v2v/rhv-upload-plugin.py
index ed99cc7a9..3fad865f6 100644
--- a/v2v/rhv-upload-plugin.py
+++ b/v2v/rhv-upload-plugin.py
@@ -263,12 +263,12 @@ def pread(h, count, offset):
transfer = h['transfer']
transfer_service = h['transfer_service']
- http.putrequest("GET", h['path'])
+ headers = {"Range", "bytes=%d-%d" % (offset, offset+count-1)}
# Authorization is only needed for old imageio.
if h['needs_auth']:
- http.putheader("Authorization", transfer.signed_ticket)
- http.putheader("Range", "bytes=%d-%d" % (offset,
offset+count-1))
- http.endheaders()
+ headers["Authorization"] = transfer.signed_ticket
+
+ http.request("GET", h['path'], headers=headers)
r = http.getresponse()
# 206 = HTTP Partial Content.
@@ -319,11 +319,10 @@ def zero(h, count, offset, may_trim):
'size': count,
'flush': False}).encode()
- http.putrequest("PATCH", h['path'])
- http.putheader("Content-Type", "application/json")
- http.putheader("Content-Length", len(buf))
- http.endheaders()
- http.send(buf)
+ headers = {"Content-Type": "application/json",
+ "Content-Length", str(len(buf))}
+
+ http.request("PATCH", h['path'], body=buf, headers=headers)
r = http.getresponse()
if r.status != 200:
@@ -368,11 +367,10 @@ def trim(h, count, offset):
'size': count,
'flush': False}).encode()
- http.putrequest("PATCH", h['path'])
- http.putheader("Content-Type", "application/json")
- http.putheader("Content-Length", len(buf))
- http.endheaders()
- http.send(buf)
+ headers = {"Content-Type": "application/json",
+ "Content-Length", str(len(buf))}
+
+ http.request("PATCH", h['path'], body=buf, headers=headers)
r = http.getresponse()
if r.status != 200:
@@ -387,11 +385,10 @@ def flush(h):
# Construct the JSON request for flushing.
buf = json.dumps({'op': "flush"}).encode()
- http.putrequest("PATCH", h['path'])
- http.putheader("Content-Type", "application/json")
- http.putheader("Content-Length", len(buf))
- http.endheaders()
- http.send(buf)
+ headers = {"Content-Type": "application/json",
+ "Content-Length", str(len(buf))}
+
+ http.request("PATCH", h['path'], body=buf, headers=headers)
r = http.getresponse()
if r.status != 200:
--
2.17.1
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top