Sha256: 69860de5be61d9278c1a0a809c73b892ea44ff208869c1df9bd3ecabee9b64dd
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
# # Copyright 2016, Noah Kantrowitz # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # require 'chef/knife' module KnifeCount # This has to be a sub-module because the name is used by knife to compute the # command name. class Count < Chef::Knife banner 'knife count [TYPE] QUERY' deps do require 'addressable/uri' end def run parse_cli_args fuzzify_query run_search end private def parse_cli_args case name_args.length when 0 @type = 'node' @query = '*:*' when 1 @type = 'node' @query = name_args.first else @type = name_args[0] @query = name_args[1..-1].join(' ') end end # From chef/knife/search.rb. # Copyright 2009-2016, Chef Software Inc. # Used under the terms of the Apache 2.0 License. def fuzzify_query if @query !~ /:/ @query = "tags:*#{@query}* OR roles:*#{@query}* OR fqdn:*#{@query}* OR addresses:*#{@query}* OR policy_name:*#{@query}* OR policy_group:*#{@query}*" end end def run_search escaped_query = Addressable::URI.encode_component(@query, Addressable::URI::CharacterClasses::QUERY) response = rest.post("/search/#{@type}?q=#{escaped_query}&rows=1", {}) ui.msg(response['total']) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
knife-count-1.0.0 | lib/chef/knife/count.rb |