diff options
author | Martin Basti <mbasti@redhat.com> | 2016-05-13 18:39:47 +0200 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2016-06-17 18:05:03 +0200 |
commit | b2931210eb794e52eac4b0e295fcbdfc5bb07f87 (patch) | |
tree | 61bf94b9d1f13f923e45a7de7ee268b9ca25e004 /ipaserver/plugins | |
parent | 8dde1201ed9b0ca839ffe7421be7efd04b666e11 (diff) | |
download | freeipa-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')
-rw-r--r-- | ipaserver/plugins/location.py | 16 |
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 |