Mercurial > repos > shellac > sam_consensus_v3
comparison env/bin/cfadmin @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
| author | shellac |
|---|---|
| date | Mon, 22 Mar 2021 18:12:50 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4f3585e2f14b |
|---|---|
| 1 #!/Users/cmdms/OneDrive-UOB/Development/Projects/2021/sam-consensus-v3/env/bin/python3 | |
| 2 # Author: Chris Moyer | |
| 3 # | |
| 4 # cfadmin is similar to sdbadmin for CloudFront, it's a simple | |
| 5 # console utility to perform the most frequent tasks with CloudFront | |
| 6 # | |
| 7 def _print_distributions(dists): | |
| 8 """Internal function to print out all the distributions provided""" | |
| 9 print "%-12s %-50s %s" % ("Status", "Domain Name", "Origin") | |
| 10 print "-"*80 | |
| 11 for d in dists: | |
| 12 print "%-12s %-50s %-30s" % (d.status, d.domain_name, d.origin) | |
| 13 for cname in d.cnames: | |
| 14 print " "*12, "CNAME => %s" % cname | |
| 15 print "" | |
| 16 | |
| 17 def help(cf, fnc=None): | |
| 18 """Print help message, optionally about a specific function""" | |
| 19 import inspect | |
| 20 self = sys.modules['__main__'] | |
| 21 if fnc: | |
| 22 try: | |
| 23 cmd = getattr(self, fnc) | |
| 24 except: | |
| 25 cmd = None | |
| 26 if not inspect.isfunction(cmd): | |
| 27 print "No function named: %s found" % fnc | |
| 28 sys.exit(2) | |
| 29 (args, varargs, varkw, defaults) = inspect.getargspec(cmd) | |
| 30 print cmd.__doc__ | |
| 31 print "Usage: %s %s" % (fnc, " ".join([ "[%s]" % a for a in args[1:]])) | |
| 32 else: | |
| 33 print "Usage: cfadmin [command]" | |
| 34 for cname in dir(self): | |
| 35 if not cname.startswith("_"): | |
| 36 cmd = getattr(self, cname) | |
| 37 if inspect.isfunction(cmd): | |
| 38 doc = cmd.__doc__ | |
| 39 print "\t%s - %s" % (cname, doc) | |
| 40 sys.exit(1) | |
| 41 | |
| 42 def ls(cf): | |
| 43 """List all distributions and streaming distributions""" | |
| 44 print "Standard Distributions" | |
| 45 _print_distributions(cf.get_all_distributions()) | |
| 46 print "Streaming Distributions" | |
| 47 _print_distributions(cf.get_all_streaming_distributions()) | |
| 48 | |
| 49 def invalidate(cf, origin_or_id, *paths): | |
| 50 """Create a cloudfront invalidation request""" | |
| 51 # Allow paths to be passed using stdin | |
| 52 if not paths: | |
| 53 paths = [] | |
| 54 for path in sys.stdin.readlines(): | |
| 55 path = path.strip() | |
| 56 if path: | |
| 57 paths.append(path) | |
| 58 dist = None | |
| 59 for d in cf.get_all_distributions(): | |
| 60 if d.id == origin_or_id or d.origin.dns_name == origin_or_id: | |
| 61 dist = d | |
| 62 break | |
| 63 if not dist: | |
| 64 print "Distribution not found: %s" % origin_or_id | |
| 65 sys.exit(1) | |
| 66 cf.create_invalidation_request(dist.id, paths) | |
| 67 | |
| 68 def listinvalidations(cf, origin_or_id): | |
| 69 """List invalidation requests for a given origin""" | |
| 70 dist = None | |
| 71 for d in cf.get_all_distributions(): | |
| 72 if d.id == origin_or_id or d.origin.dns_name == origin_or_id: | |
| 73 dist = d | |
| 74 break | |
| 75 if not dist: | |
| 76 print "Distribution not found: %s" % origin_or_id | |
| 77 sys.exit(1) | |
| 78 results = cf.get_invalidation_requests(dist.id) | |
| 79 if results: | |
| 80 for result in results: | |
| 81 if result.status == "InProgress": | |
| 82 result = result.get_invalidation_request() | |
| 83 print result.id, result.status, result.paths | |
| 84 else: | |
| 85 print result.id, result.status | |
| 86 | |
| 87 | |
| 88 if __name__ == "__main__": | |
| 89 import boto | |
| 90 import sys | |
| 91 cf = boto.connect_cloudfront() | |
| 92 self = sys.modules['__main__'] | |
| 93 if len(sys.argv) >= 2: | |
| 94 try: | |
| 95 cmd = getattr(self, sys.argv[1]) | |
| 96 except: | |
| 97 cmd = None | |
| 98 args = sys.argv[2:] | |
| 99 else: | |
| 100 cmd = help | |
| 101 args = [] | |
| 102 if not cmd: | |
| 103 cmd = help | |
| 104 try: | |
| 105 cmd(cf, *args) | |
| 106 except TypeError as e: | |
| 107 print e | |
| 108 help(cf, cmd.__name__) |
