def delete(self): """ Deletes this record set. """ cset = ChangeSet(connection=self.connection, hosted_zone_id=self.zone_id) cset.add_change('DELETE', self) return self.connection._change_resource_record_sets(cset)
def _add_record(self, record_set_class, name, values, ttl=60, weight=None, region=None, set_identifier=None, alias_hosted_zone_id=None, alias_dns_name=None): """ Convenience method for creating ResourceRecordSets. Most of the calls are basically the same, this saves on repetition. :rtype: tuple :returns: A tuple in the form of ``(rrset, change_info)``, where ``rrset`` is the newly created ResourceRecordSet sub-class instance. """ self._halt_if_already_deleted() rrset_kwargs = dict( connection=self.connection, zone_id=self.id, name=name, ttl=ttl, records=values, weight=weight, region=region, set_identifier=set_identifier, ) if alias_hosted_zone_id or alias_dns_name: rrset_kwargs.update( dict(alias_hosted_zone_id=alias_hosted_zone_id, alias_dns_name=alias_dns_name)) rrset = record_set_class(**rrset_kwargs) cset = ChangeSet(connection=self.connection, hosted_zone_id=self.id) cset.add_change('CREATE', rrset) change_info = self.connection._change_resource_record_sets(cset) return rrset, change_info
def delete(self, force=False): """ Deletes this hosted zone. After this method is ran, you won't be able to add records, or do anything else with the zone. You'd need to re-create it, as zones are read-only after creation. :keyword bool force: If ``True``, delete the :py:class:`HostedZone <route53.hosted_zone.HostedZone>`, even if it means nuking all associated record sets. If ``False``, an exception is raised if this :py:class:`HostedZone <route53.hosted_zone.HostedZone>` has record sets. :rtype: dict :returns: A dict of change info, which contains some details about the request. """ self._halt_if_already_deleted() if force: # Forcing deletion by cleaning up all record sets first. We'll # do it all in one change set. cset = ChangeSet(connection=self.connection, hosted_zone_id=self.id) for rrset in self.record_sets: # You can delete a HostedZone if there are only SOA and NS # entries left. So delete everything but SOA/NS entries. if rrset.rrset_type not in ['SOA', 'NS']: cset.add_change('DELETE', rrset) if cset.deletions or cset.creations: # Bombs away. self.connection._change_resource_record_sets(cset) # Now delete the HostedZone. retval = self.connection.delete_hosted_zone_by_id(self.id) # Used to protect against modifying a deleted HostedZone. self._is_deleted = True return retval
def save(self): """ Saves any changes to this record set. """ cset = ChangeSet(connection=self.connection, hosted_zone_id=self.zone_id) # Record sets can't actually be modified. You have to delete the # existing one and create a new one. Since this happens within a single # change set, it appears that the values were modified, when instead # the whole thing is replaced. cset.add_change('DELETE', self) cset.add_change('CREATE', self) retval = self.connection._change_resource_record_sets(cset) # Now copy the current attribute values on this instance to # the initial_vals dict. This will re-set the modification tracking. for key, val in self._initial_vals.items(): self._initial_vals[key] = getattr(self, key) return retval
def _add_record(self, record_set_class, name, values, ttl=60, weight=None, region=None,set_identifier=None, alias_hosted_zone_id=None, alias_dns_name=None, health_check=None): """ Convenience method for creating ResourceRecordSets. Most of the calls are basically the same, this saves on repetition. :rtype: tuple :returns: A tuple in the form of ``(rrset, change_info)``, where ``rrset`` is the newly created ResourceRecordSet sub-class instance. """ self._halt_if_already_deleted() rrset_kwargs = dict( connection=self.connection, zone_id=self.id, name=name, ttl=ttl, records=values, weight=weight, region=region, set_identifier=set_identifier, ) if alias_hosted_zone_id or alias_dns_name: rrset_kwargs.update(dict( alias_hosted_zone_id=alias_hosted_zone_id, alias_dns_name=alias_dns_name )) rrset = record_set_class(**rrset_kwargs) cset = ChangeSet(connection=self.connection, hosted_zone_id=self.id) cset.add_change('CREATE', rrset) change_info = self.connection._change_resource_record_sets(cset) return rrset, change_info