Commit ae320738 by Feanil Patel

Update to 4 spaces.

parent d97e086c
...@@ -2,21 +2,40 @@ import boto ...@@ -2,21 +2,40 @@ import boto
from vpcutil import vpc_for_stack_name from vpcutil import vpc_for_stack_name
stack_name = 'testforumstack9' stack_name = 'testforumstack9'
r53 = boto.connect_route53()
# Utility Functions # Utility Functions
def add_zone_to_parent(zone, parent):
#Add a reference for the new zone to its parent zone.
parent_name = parent.Name[:-1]
zone_name = zone.Name[:-1]
change_set = boto.route53.record.ResourceRecordSets()
change = change_set.add_change('CREATE', zone_name, 'NS', 900)
change.add_value(zone.NameServers)
def get_or_create_hosted_zone(zone_name): def get_or_create_hosted_zone(zone_name):
# Get the parent zone.
parent_zone_name = ".".join(zone_name.split('.')[1:])
parent_zone = r53.get_hosted_zone_by_name(parent_zone_name)
if not parent_zone:
msg = "Parent zone({}) does not exist."
raise Exception(msg.format(parent_zone_name))
r53 = boto.connect_route53()
hosted_zone = r53.get_hosted_zone_by_name(zone_name) hosted_zone = r53.get_hosted_zone_by_name(zone_name)
if not hosted_zone: if not hosted_zone:
zone_data = r53.create_hosted_zone(zone_name, r53.create_hosted_zone(zone_name,
comment="Created by automation.") comment="Created by automation.")
hosted_zone = r53.get_hosted_zone_by_name(zone_name) hosted_zone = r53.get_hosted_zone_by_name(zone_name)
add_zone_to_parent(hosted_zone, parent_zone)
return hosted_zone return hosted_zone
def elbs_for_stack_name(stack_name): def elbs_for_stack_name(stack_name):
vpc_id = vpc_for_stack_name(stack_name) vpc_id = vpc_for_stack_name(stack_name)
elbs = boto.connect_elb() elbs = boto.connect_elb()
...@@ -24,11 +43,11 @@ def elbs_for_stack_name(stack_name): ...@@ -24,11 +43,11 @@ def elbs_for_stack_name(stack_name):
if elb.vpc_id == vpc_id: if elb.vpc_id == vpc_id:
yield elb yield elb
def create_service_dns(elb, prefix, zone): def create_service_dns(elb, prefix, zone):
# Get all record sets in zone # Get all record sets in zone
r53 = boto.connect_route53(debug=2)
zone_id = zone.Id.replace("/hostedzone/","") zone_id = zone.Id.replace("/hostedzone/", "")
records = r53.get_all_rrsets(zone_id) records = r53.get_all_rrsets(zone_id)
old_names = [r.name[:-1] for r in records] old_names = [r.name[:-1] for r in records]
...@@ -60,7 +79,7 @@ def create_service_dns(elb, prefix, zone): ...@@ -60,7 +79,7 @@ def create_service_dns(elb, prefix, zone):
'CREATE', 'CREATE',
dns_name, dns_name,
'CNAME', 'CNAME',
600 ) 600)
change.add_value(elb.dns_name) change.add_value(elb.dns_name)
...@@ -68,24 +87,27 @@ def create_service_dns(elb, prefix, zone): ...@@ -68,24 +87,27 @@ def create_service_dns(elb, prefix, zone):
r53.change_rrsets(zone_id, change_set.to_xml()) r53.change_rrsets(zone_id, change_set.to_xml())
if __name__ == "__main__":
# Create DNS for edxapp and xqueue. # Create DNS for edxapp and xqueue.
dns_settings = { dns_settings = {
'edxapp' : [ 'courses', 'studio' ], 'edxapp': ['courses', 'studio'],
'xqueue' : [ 'xqueue' ], 'xqueue': ['xqueue'],
'rabbit' : [ 'rabbit' ], 'rabbit': ['rabbit'],
'xserver' : [ 'xserver' ], 'xserver': ['xserver'],
'worker' : [ 'worker' ], 'worker': ['worker'],
} 'forum': ['forum'],
}
# Create a zone for the stack. # Create a zone for the stack.
zone_name = "{}.vpc.edx.org".format(stack_name) zone_name = "{}.vpc.edx.org".format(stack_name)
zone = get_or_create_hosted_zone(zone_name) zone = get_or_create_hosted_zone(zone_name)
stack_elbs = elbs_for_stack_name(stack_name) stack_elbs = elbs_for_stack_name(stack_name)
for elb in stack_elbs: for elb in stack_elbs:
for service, dns_prefixes in dns_settings.items(): for service, dns_prefixes in dns_settings.items():
#FIXME this breaks when the service name is in the stack name ie. testforumstack.
if service in elb.dns_name.lower(): if service in elb.dns_name.lower():
for prefix in dns_prefixes: for prefix in dns_prefixes:
create_service_dns(elb, prefix, zone) create_service_dns(elb, prefix, zone)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment