class Crowbar::Client::Command::Upgrade::Prechecks

Implementation for the upgrade status command

Public Instance Methods

execute() click to toggle source
# File lib/crowbar/client/command/upgrade/prechecks.rb, line 34
def execute
  request.process do |request|
    case request.code
    when 200
      formatter = Formatter::Hash.new(
        format: provide_format,
        headings: ["Check ID", "Passed", "Required", "Errors", "Help"],
        values: Filter::Hash.new(
          filter: provide_filter,
          values: content_from(request)
        ).result
      )

      if formatter.empty?
        err "No checks"
      else
        say formatter.result
        next unless provide_format == :table
        say "Make sure that there are no errors for the required checks" \
          " before executing the next step."
        say "Next step: 'crowbarctl upgrade prepare'"
      end
    else
      err request.parsed_response["error"]
    end
  end
end
request() click to toggle source
# File lib/crowbar/client/command/upgrade/prechecks.rb, line 28
def request
  @request ||= Request::Upgrade::Prechecks.new(
    args
  )
end

Protected Instance Methods

content_from(request) click to toggle source
# File lib/crowbar/client/command/upgrade/prechecks.rb, line 64
def content_from(request)
  [].tap do |row|
    request.parsed_response["checks"].each do |check_id, values|
      # make the check_id server agnostic
      # the check_id could be named differently in the server response
      check_ids = values["errors"].keys if values["errors"].any?

      if check_ids
        check_ids.each do |id|
          row.push(parsed_checks(id, values))
        end
      else
        row.push(parsed_checks(check_id, values))
      end
    end
  end
end
parsed_checks(check_id, values) click to toggle source
# File lib/crowbar/client/command/upgrade/prechecks.rb, line 82
def parsed_checks(check_id, values)
  {
    check_id: check_id,
    passed: values["passed"],
    required: values["required"],
    errors: if values["errors"].key?(check_id)
              values["errors"][check_id]["data"].inspect
            end,
    help: if values["errors"].key?(check_id)
            values["errors"][check_id]["help"].inspect
          end
  }
end