Updating upload-bits scripts for nightly pushes

Change-Id: I84669b5a13c4f033cd564050254e0c6a44eb1431
diff --git a/tools/build/uploadToS3.py b/tools/build/uploadToS3.py
new file mode 100755
index 0000000..a16235c
--- /dev/null
+++ b/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