class Crowbar::Client::Command::Node::List

Implementation for the node list command

Public Instance Methods

execute() click to toggle source
# File lib/crowbar/client/command/node/list.rb, line 34
def execute
  request.process do |request|
    case request.code
    when 200
      formatter = Formatter::Hash.new(
        format: provide_format,
        headings: headings,
        values: Filter::Hash.new(
          filter: provide_filter,
          values: content_from(request)
        ).result
      )

      if formatter.empty?
        err "No nodes"
      else
        say formatter.result
      end
    else
      err request.parsed_response["error"]
    end
  end
end
request() click to toggle source
# File lib/crowbar/client/command/node/list.rb, line 28
def request
  @request ||= Request::Node::List.new(
    args
  )
end

Protected Instance Methods

content_from(request) click to toggle source
# File lib/crowbar/client/command/node/list.rb, line 75
def content_from(request)
  result = [].tap do |row|
    request.parsed_response["nodes"].each do |child|
      if options["meta"]
        row.push(
          child.slice(
            "name",
            "alias",
            "group",
            "status"
          )
        )
      else
        row.push(
          child.slice(
            "name"
          )
        )
      end
    end
  end

  result.sort do |x, y|
    [
      x["name"],
      x["alias"]
    ] <=> [
      y["name"],
      y["alias"]
    ]
  end
end
headings() click to toggle source
# File lib/crowbar/client/command/node/list.rb, line 60
def headings
  if options["meta"]
    [
      "Name",
      "Alias",
      "Group",
      "Status"
    ]
  else
    [
      "Name"
    ]
  end
end