summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2014-06-30 11:58:46 +0200
committerPetr Viktorin <pviktori@redhat.com>2014-07-03 10:32:08 +0200
commit33cf958b98dc2d80d17b3de1c145d403df4a3ba3 (patch)
tree4b57f36e73cdef8e1da1d10f914cbb9247b0963a
parent3b310d6b4f8063149d1abe823b64bc9796a97ab2 (diff)
downloadfreeipa-33cf958b98dc2d80d17b3de1c145d403df4a3ba3.tar.gz
freeipa-33cf958b98dc2d80d17b3de1c145d403df4a3ba3.tar.xz
freeipa-33cf958b98dc2d80d17b3de1c145d403df4a3ba3.zip
Add warning about semantic change for zones
--forwarder have different semantic since forward zones support. Add warning if zone contains forwarders. Ticket: https://fedorahosted.org/freeipa/ticket/3210#comment:16 Reviewed-By: Petr Spacek <pspacek@redhat.com>
-rw-r--r--ipalib/messages.py12
-rw-r--r--ipalib/plugins/dns.py23
2 files changed, 35 insertions, 0 deletions
diff --git a/ipalib/messages.py b/ipalib/messages.py
index e5b76a526..3087cf7c9 100644
--- a/ipalib/messages.py
+++ b/ipalib/messages.py
@@ -135,6 +135,18 @@ class VersionMissing(PublicMessage):
"guaranteed. Assuming server's API version, %(server_version)s")
+class ForwardersWarning(PublicMessage):
+ """
+ **13002** Used when (master) zone contains forwarders
+ """
+
+ errno = 13002
+ type = 'warning'
+ format = _(
+ u"DNS forwarder semantics changed since IPA 4.0.\n"
+ u"You may want to use forward zones (dnsforwardzone-*) instead.\n"
+ u"For more details read the docs.")
+
def iter_messages(variables, base):
"""Return a tuple with all subclasses
"""
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index 29a1d7c86..a2f618c7f 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -32,11 +32,13 @@ import encodings.idna
from ipalib.request import context
from ipalib import api, errors, output
from ipalib import Command
+from ipalib.capabilities import VERSION_WITHOUT_CAPABILITIES
from ipalib.parameters import (Flag, Bool, Int, Decimal, Str, StrEnum, Any,
DeprecatedParam, DNSNameParam)
from ipalib.plugable import Registry
from ipalib.plugins.baseldap import *
from ipalib import _, ngettext
+from ipalib import messages
from ipalib.util import (validate_zonemgr, normalize_zonemgr,
get_dns_forward_zone_update_policy,
get_dns_reverse_zone_update_policy,
@@ -268,6 +270,7 @@ _output_permissions = (
output.Output('value', unicode, _('Permission value')),
)
+
def _rname_validator(ugettext, zonemgr):
try:
validate_zonemgr(zonemgr)
@@ -2221,6 +2224,11 @@ class dnszone(DNSZoneBase):
return
_records_idn_postprocess(record, **options)
+ def _warning_forwarding(self, result, **options):
+ if ('idnsforwarders' in result['result']):
+ messages.add_message(options.get('version', VERSION_WITHOUT_CAPABILITIES),
+ result, messages.ForwardersWarning())
+
@register()
@@ -2309,6 +2317,11 @@ class dnszone_add(DNSZoneBase_add):
entry_attrs['idnssoamname'] = nameserver
return dn
+ def execute(self, *keys, **options):
+ result = super(dnszone_add, self).execute(*keys, **options)
+ self.obj._warning_forwarding(result, **options)
+ return result
+
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
assert isinstance(dn, DN)
nameserver_ip_address = options.get('ip_address')
@@ -2386,6 +2399,11 @@ class dnszone_mod(DNSZoneBase_mod):
return dn
+ def execute(self, *keys, **options):
+ result = super(dnszone_mod, self).execute(*keys, **options)
+ self.obj._warning_forwarding(result, **options)
+ return result
+
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
assert isinstance(dn, DN)
self.obj._rr_zone_postprocess(entry_attrs, **options)
@@ -2434,6 +2452,11 @@ class dnszone_find(DNSZoneBase_find):
class dnszone_show(DNSZoneBase_show):
__doc__ = _('Display information about a DNS zone (SOA record).')
+ def execute(self, *keys, **options):
+ result = super(dnszone_show, self).execute(*keys, **options)
+ self.obj._warning_forwarding(result, **options)
+ return result
+
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
assert isinstance(dn, DN)
self.obj._rr_zone_postprocess(entry_attrs, **options)