if not isinstance(replacement, dns.rdataset.Rdataset):
raise ValueError('replacement is not an rdataset')
+ if isinstance(replacement, dns.rrset.RRset):
+ # RRsets are not good replacements as the match() method
+ # is not compatible.
+ replacement = replacement.to_rdataset()
self.delete_rdataset(replacement.rdclass, replacement.rdtype,
replacement.covers)
self.rdatasets.append(replacement)
z2 = dns.zone.from_text(out, 'example.', relativize=True)
self.assertEqual(z, z2)
+ def testNodeReplaceRdatasetConvertsRRsets(self):
+ node = dns.node.Node()
+ rrs = dns.rrset.from_text('foo', 300, 'in', 'a', '10.0.0.1')
+ node.replace_rdataset(rrs)
+ rds = node.find_rdataset(dns.rdataclass.IN, dns.rdatatype.A)
+ self.assertEqual(rds, rrs)
+ self.assertTrue(rds is not rrs)
+ self.assertFalse(isinstance(rds, dns.rrset.RRset))
+
if __name__ == '__main__':
unittest.main()