From b2931210eb794e52eac4b0e295fcbdfc5bb07f87 Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Jun 17 2016 16:05:03 +0000 Subject: 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 --- diff --git a/ipaserver/plugins/location.py b/ipaserver/plugins/location.py index 073c1f9..6c65970 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