From fd2bd60383a739185a0a67fd0fb43338bab17e1d Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Fri, 13 May 2016 18:39:47 +0200 Subject: [PATCH] DNS Locations: when removing location remove it from servers first Locations should be removed from server by using server-mod during location-del (future patches will handle DNS records in server-mod) Referint plugin is configured to remove references of deleted locations. https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek Reviewed-By: Jan Cholasta --- install/updates/25-referint.update | 1 + ipaserver/plugins/location.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/install/updates/25-referint.update b/install/updates/25-referint.update index 3f78ee975..b887ede9c 100644 --- a/install/updates/25-referint.update +++ b/install/updates/25-referint.update @@ -19,3 +19,4 @@ add: referint-membership-attr: ipaassignedidview add: referint-membership-attr: ipaallowedtarget add: referint-membership-attr: ipamemberca add: referint-membership-attr: ipamembercertprofile +add: referint-membership-attr: ipalocation diff --git a/ipaserver/plugins/location.py b/ipaserver/plugins/location.py index 1edda8e25..32306648c 100644 --- a/ipaserver/plugins/location.py +++ b/ipaserver/plugins/location.py @@ -137,6 +137,14 @@ class location_del(LDAPDelete): msg_summary = _('Deleted IPA location "%(value)s"') + 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], location=None) + return dn + @register() class location_mod(LDAPUpdate):