Add support for scoped queries

This work adds support for setting the scope of a given query.  This
allows retrieval of a specific objects, or searching at a specific level
of the tree for the desired results.
This commit is contained in:
Zach Leslie
2016-05-08 12:43:16 -07:00
parent d56300b2eb
commit 1a7a4894b1
2 changed files with 39 additions and 13 deletions

View File

@@ -1,3 +1,11 @@
# Provides a query interface to an LDAP server
#
# @example simple query
# ldapquery("(objectClass=dnsDomain)", ['dc'])
#
# @example more complex query for ssh public keys
# ldapquery('(&(objectClass=ldapPublicKey)(sshPublicKey=*)(objectClass=posixAccount))', ['uid', 'sshPublicKey'])
#
require_relative '../../../puppet_x/ldapquery'
begin
@@ -9,14 +17,15 @@ end
Puppet::Parser::Functions.newfunction(:ldapquery,
:type => :rvalue) do |args|
if args.size > 3
if args.size > 4
raise Puppet::ParseError, "Too many arguments received in ldapquery()"
end
filter, attributes, base = args
filter, attributes, base, scope = args
attributes ||= []
base ||= Puppet[:ldapbase]
scope ||= 'sub'
return PuppetX::LDAPquery.new(filter, attributes, base).results
return PuppetX::LDAPquery.new(filter, attributes, base, scope).results
end