- def add_reverse_zone(self, net: str | IPNetwork, name: Optional[str] = None, **kwargs) -> Zone:
- if not (isinstance(net, IPv4Network) or isinstance(net, IPv6Network)):
- net = ip_network(net, strict=True)
- name = name or self._reverse_zone_name(net)
- return self.add_zone(name, reverse_for=net, **kwargs)
+ if reverse_for is not None:
+ if isinstance(reverse_for, str):
+ reverse_for = ip_network(reverse_for, strict=True)
+ name = name or self._reverse_zone_name(reverse_for)
+ assert name is not None
+ assert name not in self.zones
+
+ z: NscZone
+ if follow_primary is None:
+ z = NscZonePrimary(self, name, reverse_for=reverse_for, inherit_config=inherit_config, **kwargs)
+ else:
+ if isinstance(follow_primary, str):
+ follow_primary = ip_address(follow_primary)
+ z = NscZoneSecondary(self, name, reverse_for=reverse_for, primary_server=follow_primary, inherit_config=inherit_config, **kwargs)
+
+ self.zones[name] = z
+ return z