class Flare::Tools::Cli::Activate
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/flare/tools/cli/activate.rb, line 37 def initialize super @force = false end
Public Instance Methods
execute(config, args)
click to toggle source
# File lib/flare/tools/cli/activate.rb, line 42 def execute(config, args) parse_index_server(config, args) return S_NG if args.size < 1 hosts = args.map {|x| x.split(':')} hosts.each do |x| if x.size != 2 puts "invalid argument '#{x.join(':')}'." return S_NG end end Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s| cluster = Flare::Tools::Cluster.new(s.host, s.port, s.stats_nodes) nodes = s.stats_nodes.sort_by{|key, val| [val['partition'], val['role'], key]} hosts.each do |hostname,port| nodekey = nodekey_of hostname, port ipaddr = address_of_hostname(hostname) unless cluster.has_nodekey? nodekey error "invalid 'hostname:port' pair: #{nodekey}" return S_NG end node = cluster.node_stat(nodekey) exec = @force if exec elsif node['state'] == 'active' warn "#{ipaddr}:#{port} is already active." else STDERR.print "turning node up (node=#{ipaddr}:#{port}, state=#{node['state']} -> activate) (y/n): " exec = interruptible { (gets.chomp.upcase == "Y") } end if exec && !@dry_run if @force begin s.set_state(hostname, port, 'active') rescue Timeout::Error => e error "failed to activate #{nodekey} (timeout)" raise e end else resp = false until resp resp = s.set_state(hostname, port, 'active') unless resp STDERR.print "turning node up (node=#{ipaddr}:#{port}, state=#{node['state']} -> activate) (y/n): " exec = interruptible { (gets.chomp.upcase == "Y") } end end end end end STDOUT.puts string_of_nodelist(s.stats_nodes, hosts.map {|x| "#{x[0]}:#{x[1]}"}) end S_OK end
setup()
click to toggle source
Calls superclass method
# File lib/flare/tools/cli/activate.rb, line 30 def setup super set_option_index_server set_option_dry_run set_option_force end