summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-02-02 13:40:26 +0100
committerMartin Kosek <mkosek@redhat.com>2012-02-03 16:31:09 +0100
commit1abed1e4e9a520be36dd1885190f6a3b4c1d96c3 (patch)
treebf9f903c4482c7756ac2531c410815d81d3b0660 /ipalib
parent13c3867c90d3454d4bb7c43393437deec909718e (diff)
downloadfreeipa.git-1abed1e4e9a520be36dd1885190f6a3b4c1d96c3.tar.gz
freeipa.git-1abed1e4e9a520be36dd1885190f6a3b4c1d96c3.tar.xz
freeipa.git-1abed1e4e9a520be36dd1885190f6a3b4c1d96c3.zip
Improve dnszone-add error message
When a new DNS record is being added to DNS zone via command ipa dnsrecord-add ZONE @ and the target ZONE does not exist it returns ObjectclassViolation which may confuse users. Make sure that standard DNS Zone NotFound exception is returned. https://fedorahosted.org/freeipa/ticket/2270
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/plugins/dns.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index 8a3bc5ed..fe32efcc 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -1495,6 +1495,13 @@ class dnsrecord(LDAPObject):
def get_dn(self, *keys, **options):
if self.is_pkey_zone_record(*keys):
+ dn = self.api.Object[self.parent_object].get_dn(*keys[:-1], **options)
+ # zone must exist
+ ldap = self.api.Backend.ldap2
+ try:
+ (dn_, zone) = ldap.get_entry(dn, [])
+ except errors.NotFound:
+ self.api.Object['dnszone'].handle_not_found(keys[-2])
return self.api.Object[self.parent_object].get_dn(*keys[:-1], **options)
return super(dnsrecord, self).get_dn(*keys, **options)