summaryrefslogtreecommitdiffstats
path: root/ipaserver/plugins/location.py
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2016-05-13 18:39:47 +0200
committerMartin Basti <mbasti@redhat.com>2016-06-17 18:05:03 +0200
commitb2931210eb794e52eac4b0e295fcbdfc5bb07f87 (patch)
tree61bf94b9d1f13f923e45a7de7ee268b9ca25e004 /ipaserver/plugins/location.py
parent8dde1201ed9b0ca839ffe7421be7efd04b666e11 (diff)
downloadfreeipa-b2931210eb794e52eac4b0e295fcbdfc5bb07f87.tar.gz
freeipa-b2931210eb794e52eac4b0e295fcbdfc5bb07f87.tar.xz
freeipa-b2931210eb794e52eac4b0e295fcbdfc5bb07f87.zip
DNS Locations: prevent to remove used locations
User should be notified that location is used by IPA server(s) and deletion should be aborted. https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek <pspacek@redhat.com>
Diffstat (limited to 'ipaserver/plugins/location.py')
-rw-r--r--ipaserver/plugins/location.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/ipaserver/plugins/location.py b/ipaserver/plugins/location.py
index 073c1f957..6c6597006 100644
--- a/ipaserver/plugins/location.py
+++ b/ipaserver/plugins/location.py
@@ -16,6 +16,7 @@ from ipalib import (
output,
messages
)
+from ipalib.errors import DependentEntry
from ipalib.plugable import Registry
from ipaserver.plugins.baseldap import (
LDAPCreate,
@@ -140,11 +141,16 @@ class location_del(LDAPDelete):
def pre_callback(self, ldap, dn, *keys, **options):
assert isinstance(dn, DN)
- servers = self.api.Command.server_find(
- in_location=keys[-1])['result']
- for server in servers:
- self.api.Command.server_mod(server['cn'][0],
- ipalocation_location=None)
+ if not options.get('force'):
+ servers = self.api.Command.server_find(
+ in_location=keys[-1])['result']
+ location_member = servers[0]['cn'][0] if servers else None
+ if location_member:
+ raise DependentEntry(
+ label=_('IPA Server'),
+ key=keys[-1],
+ dependent=location_member
+ )
return dn