From a85bb7fa9e5a03b391d684e2850bfe4663f94e21 Mon Sep 17 00:00:00 2001 From: Martin Kosek Date: Oct 06 2011 09:29:56 +0000 Subject: Prevent collisions of hostgroup and netgroup For every hostgroup a managed netgroup is created (if this is allowed). Make sure that if a stand-alone netgroup exists, a hostgroup with the same name cannot be created to prevent collisions. https://fedorahosted.org/freeipa/ticket/1914 --- diff --git a/ipalib/plugins/hostgroup.py b/ipalib/plugins/hostgroup.py index 0d69d09..0560bd7 100644 --- a/ipalib/plugins/hostgroup.py +++ b/ipalib/plugins/hostgroup.py @@ -115,6 +115,17 @@ class hostgroup_add(LDAPCreate): msg_summary = _('Added hostgroup "%(value)s"') + def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): + try: + netgroup = api.Command['netgroup_show'](keys[-1]) + raise errors.DuplicateEntry(message=unicode(_(\ + u'netgroup with name "%s" already exists' % keys[-1]\ + ))) + except errors.NotFound: + pass + + return dn + def post_callback(self, ldap, dn, entry_attrs, *keys, **options): # Always wait for the associated netgroup to be created so we can # be sure to ignore it in memberOf