# class Chef::Knife::Status

### Public Instance Methods

highline() click to toggle source

    # File lib/chef/knife/status.rb, line 47
    def highline
      @h ||= HighLine.new
    end

run() click to toggle source

    # File lib/chef/knife/status.rb, line 51
    def run
      all_nodes = []
      q = Chef::Search::Query.new
      query = @name_args[0] || "*:*"
      q.search(:node, query) do |node|
        all_nodes << node
      end
      all_nodes.sort { |n1, n2|
        if (config[:sort_reverse] || Chef::Config[:knife][:sort_status_reverse])
          (n2["ohai_time"] or 0) <=> (n1["ohai_time"] or 0)
        else
          (n1["ohai_time"] or 0) <=> (n2["ohai_time"] or 0)
        end
      }.each do |node|
        if node.has_key?("ec2")
          fqdn = node['ec2']['public_hostname']
          ipaddress = node['ec2']['public_ipv4']
        else
          fqdn = node['fqdn']
          ipaddress = node['ipaddress']
        end
        hours, minutes, seconds = time_difference_in_hms(node["ohai_time"])
        hours_text   = "#{hours} hour#{hours == 1 ? ' ' : 's'}"
        minutes_text = "#{minutes} minute#{minutes == 1 ? ' ' : 's'}"
        run_list = "#{node.run_list}" if config[:run_list]
        if hours > 24
          color = :red
          text = hours_text
        elsif hours >= 1
          color = :yellow
          text = hours_text
        else
          color = :green
          text = minutes_text
        end

        line_parts = Array.new
        line_parts << @ui.color(text, color) + " ago" << node.name
        line_parts << fqdn if fqdn
        line_parts << ipaddress if ipaddress
        line_parts << run_list if run_list

        if node['platform']
          platform = node['platform']
          if node['platform_version']
            platform << " #{node['platform_version']}"
          end
          line_parts << platform
        end
        highline.say(line_parts.join(', ') + '.') unless (config[:hide_healthy] && hours < 1)
      end

    end