| Index: boto/route53/record.py | 
| diff --git a/boto/route53/record.py b/boto/route53/record.py | 
| index 24f048279ab46c37a882c081dca351952f711589..6e91a83a1e8ae777559743b69b42fd18a49bb7f7 100644 | 
| --- a/boto/route53/record.py | 
| +++ b/boto/route53/record.py | 
| @@ -26,7 +26,7 @@ from boto.resultset import ResultSet | 
| class ResourceRecordSets(ResultSet): | 
|  | 
| ChangeResourceRecordSetsBody = """<?xml version="1.0" encoding="UTF-8"?> | 
| -    <ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/"> | 
| +    <ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2011-05-05/"> | 
| <ChangeBatch> | 
| <Comment>%(comment)s</Comment> | 
| <Changes>%(changes)s</Changes> | 
| @@ -51,9 +51,9 @@ class ResourceRecordSets(ResultSet): | 
| def __repr__(self): | 
| return '<ResourceRecordSets: %s>' % self.hosted_zone_id | 
|  | 
| -    def add_change(self, action, name, type, ttl=600): | 
| +    def add_change(self, action, name, type, ttl=600, alias_hosted_zone_id=None, alias_dns_name=None): | 
| """Add a change request""" | 
| -        change = Record(name, type, ttl) | 
| +        change = Record(name, type, ttl, alias_hosted_zone_id=alias_hosted_zone_id, alias_dns_name=alias_dns_name) | 
| self.changes.append([action, change]) | 
| return change | 
|  | 
| @@ -104,40 +104,72 @@ class Record(object): | 
| XMLBody = """<ResourceRecordSet> | 
| <Name>%(name)s</Name> | 
| <Type>%(type)s</Type> | 
| -        <TTL>%(ttl)s</TTL> | 
| -        <ResourceRecords>%(records)s</ResourceRecords> | 
| +        %(body)s | 
| </ResourceRecordSet>""" | 
|  | 
| +    ResourceRecordsBody = """ | 
| +        <TTL>%(ttl)s</TTL> | 
| +        <ResourceRecords> | 
| +            %(records)s | 
| +        </ResourceRecords>""" | 
| + | 
| ResourceRecordBody = """<ResourceRecord> | 
| <Value>%s</Value> | 
| </ResourceRecord>""" | 
|  | 
| +    AliasBody = """<AliasTarget> | 
| +        <HostedZoneId>%s</HostedZoneId> | 
| +        <DNSName>%s</DNSName> | 
| +    </AliasTarget>""" | 
|  | 
| -    def __init__(self, name=None, type=None, ttl=600, resource_records=None): | 
| +    def __init__(self, name=None, type=None, ttl=600, resource_records=None, alias_hosted_zone_id=None, alias_dns_name=None): | 
| self.name = name | 
| self.type = type | 
| self.ttl = ttl | 
| if resource_records == None: | 
| resource_records = [] | 
| self.resource_records = resource_records | 
| +        self.alias_hosted_zone_id = alias_hosted_zone_id | 
| +        self.alias_dns_name = alias_dns_name | 
|  | 
| def add_value(self, value): | 
| """Add a resource record value""" | 
| self.resource_records.append(value) | 
|  | 
| +    def set_alias(self, alias_hosted_zone_id, alias_dns_name): | 
| +        """Make this an alias resource record set""" | 
| +        self.alias_hosted_zone_id = alias_hosted_zone_id | 
| +        self.alias_dns_name = alias_dns_name | 
| + | 
| def to_xml(self): | 
| """Spit this resource record set out as XML""" | 
| -        records = "" | 
| -        for r in self.resource_records: | 
| -            records += self.ResourceRecordBody % r | 
| +        if self.alias_hosted_zone_id != None and self.alias_dns_name != None: | 
| +            # Use alias | 
| +            body = self.AliasBody % (self.alias_hosted_zone_id, self.alias_dns_name) | 
| +        else: | 
| +            # Use resource record(s) | 
| +            records = "" | 
| +            for r in self.resource_records: | 
| +                records += self.ResourceRecordBody % r | 
| +            body = self.ResourceRecordsBody % { | 
| +                "ttl": self.ttl, | 
| +                "records": records, | 
| +            } | 
| params = { | 
| "name": self.name, | 
| "type": self.type, | 
| -            "ttl": self.ttl, | 
| -            "records": records | 
| +            "body": body, | 
| } | 
| return self.XMLBody % params | 
|  | 
| +    def to_print(self): | 
| +        if self.alias_hosted_zone_id != None and self.alias_dns_name != None: | 
| +            # Show alias | 
| +            return 'ALIAS ' + self.alias_hosted_zone_id + ' ' + self.alias_dns_name | 
| +        else: | 
| +            # Show resource record(s) | 
| +            return ",".join(self.resource_records) | 
| + | 
| def endElement(self, name, value, connection): | 
| if name == 'Name': | 
| self.name = value | 
| @@ -147,6 +179,10 @@ class Record(object): | 
| self.ttl = value | 
| elif name == 'Value': | 
| self.resource_records.append(value) | 
| +        elif name == 'HostedZoneId': | 
| +            self.alias_hosted_zone_id = value | 
| +        elif name == 'DNSName': | 
| +            self.alias_dns_name = value | 
|  | 
| def startElement(self, name, attrs, connection): | 
| return None | 
|  |