Skip to content

Instantly share code, notes, and snippets.

@chianingwang
Last active July 20, 2018 22:31
Show Gist options
  • Save chianingwang/4290ff3cc95482f1cf571bcf3e976f4d to your computer and use it in GitHub Desktop.
Save chianingwang/4290ff3cc95482f1cf571bcf3e976f4d to your computer and use it in GitHub Desktop.
import hashlib
import itertools
import os
import swiftclient
import time
import logging
def copy_to_swift():
logger = logging.getLogger('swiftclient')
logger.setLevel('DEBUG')
logger.addHandler(logging.StreamHandler())
function_start = time.time()
conn = swiftclient.Connection(
authurl='https://test.swiftstack.org/auth/v1.0',
user='test',
key='xxxx',
auth_version='1',
)
for path, subdirs, files in os.walk('/tmp/test'):
print path
# If it's not a subdir of gluster with files in it, skip.
if subdirs or not files:
continue
#container_name = "conn_test" + files[0][:4]
container_name = "conn_test"
for file in files:
start_write_time = time.time()
conn.put_object(container_name, file, os.path.join(path, file), headers={'if-none-match': '*'})
end_write_time = time.time()
print "Wrote object %s to Swift in %.2fs" % (file, end_write_time - start_write_time)
function_end = time.time()
print "copying to swift took: %.2fs" % (function_end - function_start)
if __name__ == '__main__':
copy_to_swift()
#verify_files_copied_to_swift()
import hashlib
import itertools
import os
import swiftclient
import time
import logging
from swiftclient.multithreading import OutputManager
from swiftclient.service import SwiftError, SwiftService, SwiftUploadObject
def copy_to_swift():
logger = logging.getLogger('swiftclient')
logger.setLevel('DEBUG')
logger.addHandler(logging.StreamHandler())
logger = logging.getLogger('swiftclient.service')
logger.setLevel('DEBUG')
logger.addHandler(logging.StreamHandler())
test_credentials ={'auth_version':'1',
'auth':'https://test.swiftstack.org/auth/v1.0',
'user':'test', 'key':'xxxx'}
function_start = time.time()
with SwiftService(options=test_credentials) as swift, OutputManager() as out_manager:
try:
#obj_start = time.time()
for path, subdirs, files in os.walk("/tmp/test/"):
print path, subdirs, files
# If it's not a subdir of gluster with files in it, skip.
if subdirs or not files:
continue
#container = "bagstore-" + files[0][:4]
container = "service_test"
print "files prepared: %s at %.2fs" % (files, time.time())
objs = [SwiftUploadObject(os.path.join(path, file), object_name=file) for file in files]
obj_start = time.time()
r = swift.upload(container, objs, options={})
for i in r:
print i
'''
for r in swift.upload(container, objs, options={'header': ['if-none-match:*']}):
print "files uploaded: %s at %.2fs" % (files, time.time())
if r['success']:
print "files success: %s at %.2fs" % (files, time.time())
if 'object' in r:
print "files object: %s at %.2fs" % (r['object'], time.time())
#print(r['object'])
elif 'for_object' in r:
print "files for_object: %s at %.2fs" % (r['for_object'], time.time())
print('%s segment %s' % (r['for_object'], r['segment_index']))
else:
error = r['error']
print "files error: %s at %.2fs" % (error, time.time())
if r['action'] == "upload_object":
print("Did not upload object %s to container %s: %s" % (container, r['object'], error))
else:
print(error)
'''
obj_end = time.time()
obj_upload_time = (obj_end - obj_start)
print "files: %s upload took: %.2fs" % (files, obj_upload_time)
except SwiftError as e:
logger.error(e.value)
function_end = time.time()
print "copying to swift took: %.2fs" % (function_end - function_start)
if __name__ == '__main__':
copy_to_swift()
@chianingwang
Copy link
Author

test_conn result

/tmp/test
Wrote object test1.txt to Swift in 3.10s
Wrote object 100MB to Swift in 2.53s
Wrote object test2.txt to Swift in 1.70s
Wrote object test3.txt to Swift in 0.56s
copying to swift took: 7.89s

test_service result

/tmp/test/ [] ['test1.txt', '100MB', 'test2.txt', 'test3.txt']
files prepared: ['test1.txt', '100MB', 'test2.txt', 'test3.txt'] at 1532123198.24s
files: ['test1.txt', '100MB', 'test2.txt', 'test3.txt'] upload took: 46.99s
copying to swift took: 47.00s

@chianingwang
Copy link
Author

  • test_conn.py debug output
/tmp/test
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'txeae9b61a05e442a3b4460-005b525f40', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:16:32 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'txeae9b61a05e442a3b4460-005b525f40'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/conn_test/test1.txt -X PUT -H "if-none-match: *" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:16:33 GMT', u'Etag': u'ed3dd25f7a5c84bf2a5adab19b982627', u'X-Trans-Id': u'txfa1ba066461e40a8a7689-005b525f40', u'Date': u'Fri, 20 Jul 2018 22:16:33 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'txfa1ba066461e40a8a7689-005b525f40'}
Wrote object test1.txt to Swift in 0.94s
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/conn_test/100MB -X PUT -H "if-none-match: *" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:16:34 GMT', u'Etag': u'156ba335bf089bea078a4a7ef5126151', u'X-Trans-Id': u'txba36cbe591d74757b44dd-005b525f41', u'Date': u'Fri, 20 Jul 2018 22:16:35 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'txba36cbe591d74757b44dd-005b525f41'}
Wrote object 100MB to Swift in 2.46s
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/conn_test/test2.txt -X PUT -H "if-none-match: *" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:16:37 GMT', u'Etag': u'bcff6735f39202ab7489e725cecfa86d', u'X-Trans-Id': u'tx2716908857114ca39eb6b-005b525f44', u'Date': u'Fri, 20 Jul 2018 22:16:38 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx2716908857114ca39eb6b-005b525f44'}
Wrote object test2.txt to Swift in 2.01s
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/conn_test/test3.txt -X PUT -H "if-none-match: *" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:16:39 GMT', u'Etag': u'b6b288f57c3d62596e77c82c2c21bac1', u'X-Trans-Id': u'tx1fd23f295526408687c12-005b525f46', u'Date': u'Fri, 20 Jul 2018 22:16:38 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx1fd23f295526408687c12-005b525f46'}
Wrote object test3.txt to Swift in 0.67s
copying to swift took: 6.08s

@chianingwang
Copy link
Author

  • test_service.py debug outpu
/tmp/test/ [] ['test1.txt', '100MB', 'test2.txt', 'test3.txt']
files prepared: ['test1.txt', '100MB', 'test2.txt', 'test3.txt'] at 1532125083.91s
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'tx95da73540ea042c2a2272-005b525f9c', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:18:04 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'tx95da73540ea042c2a2272-005b525f9c'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test -X PUT -H "Content-Length: 0" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'Content-Length': u'0', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'txb4640d73f28d48478b0de-005b525f9c', u'X-Trans-Id': u'txb4640d73f28d48478b0de-005b525f9c'}
{u'action': u'create_container', u'headers': {}, u'container': u'service_test', u'response_dict': {'status': 201, 'headers': {u'date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'content-length': u'0', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'txb4640d73f28d48478b0de-005b525f9c', u'x-trans-id': u'txb4640d73f28d48478b0de-005b525f9c'}, 'reason': 'Created', 'response_dicts': [{'status': 201, 'headers': {u'date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'content-length': u'0', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'txb4640d73f28d48478b0de-005b525f9c', u'x-trans-id': u'txb4640d73f28d48478b0de-005b525f9c'}, 'reason': 'Created'}]}, u'success': True}
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'tx6d302d3c30b647078ed8e-005b525f9d', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'tx6d302d3c30b647078ed8e-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'tx6a0dc5ef1360481abc763-005b525f9d', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'tx6a0dc5ef1360481abc763-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'txa3c0886b06ae476e87208-005b525f9d', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'txa3c0886b06ae476e87208-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/auth/v1.0 -X GET
RESP STATUS: 200 OK
RESP HEADERS: {u'Content-Length': u'0', u'Set-Cookie': u'X-Auth-Token=AUT...', u'X-Trans-Id': u'tx6d45abfe5f4d492f82d9e-005b525f9d', u'X-Auth-Token': u'AUTH_tk5f01bb73e...', u'X-Storage-Token': u'AUTH_tk5f01bb73e...', u'Date': u'Fri, 20 Jul 2018 22:18:05 GMT', u'X-Storage-Url': u'https://test.swiftstack.org/v1/AUTH_test', u'Content-Type': u'text/plain; charset=UTF-8', u'X-Openstack-Request-Id': u'tx6d45abfe5f4d492f82d9e-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/100MB -I -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 404 Not Found
RESP HEADERS: {u'Date': u'Fri, 20 Jul 2018 22:18:08 GMT', u'Content-Length': u'0', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'txa832e0a6fc404345a1fa9-005b525f9d', u'X-Trans-Id': u'txa832e0a6fc404345a1fa9-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test3.txt -I -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 404 Not Found
RESP HEADERS: {u'Date': u'Fri, 20 Jul 2018 22:18:08 GMT', u'Content-Length': u'0', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'txdd39557d18f24afeb47b1-005b525f9d', u'X-Trans-Id': u'txdd39557d18f24afeb47b1-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test1.txt -I -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 404 Not Found
RESP HEADERS: {u'Date': u'Fri, 20 Jul 2018 22:18:08 GMT', u'Content-Length': u'0', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx9bcb9df4113344b7a03bf-005b525f9d', u'X-Trans-Id': u'tx9bcb9df4113344b7a03bf-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test2.txt -I -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 404 Not Found
RESP HEADERS: {u'Date': u'Fri, 20 Jul 2018 22:18:08 GMT', u'Content-Length': u'0', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx86f19f5c030e44d9a0f7d-005b525f9d', u'X-Trans-Id': u'tx86f19f5c030e44d9a0f7d-005b525f9d'}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test1.txt -X PUT -H "Content-Length: 36" -H "x-object-meta-mtime: 1532121001.394691" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'X-Trans-Id': u'tx5f12c7bcb4084323a12da-005b525fa0', u'Date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx5f12c7bcb4084323a12da-005b525fa0'}
{u'status': u'uploaded', u'large_object': False, u'container': u'service_test', u'success': True, u'object': u'test1.txt', u'headers': {u'x-object-meta-mtime': u'1532121001.394691'}, u'attempts': 1, u'action': u'upload_object', u'path': '/tmp/test/test1.txt', u'response_dict': {'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx5f12c7bcb4084323a12da-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx5f12c7bcb4084323a12da-005b525fa0'}, 'reason': 'Created', 'response_dicts': [{'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx5f12c7bcb4084323a12da-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx5f12c7bcb4084323a12da-005b525fa0'}, 'reason': 'Created'}]}}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test2.txt -X PUT -H "Content-Length: 36" -H "x-object-meta-mtime: 1532121032.576181" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:18:10 GMT', u'Etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'X-Trans-Id': u'tx49675e5f688b4e74b4b36-005b525fa1', u'Date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx49675e5f688b4e74b4b36-005b525fa1'}
{u'status': u'uploaded', u'large_object': False, u'container': u'service_test', u'success': True, u'object': u'test2.txt', u'headers': {u'x-object-meta-mtime': u'1532121032.576181'}, u'attempts': 1, u'action': u'upload_object', u'path': '/tmp/test/test2.txt', u'response_dict': {'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:10 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx49675e5f688b4e74b4b36-005b525fa1', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx49675e5f688b4e74b4b36-005b525fa1'}, 'reason': 'Created', 'response_dicts': [{'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:10 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx49675e5f688b4e74b4b36-005b525fa1', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx49675e5f688b4e74b4b36-005b525fa1'}, 'reason': 'Created'}]}}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/test3.txt -X PUT -H "Content-Length: 36" -H "x-object-meta-mtime: 1532121035.473536" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'X-Trans-Id': u'tx245d979a8c2e4b239093d-005b525fa0', u'Date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx245d979a8c2e4b239093d-005b525fa0'}
{u'status': u'uploaded', u'large_object': False, u'container': u'service_test', u'success': True, u'object': u'test3.txt', u'headers': {u'x-object-meta-mtime': u'1532121035.473536'}, u'attempts': 1, u'action': u'upload_object', u'path': '/tmp/test/test3.txt', u'response_dict': {'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx245d979a8c2e4b239093d-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx245d979a8c2e4b239093d-005b525fa0'}, 'reason': 'Created', 'response_dicts': [{'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'b32ff06838cb19dc773b6ced72a8ed03', u'x-trans-id': u'tx245d979a8c2e4b239093d-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:09 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx245d979a8c2e4b239093d-005b525fa0'}, 'reason': 'Created'}]}}
REQ: curl -i https://test.swiftstack.org/v1/AUTH_test/service_test/100MB -X PUT -H "Content-Length: 104857600" -H "x-object-meta-mtime: 1532121063.552078" -H "X-Auth-Token: AUTH_tk5f01bb73e..."
RESP STATUS: 201 Created
RESP HEADERS: {u'Content-Length': u'0', u'Last-Modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'Etag': u'978fe39760e4d83e05c41579c35c3596', u'X-Trans-Id': u'tx44a91570c94b4fc9b9a8b-005b525fa0', u'Date': u'Fri, 20 Jul 2018 22:18:50 GMT', u'Content-Type': u'text/html; charset=UTF-8', u'X-Openstack-Request-Id': u'tx44a91570c94b4fc9b9a8b-005b525fa0'}
{u'status': u'uploaded', u'large_object': False, u'container': u'service_test', u'success': True, u'object': u'100MB', u'headers': {u'x-object-meta-mtime': u'1532121063.552078'}, u'attempts': 1, u'action': u'upload_object', u'path': '/tmp/test/100MB', u'response_dict': {'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'978fe39760e4d83e05c41579c35c3596', u'x-trans-id': u'tx44a91570c94b4fc9b9a8b-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:50 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx44a91570c94b4fc9b9a8b-005b525fa0'}, 'reason': 'Created', 'response_dicts': [{'status': 201, 'headers': {u'content-length': u'0', u'last-modified': u'Fri, 20 Jul 2018 22:18:09 GMT', u'etag': u'978fe39760e4d83e05c41579c35c3596', u'x-trans-id': u'tx44a91570c94b4fc9b9a8b-005b525fa0', u'date': u'Fri, 20 Jul 2018 22:18:50 GMT', u'content-type': u'text/html; charset=UTF-8', u'x-openstack-request-id': u'tx44a91570c94b4fc9b9a8b-005b525fa0'}, 'reason': 'Created'}]}}
ERROR:root:message
None
files: ['test1.txt', '100MB', 'test2.txt', 'test3.txt'] upload took: 46.61s
copying to swift took: 46.62s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment