4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/chef/knife/partial_search/partial_search.rb', line 4
def define_partial_search(keys)
Chef::Search::Query.class_eval do
@@keys = keys
alias_method :old_search, :search unless method_defined? :old_search
def search(type, query="*:*", sort='X_CHEF_id_CHEF_X asc', start=0, rows=1000, &block)
q = Chef::PartialSearch.new
args = Hash.new
args[:keys] = @@keys
args[:sort] = sort
args[:start] = start
args[:rows] = rows
if block_given?
q.search(type, query, args) do |node_hash|
n = ::Knife::PartialSearch::FakeNode.new do |h,k|
h[k] = node_hash[k]
end
@@keys.each do |k,v| n[k] end
block.call(n)
end
else
res = q.search(type, query, args)
[res.first]
end
end
end
end
|