"name parameter must be a subdomain of the zone origin")
if self.relativize:
name = name.relativize(self.origin)
+ elif not self.relativize:
+ # We have a relative name in a non-relative zone, so derelativize.
+ if self.origin is None:
+ raise KeyError('no zone origin is defined')
+ name = name.derelativize(self.origin)
return name
def __getitem__(self, key):
raise KeyError("name is not a subdomain of the zone origin")
if self.zone.relativize:
name = name.relativize(self.origin)
+ elif not self.zone.relativize:
+ # We have a relative name in a non-relative zone, so derelativize.
+ if self.origin is None:
+ raise KeyError('no zone origin is defined')
+ name = name.derelativize(self.origin)
return name
def get_node(self, name):
rds = z.get_rdataset('@', 'loc')
self.assertTrue(rds is None)
+ def testGetRdatasetWithRelativeNameFromAbsoluteZone(self):
+ z = dns.zone.from_text(example_text, 'example.', relativize=False)
+ rds = z.get_rdataset(dns.name.empty, 'soa')
+ self.assertIsNotNone(rds)
+ exrds = dns.rdataset.from_text('IN', 'SOA', 300, 'foo.example. bar.example. 1 2 3 4 5')
+ self.assertEqual(rds, exrds)
+
def testGetRRset1(self):
z = dns.zone.from_text(example_text, 'example.', relativize=True)
rrs = z.get_rrset('@', 'soa')
rds = txn.get('example.', 'soa')
self.assertEqual(rds[0].serial, 1)
+ def testNoRelativizeReaderAbsoluteGet(self):
+ z = dns.zone.from_text(example_text, 'example.', relativize=False,
+ zone_factory=dns.versioned.Zone)
+ with z.reader(serial=1) as txn:
+ rds = txn.get(dns.name.empty, 'soa')
+ self.assertEqual(rds[0].serial, 1)
+
def testCnameAndOtherDataAddOther(self):
z = dns.zone.from_text(example_cname, 'example.', relativize=True,
zone_factory=dns.versioned.Zone)