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

Side by Side 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, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « bin/launch_instance ('k') | bin/pyami_sendmail » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 import boto 2 import boto
3 from boto.s3.connection import OrdinaryCallingFormat
3 4
4 def sizeof_fmt(num): 5 def sizeof_fmt(num):
5 for x in ['b ','KB','MB','GB','TB', 'XB']: 6 for x in ['b ','KB','MB','GB','TB', 'XB']:
6 if num < 1024.0: 7 if num < 1024.0:
7 return "%3.1f %s" % (num, x) 8 return "%3.1f %s" % (num, x)
8 num /= 1024.0 9 num /= 1024.0
9 return "%3.1f %s" % (num, x) 10 return "%3.1f %s" % (num, x)
10 11
11 def list_bucket(b): 12 def list_bucket(b, prefix=None):
12 """List everything in a bucket""" 13 """List everything in a bucket"""
14 from boto.s3.prefix import Prefix
15 from boto.s3.key import Key
13 total = 0 16 total = 0
14 for k in b: 17 query = b
18 if prefix:
19 if not prefix.endswith("/"):
20 prefix = prefix + "/"
21 query = b.list(prefix=prefix, delimiter="/")
22 print "%s" % prefix
23 num = 0
24 for k in query:
25 num += 1
15 mode = "-rwx---" 26 mode = "-rwx---"
16 for g in k.get_acl().acl.grants: 27 if isinstance(k, Prefix):
17 if g.id == None: 28 mode = "drwxr--"
18 if g.permission == "READ": 29 size = 0
19 mode = "-rwxr--" 30 else:
20 elif g.permission == "FULL_CONTROL": 31 size = k.size
21 mode = "-rwxrwx" 32 for g in k.get_acl().acl.grants:
22 print "%s\t%010s\t%s" % (mode, sizeof_fmt(k.size), k.name) 33 if g.id == None:
23 total += k.size 34 if g.permission == "READ":
24 print "="*60 35 mode = "-rwxr--"
25 print "TOTAL: \t%010s" % sizeof_fmt(total) 36 elif g.permission == "FULL_CONTROL":
37 mode = "-rwxrwx"
38 if isinstance(k, Key):
39 print "%s\t%s\t%010s\t%s" % (mode, k.last_modified,
40 sizeof_fmt(size), k.name)
41 else:
42 #If it's not a Key object, it doesn't have a last_modified time, so
43 #print nothing instead
44 print "%s\t%s\t%010s\t%s" % (mode, ' '*24,
45 sizeof_fmt(size), k.name)
46 total += size
47 print "="*80
48 print "\t\tTOTAL: \t%010s \t%i Files" % (sizeof_fmt(total), num)
26 49
27 def list_buckets(s3): 50 def list_buckets(s3):
28 """List all the buckets""" 51 """List all the buckets"""
29 for b in s3.get_all_buckets(): 52 for b in s3.get_all_buckets():
30 print b.name 53 print b.name
31 54
32 if __name__ == "__main__": 55 if __name__ == "__main__":
33 import sys 56 import sys
34 s3 = boto.connect_s3() 57
58 pairs = []
59 mixedCase = False
60 for name in sys.argv[1:]:
61 if "/" in name:
62 pairs.append(name.split("/",1))
63 else:
64 pairs.append([name, None])
65 if pairs[-1][0].lower() != pairs[-1][0]:
66 mixedCase = True
67
68 if mixedCase:
69 s3 = boto.connect_s3(calling_format=OrdinaryCallingFormat())
70 else:
71 s3 = boto.connect_s3()
72
35 if len(sys.argv) < 2: 73 if len(sys.argv) < 2:
36 list_buckets(s3) 74 list_buckets(s3)
37 else: 75 else:
38 for name in sys.argv[1:]: 76 for name, prefix in pairs:
39 list_bucket(s3.get_bucket(name)) 77 list_bucket(s3.get_bucket(name), prefix)
OLDNEW
« 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