summaryrefslogtreecommitdiff
path: root/dns/node.py
diff options
context:
space:
mode:
Diffstat (limited to 'dns/node.py')
-rw-r--r--dns/node.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/dns/node.py b/dns/node.py
index b7e21b5..8e1451f 100644
--- a/dns/node.py
+++ b/dns/node.py
@@ -183,3 +183,33 @@ class Node:
self.delete_rdataset(replacement.rdclass, replacement.rdtype,
replacement.covers)
self.rdatasets.append(replacement)
+
+
+@dns.immutable.immutable
+class ImmutableNode(Node):
+
+ """An ImmutableNode is an immutable set of rdatasets."""
+
+ def __init__(self, node):
+ super().__init__()
+ self.rdatasets = tuple(
+ [dns.rdataset.ImmutableRdataset(rds) for rds in node.rdatasets]
+ )
+
+ def find_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE,
+ create=False):
+ if create:
+ raise TypeError("immutable")
+ return super().find_rdataset(rdclass, rdtype, covers, False)
+
+ def get_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE,
+ create=False):
+ if create:
+ raise TypeError("immutable")
+ return super().get_rdataset(rdclass, rdtype, covers, False)
+
+ def delete_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE):
+ raise TypeError("immutable")
+
+ def replace_rdataset(self, replacement):
+ raise TypeError("immutable")