summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/plugins')
-rw-r--r--ipalib/plugins/baseldap.py12
-rw-r--r--ipalib/plugins/host.py2
-rw-r--r--ipalib/plugins/hostgroup.py2
-rw-r--r--ipalib/plugins/permission.py2
-rw-r--r--ipalib/plugins/pwpolicy.py2
-rw-r--r--ipalib/plugins/service.py2
-rw-r--r--ipalib/plugins/user.py2
7 files changed, 23 insertions, 1 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 20f23c2e0..88f312998 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -1465,6 +1465,13 @@ class LDAPSearch(CallbackInterface, crud.Search):
def get_options(self):
for option in super(LDAPSearch, self).get_options():
yield option
+ if self.obj.primary_key and \
+ 'no_output' not in self.obj.primary_key.flags:
+ yield Flag('pkey_only?',
+ label=_('Primary key only'),
+ doc=_('Results should contain primary key attribute only ("%s")') \
+ % to_cli(self.obj.primary_key.cli_name),
+ )
for attr in self.member_attributes:
for ldap_obj_name in self.obj.attribute_members[attr]:
ldap_obj = self.api.Object[ldap_obj_name]
@@ -1539,7 +1546,10 @@ class LDAPSearch(CallbackInterface, crud.Search):
defattrs = self.obj.search_display_attributes
else:
defattrs = self.obj.default_attributes
- if options.get('all', False):
+
+ if options.get('pkey_only', False):
+ attrs_list = [self.obj.primary_key.name]
+ elif options.get('all', False):
attrs_list = ['*'] + defattrs
else:
attrs_list = list(
diff --git a/ipalib/plugins/host.py b/ipalib/plugins/host.py
index 52907eebe..0f3f91565 100644
--- a/ipalib/plugins/host.py
+++ b/ipalib/plugins/host.py
@@ -721,6 +721,8 @@ class host_find(LDAPSearch):
return (filter.replace('locality', 'l'), base_dn, scope)
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return
for entry in entries:
(dn, entry_attrs) = entry
set_certificate_attrs(entry_attrs)
diff --git a/ipalib/plugins/hostgroup.py b/ipalib/plugins/hostgroup.py
index 4e6dbbdae..28e3ef5dd 100644
--- a/ipalib/plugins/hostgroup.py
+++ b/ipalib/plugins/hostgroup.py
@@ -178,6 +178,8 @@ class hostgroup_find(LDAPSearch):
)
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return
for entry in entries:
(dn, entry_attrs) = entry
self.obj.suppress_netgroup_memberof(dn, entry_attrs)
diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py
index 24d57c46d..e51e3b859 100644
--- a/ipalib/plugins/permission.py
+++ b/ipalib/plugins/permission.py
@@ -352,6 +352,8 @@ class permission_find(LDAPSearch):
has_output_params = LDAPSearch.has_output_params + output_params
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return
for entry in entries:
(dn, attrs) = entry
try:
diff --git a/ipalib/plugins/pwpolicy.py b/ipalib/plugins/pwpolicy.py
index f261de562..6c5e6c56b 100644
--- a/ipalib/plugins/pwpolicy.py
+++ b/ipalib/plugins/pwpolicy.py
@@ -458,6 +458,8 @@ class pwpolicy_find(LDAPSearch):
__doc__ = _('Search for group password policies.')
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return False
for e in entries:
# attribute rights are not allowed for pwpolicy_find
self.obj.add_cospriority(e[1], e[1]['cn'][0], rights=False)
diff --git a/ipalib/plugins/service.py b/ipalib/plugins/service.py
index 87d25d6bb..048a6b4f0 100644
--- a/ipalib/plugins/service.py
+++ b/ipalib/plugins/service.py
@@ -373,6 +373,8 @@ class service_find(LDAPSearch):
)
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return
for entry in entries:
(dn, entry_attrs) = entry
self.obj.get_password_attributes(ldap, dn, entry_attrs)
diff --git a/ipalib/plugins/user.py b/ipalib/plugins/user.py
index 35866d6e9..273c68fb2 100644
--- a/ipalib/plugins/user.py
+++ b/ipalib/plugins/user.py
@@ -514,6 +514,8 @@ class user_find(LDAPSearch):
return (filter, base_dn, scope)
def post_callback(self, ldap, entries, truncated, *args, **options):
+ if options.get('pkey_only', False):
+ return
for entry in entries:
(dn, attrs) = entry
self.obj._convert_manager(attrs, **options)