diff options
Diffstat (limited to 'ipalib/plugins/netgroup.py')
-rw-r--r-- | ipalib/plugins/netgroup.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/ipalib/plugins/netgroup.py b/ipalib/plugins/netgroup.py index 8901ac92c..d8c3c4707 100644 --- a/ipalib/plugins/netgroup.py +++ b/ipalib/plugins/netgroup.py @@ -145,6 +145,26 @@ class netgroup_add(LDAPCreate): msg_summary = _('Added netgroup "%(value)s"') def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): entry_attrs.setdefault('nisdomainname', self.api.env.domain) + + try: + # check duplicity with netgroups first to provide proper error + netgroup = api.Command['netgroup_show'](keys[-1]) + self.obj.handle_duplicate_entry(*keys) + except errors.NotFound: + pass + + try: + # when enabled, a managed netgroup is created for every hostgroup + # make sure that we don't create a collision if the plugin is + # (temporarily) disabled + netgroup = api.Command['hostgroup_show'](keys[-1]) + raise errors.DuplicateEntry(message=unicode(_(\ + u'hostgroup with name "%s" already exists. ' \ + u'Hostgroups and netgroups share a common namespace'\ + ) % keys[-1])) + except errors.NotFound: + pass + return dn api.register(netgroup_add) |