Module: DopCommon::NodeFilter

Defined in:
lib/dop_common/node_filter.rb

Instance Method Summary collapse

Instance Method Details

#filter_nodes(nodes, filters) ⇒ Object

filter a list of nodes



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/dop_common/node_filter.rb', line 8

def filter_nodes(nodes, filters)
  return nodes if filters == :all
  include_list = []
  exclude_list = []

  [:nodes, :roles, :nodes_by_config].each do |filter_type|
    pattern_variable_pairs(filters, filter_type) do |pattern, variable|
      include_list += create_node_list(nodes, filter_type, pattern, variable)
    end
  end

  [:exclude_nodes, :exclude_roles, :exclude_nodes_by_config].each do |filter_type|
    pattern_variable_pairs(filters, filter_type) do |pattern, variable|
      exclude_list += create_node_list(nodes, filter_type, pattern, variable)
    end
  end

  (include_list - exclude_list).uniq
end