aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/build/uploadToS3.py
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/tools/build/uploadToS3.py')
-rwxr-xr-xframework/src/onos/tools/build/uploadToS3.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/framework/src/onos/tools/build/uploadToS3.py b/framework/src/onos/tools/build/uploadToS3.py
new file mode 100755
index 00000000..a16235cd
--- /dev/null
+++ b/framework/src/onos/tools/build/uploadToS3.py
@@ -0,0 +1,67 @@
+#!/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
+
+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")
+ (options, args) = parser.parse_args()
+
+ 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