class KnifeTopo::TopoSearch
knife topo search
Public Instance Methods
combine(query, group_query, constraint)
click to toggle source
# File lib/chef/knife/topo_search.rb, line 84 def combine(query, group_query, constraint) find_in_topo = config[:topo] || config[:no_topo].nil? if find_in_topo query ? "#{constraint} AND #{group_query}" : constraint else query ? "#{group_query} NOT #{constraint}" : "NOT #{constraint}" end end
constrain_query(query, topo_name)
click to toggle source
# File lib/chef/knife/topo_search.rb, line 72 def constrain_query(query, topo_name) # group existing query workaround for strange behavior with # NOTs and invalid query if put brackets round them group_query = query && !query.start_with?('NOT') ? "(#{query})" : query # search specific topologies or all/none constraint = topo_name ? 'topo_name:' + topo_name : 'topo_name:*' # combine the grouped query and constraint combine(query, group_query, constraint) end
run()
click to toggle source
Calls superclass method
# File lib/chef/knife/topo_search.rb, line 48 def run setup_query super rescue StandardError => e raise if Chef::Config[:verbosity] == 2 ui.error "Topology search for \"#{@query}\" exited with error" humanize_exception(e) end
setup_query()
click to toggle source
# File lib/chef/knife/topo_search.rb, line 57 def setup_query query_str = @name_args[0] || config[:query] topo_query = constrain_query(query_str, config[:topo]) # force a node search @name_args[0] = 'node' # override any query if config[:query] config[:query] = topo_query else @name_args[1] = topo_query end end