def pdns_do(self):
            data = {
                'rrsets':
                    [
                        {
                            'name': RRset.construct_name(subname, self._domain_name),
                            'type': type_,
                            'ttl': 1,  # some meaningless integer required by pdns's syntax
                            'changetype': 'REPLACE',  # don't use "DELETE" due to desec-stack#220, PowerDNS/pdns#7501
                            'records': []
                        }
                        for type_, subname in self._deletions
                    ] + [
                        {
                            'name': RRset.construct_name(subname, self._domain_name),
                            'type': type_,
                            'ttl': RRset.objects.values_list('ttl', flat=True).get(domain__name=self._domain_name,
                                                                                   type=type_, subname=subname),
                            'changetype': 'REPLACE',
                            'records': [
                                {'content': rr.content, 'disabled': False}
                                for rr in RR.objects.filter(
                                    rrset__domain__name=self._domain_name,
                                    rrset__type=type_,
                                    rrset__subname=subname)
                            ]
                        }
                        for type_, subname in (self._additions | self._modifications) - self._deletions
                    ]
            }

            if data['rrsets']:
                _pdns_patch(NSLORD, '/zones/' + self.domain_pdns_id, data)
 def update_catalog(self, delete=False):
     return _pdns_patch(
         NSMASTER, '/zones/' + pdns_id(settings.CATALOG_ZONE), {
             'rrsets': [
                 construct_catalog_rrset(zone=self.domain_name,
                                         delete=delete)
             ]
         })
Beispiel #3
0
 def update_catalog(self, delete=False):
     content = _pdns_patch(
         NSMASTER, '/zones/' + pdns_id(settings.CATALOG_ZONE), {
             'rrsets': [
                 construct_catalog_rrset(zone=self.domain_name,
                                         delete=delete)
             ]
         })
     metrics.get('desecapi_pdns_catalog_updated').inc()
     return content