Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: bin/lss3

Issue 8386013: Merging in latest boto. (Closed) Base URL: svn://svn.chromium.org/boto
Patch Set: Redoing vendor drop by deleting and then merging. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bin/launch_instance ('k') | bin/pyami_sendmail » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bin/lss3
diff --git a/bin/lss3 b/bin/lss3
index 1fba89d538445077a901c00d0571b755ec6d067b..377a5a597e76200dc4ee58fdb722dbdbf4ea0d9f 100755
--- a/bin/lss3
+++ b/bin/lss3
@@ -1,5 +1,6 @@
#!/usr/bin/env python
import boto
+from boto.s3.connection import OrdinaryCallingFormat
def sizeof_fmt(num):
for x in ['b ','KB','MB','GB','TB', 'XB']:
@@ -8,21 +9,43 @@ def sizeof_fmt(num):
num /= 1024.0
return "%3.1f %s" % (num, x)
-def list_bucket(b):
+def list_bucket(b, prefix=None):
"""List everything in a bucket"""
+ from boto.s3.prefix import Prefix
+ from boto.s3.key import Key
total = 0
- for k in b:
+ query = b
+ if prefix:
+ if not prefix.endswith("/"):
+ prefix = prefix + "/"
+ query = b.list(prefix=prefix, delimiter="/")
+ print "%s" % prefix
+ num = 0
+ for k in query:
+ num += 1
mode = "-rwx---"
- for g in k.get_acl().acl.grants:
- if g.id == None:
- if g.permission == "READ":
- mode = "-rwxr--"
- elif g.permission == "FULL_CONTROL":
- mode = "-rwxrwx"
- print "%s\t%010s\t%s" % (mode, sizeof_fmt(k.size), k.name)
- total += k.size
- print "="*60
- print "TOTAL: \t%010s" % sizeof_fmt(total)
+ if isinstance(k, Prefix):
+ mode = "drwxr--"
+ size = 0
+ else:
+ size = k.size
+ for g in k.get_acl().acl.grants:
+ if g.id == None:
+ if g.permission == "READ":
+ mode = "-rwxr--"
+ elif g.permission == "FULL_CONTROL":
+ mode = "-rwxrwx"
+ if isinstance(k, Key):
+ print "%s\t%s\t%010s\t%s" % (mode, k.last_modified,
+ sizeof_fmt(size), k.name)
+ else:
+ #If it's not a Key object, it doesn't have a last_modified time, so
+ #print nothing instead
+ print "%s\t%s\t%010s\t%s" % (mode, ' '*24,
+ sizeof_fmt(size), k.name)
+ total += size
+ print "="*80
+ print "\t\tTOTAL: \t%010s \t%i Files" % (sizeof_fmt(total), num)
def list_buckets(s3):
"""List all the buckets"""
@@ -31,9 +54,24 @@ def list_buckets(s3):
if __name__ == "__main__":
import sys
- s3 = boto.connect_s3()
+
+ pairs = []
+ mixedCase = False
+ for name in sys.argv[1:]:
+ if "/" in name:
+ pairs.append(name.split("/",1))
+ else:
+ pairs.append([name, None])
+ if pairs[-1][0].lower() != pairs[-1][0]:
+ mixedCase = True
+
+ if mixedCase:
+ s3 = boto.connect_s3(calling_format=OrdinaryCallingFormat())
+ else:
+ s3 = boto.connect_s3()
+
if len(sys.argv) < 2:
list_buckets(s3)
else:
- for name in sys.argv[1:]:
- list_bucket(s3.get_bucket(name))
+ for name, prefix in pairs:
+ list_bucket(s3.get_bucket(name), prefix)
« no previous file with comments | « bin/launch_instance ('k') | bin/pyami_sendmail » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698