mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-14 08:51:01 +02:00
84 lines
2.6 KiB
Python
Executable File
84 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
Upload a file to S3
|
|
"""
|
|
|
|
from sys import argv, stdout
|
|
from time import time
|
|
from os.path import basename
|
|
from optparse import OptionParser
|
|
|
|
from boto.s3.key import Key
|
|
from boto.s3.connection import S3Connection
|
|
|
|
|
|
def uploadFile( filename, dest=None, bucket=None, overwrite=False ):
|
|
"Upload a file to a bucket"
|
|
if not bucket:
|
|
bucket = 'onos'
|
|
if not dest:
|
|
key = basename( filename )
|
|
else:
|
|
key = dest + basename( filename ) #FIXME add the /
|
|
print '* Uploading', filename, 'to bucket', bucket, 'as', key
|
|
stdout.flush()
|
|
start = time()
|
|
def callback( transmitted, size ):
|
|
"Progress callback for set_contents_from_filename"
|
|
elapsed = time() - start
|
|
percent = 100.0 * transmitted / size
|
|
kbps = .001 * transmitted / elapsed
|
|
print ( '\r%d bytes transmitted of %d (%.2f%%),'
|
|
' %.2f KB/sec ' %
|
|
( transmitted, size, percent, kbps ) ),
|
|
stdout.flush()
|
|
conn = S3Connection()
|
|
bucket = conn.get_bucket( bucket )
|
|
k = Key( bucket )
|
|
k.key = key
|
|
if overwrite or not k.exists():
|
|
k.set_contents_from_filename( filename, cb=callback, num_cb=100 )
|
|
print
|
|
elapsed = time() - start
|
|
print "* elapsed time: %.2f seconds" % elapsed
|
|
else:
|
|
print 'file', basename( filename ), 'already exists in', bucket.name
|
|
|
|
def testAccess( bucket=None ):
|
|
"Verify access to a bucket"
|
|
if not bucket:
|
|
bucket = 'onos'
|
|
|
|
conn = S3Connection()
|
|
bucket = conn.get_bucket( bucket )
|
|
print bucket.get_acl()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
usage = "Usage: %prog [options] <file to upload>"
|
|
parser = OptionParser(usage=usage)
|
|
parser.add_option("-b", "--bucket", dest="bucket",
|
|
help="Bucket on S3")
|
|
parser.add_option("-d", "--dest", dest="dest",
|
|
help="Destination path in bucket")
|
|
parser.add_option("-k", "--key", dest="awsKey",
|
|
help="Bucket on S3")
|
|
parser.add_option("-s", "--secret", dest="awsSecret",
|
|
help="Bucket on S3")
|
|
parser.add_option("-f", "--force", dest="overwrite",
|
|
help="Overwrite existing file")
|
|
parser.add_option("-v", "--verify", dest="verify", action="store_true",
|
|
help="Verify access to a bucket")
|
|
(options, args) = parser.parse_args()
|
|
|
|
if options.verify:
|
|
testAccess(options.bucket)
|
|
exit()
|
|
|
|
if len( args ) == 0:
|
|
parser.error("missing filenames")
|
|
for file in args:
|
|
uploadFile( file, options.dest, options.bucket, options.overwrite )
|
|
|
|
#FIXME key and secret are unused
|