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

Unified Diff: third_party/gsutil/boto/bin/route53

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 7 years, 9 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 | « third_party/gsutil/boto/bin/pyami_sendmail ('k') | third_party/gsutil/boto/bin/s3put » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/gsutil/boto/bin/route53
diff --git a/third_party/gsutil/boto/bin/route53 b/third_party/gsutil/boto/bin/route53
new file mode 100755
index 0000000000000000000000000000000000000000..488a9ca91371c4f2896b8d32342ea13a59db1363
--- /dev/null
+++ b/third_party/gsutil/boto/bin/route53
@@ -0,0 +1,205 @@
+#!/usr/bin/env python
+# Author: Chris Moyer
+#
+# route53 is similar to sdbadmin for Route53, it's a simple
+# console utility to perform the most frequent tasks with Route53
+#
+# Example usage. Use route53 get after each command to see how the
+# zone changes.
+#
+# Add a non-weighted record, change its value, then delete. Default TTL:
+#
+# route53 add_record ZPO9LGHZ43QB9 rr.example.com A 4.3.2.1
+# route53 change_record ZPO9LGHZ43QB9 rr.example.com A 9.8.7.6
+# route53 del_record ZPO9LGHZ43QB9 rr.example.com A 9.8.7.6
+#
+# Add a weighted record with two different weights. Note that the TTL
+# must be specified as route53 uses positional parameters rather than
+# option flags:
+#
+# route53 add_record ZPO9LGHZ43QB9 wrr.example.com A 1.2.3.4 600 foo9 10
+# route53 add_record ZPO9LGHZ43QB9 wrr.example.com A 4.3.2.1 600 foo8 10
+#
+# route53 change_record ZPO9LGHZ43QB9 wrr.example.com A 9.9.9.9 600 foo8 10
+#
+# route53 del_record ZPO9LGHZ43QB9 wrr.example.com A 1.2.3.4 600 foo9 10
+# route53 del_record ZPO9LGHZ43QB9 wrr.example.com A 9.9.9.9 600 foo8 10
+#
+# Add a non-weighted alias, change its value, then delete. Alaises inherit
+# their TTLs from the backing ELB:
+#
+# route53 add_alias ZPO9LGHZ43QB9 alias.example.com A Z3DZXE0Q79N41H lb-1218761514.us-east-1.elb.amazonaws.com.
+# route53 change_alias ZPO9LGHZ43QB9 alias.example.com. A Z3DZXE0Q79N41H lb2-1218761514.us-east-1.elb.amazonaws.com.
+# route53 delete_alias ZPO9LGHZ43QB9 alias.example.com. A Z3DZXE0Q79N41H lb2-1218761514.us-east-1.elb.amazonaws.com.
+
+def _print_zone_info(zoneinfo):
+ print "="*80
+ print "| ID: %s" % zoneinfo['Id'].split("/")[-1]
+ print "| Name: %s" % zoneinfo['Name']
+ print "| Ref: %s" % zoneinfo['CallerReference']
+ print "="*80
+ print zoneinfo['Config']
+ print
+
+
+def create(conn, hostname, caller_reference=None, comment=''):
+ """Create a hosted zone, returning the nameservers"""
+ response = conn.create_hosted_zone(hostname, caller_reference, comment)
+ print "Pending, please add the following Name Servers:"
+ for ns in response.NameServers:
+ print "\t", ns
+
+def delete_zone(conn, hosted_zone_id):
+ """Delete a hosted zone by ID"""
+ response = conn.delete_hosted_zone(hosted_zone_id)
+ print response
+
+def ls(conn):
+ """List all hosted zones"""
+ response = conn.get_all_hosted_zones()
+ for zoneinfo in response['ListHostedZonesResponse']['HostedZones']:
+ _print_zone_info(zoneinfo)
+
+def get(conn, hosted_zone_id, type=None, name=None, maxitems=None):
+ """Get all the records for a single zone"""
+ response = conn.get_all_rrsets(hosted_zone_id, type, name, maxitems=maxitems)
+ # If a maximum number of items was set, we limit to that number
+ # by turning the response into an actual list (copying it)
+ # instead of allowing it to page
+ if maxitems:
+ response = response[:]
+ print '%-40s %-5s %-20s %s' % ("Name", "Type", "TTL", "Value(s)")
+ for record in response:
+ print '%-40s %-5s %-20s %s' % (record.name, record.type, record.ttl, record.to_print())
+
+def _add_del(conn, hosted_zone_id, change, name, type, identifier, weight, values, ttl, comment):
+ from boto.route53.record import ResourceRecordSets
+ changes = ResourceRecordSets(conn, hosted_zone_id, comment)
+ change = changes.add_change(change, name, type, ttl,
+ identifier=identifier, weight=weight)
+ for value in values.split(','):
+ change.add_value(value)
+ print changes.commit()
+
+def _add_del_alias(conn, hosted_zone_id, change, name, type, identifier, weight, alias_hosted_zone_id, alias_dns_name, comment):
+ from boto.route53.record import ResourceRecordSets
+ changes = ResourceRecordSets(conn, hosted_zone_id, comment)
+ change = changes.add_change(change, name, type,
+ identifier=identifier, weight=weight)
+ change.set_alias(alias_hosted_zone_id, alias_dns_name)
+ print changes.commit()
+
+def add_record(conn, hosted_zone_id, name, type, values, ttl=600,
+ identifier=None, weight=None, comment=""):
+ """Add a new record to a zone. identifier and weight are optional."""
+ _add_del(conn, hosted_zone_id, "CREATE", name, type, identifier,
+ weight, values, ttl, comment)
+
+def del_record(conn, hosted_zone_id, name, type, values, ttl=600,
+ identifier=None, weight=None, comment=""):
+ """Delete a record from a zone: name, type, ttl, identifier, and weight must match."""
+ _add_del(conn, hosted_zone_id, "DELETE", name, type, identifier,
+ weight, values, ttl, comment)
+
+def add_alias(conn, hosted_zone_id, name, type, alias_hosted_zone_id,
+ alias_dns_name, identifier=None, weight=None, comment=""):
+ """Add a new alias to a zone. identifier and weight are optional."""
+ _add_del_alias(conn, hosted_zone_id, "CREATE", name, type, identifier,
+ weight, alias_hosted_zone_id, alias_dns_name, comment)
+
+def del_alias(conn, hosted_zone_id, name, type, alias_hosted_zone_id,
+ alias_dns_name, identifier=None, weight=None, comment=""):
+ """Delete an alias from a zone: name, type, alias_hosted_zone_id, alias_dns_name, weight and identifier must match."""
+ _add_del_alias(conn, hosted_zone_id, "DELETE", name, type, identifier,
+ weight, alias_hosted_zone_id, alias_dns_name, comment)
+
+def change_record(conn, hosted_zone_id, name, type, newvalues, ttl=600,
+ identifier=None, weight=None, comment=""):
+ """Delete and then add a record to a zone. identifier and weight are optional."""
+ from boto.route53.record import ResourceRecordSets
+ changes = ResourceRecordSets(conn, hosted_zone_id, comment)
+ # Assume there are not more than 10 WRRs for a given (name, type)
+ responses = conn.get_all_rrsets(hosted_zone_id, type, name, maxitems=10)
+ for response in responses:
+ if response.name != name or response.type != type:
+ continue
+ if response.identifier != identifier or response.weight != weight:
+ continue
+ change1 = changes.add_change("DELETE", name, type, response.ttl,
+ identifier=response.identifier,
+ weight=response.weight)
+ for old_value in response.resource_records:
+ change1.add_value(old_value)
+
+ change2 = changes.add_change("CREATE", name, type, ttl,
+ identifier=identifier, weight=weight)
+ for new_value in newvalues.split(','):
+ change2.add_value(new_value)
+ print changes.commit()
+
+def change_alias(conn, hosted_zone_id, name, type, new_alias_hosted_zone_id, new_alias_dns_name, identifier=None, weight=None, comment=""):
+ """Delete and then add an alias to a zone. identifier and weight are optional."""
+ from boto.route53.record import ResourceRecordSets
+ changes = ResourceRecordSets(conn, hosted_zone_id, comment)
+ # Assume there are not more than 10 WRRs for a given (name, type)
+ responses = conn.get_all_rrsets(hosted_zone_id, type, name, maxitems=10)
+ for response in responses:
+ if response.name != name or response.type != type:
+ continue
+ if response.identifier != identifier or response.weight != weight:
+ continue
+ change1 = changes.add_change("DELETE", name, type,
+ identifier=response.identifier,
+ weight=response.weight)
+ change1.set_alias(response.alias_hosted_zone_id, response.alias_dns_name)
+ change2 = changes.add_change("CREATE", name, type, identifier=identifier, weight=weight)
+ change2.set_alias(new_alias_hosted_zone_id, new_alias_dns_name)
+ print changes.commit()
+
+def help(conn, fnc=None):
+ """Prints this help message"""
+ import inspect
+ self = sys.modules['__main__']
+ if fnc:
+ try:
+ cmd = getattr(self, fnc)
+ except:
+ cmd = None
+ if not inspect.isfunction(cmd):
+ print "No function named: %s found" % fnc
+ sys.exit(2)
+ (args, varargs, varkw, defaults) = inspect.getargspec(cmd)
+ print cmd.__doc__
+ print "Usage: %s %s" % (fnc, " ".join([ "[%s]" % a for a in args[1:]]))
+ else:
+ print "Usage: route53 [command]"
+ for cname in dir(self):
+ if not cname.startswith("_"):
+ cmd = getattr(self, cname)
+ if inspect.isfunction(cmd):
+ doc = cmd.__doc__
+ print "\t%-20s %s" % (cname, doc)
+ sys.exit(1)
+
+
+if __name__ == "__main__":
+ import boto
+ import sys
+ conn = boto.connect_route53()
+ self = sys.modules['__main__']
+ if len(sys.argv) >= 2:
+ try:
+ cmd = getattr(self, sys.argv[1])
+ except:
+ cmd = None
+ args = sys.argv[2:]
+ else:
+ cmd = help
+ args = []
+ if not cmd:
+ cmd = help
+ try:
+ cmd(conn, *args)
+ except TypeError, e:
+ print e
+ help(conn, cmd.__name__)
« no previous file with comments | « third_party/gsutil/boto/bin/pyami_sendmail ('k') | third_party/gsutil/boto/bin/s3put » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698