class Flare::Tools::Cli::Remove

Public Class Methods

new() click to toggle source
Calls superclass method Flare::Tools::Cli::SubCommand::new
# File lib/flare/tools/cli/remove.rb, line 35
def initialize
  super
  @retry = 0
end

Public Instance Methods

execute(config, args) click to toggle source
# File lib/flare/tools/cli/remove.rb, line 40
def execute(config, args)
  parse_index_server(config, args)
  nodes = parse_host_port_pairs(args)
  unless nodes
    return S_NG
  end

  Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s|
    cluster = fetch_cluster(s)

    nodes.each do |node|
      node_stat = cluster.node_stat(node.nodekey)

      unless node_stat
        error "node not found in cluster. (node=#{node})"
        next
      end

      # check status downed & proxy
      unless node_can_remove_safely?(node_stat)
        error "node should role=proxy and state=down. (node=#{node} role=#{node_stat.role} state=#{node_stat.state})"
        return S_NG
      end

      # ask really remove or not
      unless @force || ask_node_remove(node, node_stat)
        return S_NG
      end

      succeeded = node_remove(s, node, @retry, @dry_run)
      unless succeeded
        error "node remove failed. (node=#{node})"
        return S_NG
      end
    end

    # puts node list after nodes removed
    puts ""
    puts string_of_nodelist(s.stats_nodes)

    return S_OK
  end
end
setup() click to toggle source
Calls superclass method Flare::Tools::Cli::SubCommand#setup
# File lib/flare/tools/cli/remove.rb, line 27
def setup
  super
  set_option_index_server
  set_option_dry_run
  set_option_force
  @optp.on('--retry=COUNT', "retry count(default:#{@retry})") {|v| @retry = v.to_i }
end