Class: Wakame::Cli::Subcommand::Status

Inherits:
Object
  • Object
show all
Includes:
Wakame::Cli::Subcommand
Defined in:
lib/wakame/runner/administrator_command.rb

Constant Summary collapse

STATUS_TMPL =
"<%- if cluster -%>\nCluster : <%= cluster[\"name\"].to_s %> (<%= cluster_status_msg(cluster[\"status\"]) %>)\n<%- cluster[\"resources\"].keys.each { |res_id|\n  resource = body[\"resources\"][res_id]\n-%>\n  <%= resource[\"class_type\"] %> : <current=<%= resource[\"instance_count\"] %> min=<%= resource[\"min_instances\"] %>, max=<%= resource[\"max_instances\"] %><%= resource[\"require_agent\"] ? \"\" : \", AgentLess\" %>>\n  <%- resource[\"services_ref\"].each { |svc| -%>\n     <%= svc[\"id\"] %> (<%= svc_status_msg(svc[\"status\"]) %>:<%= monitor_status_msg(svc[\"monitor_status\"]) %>)\n  <%- } -%>\n<%- } -%>\n<%- if cluster[\"services\"].size > 0  -%>\n\nInstances (<%= cluster[\"services\"].size %>):\n  <%- cluster[\"services\"].keys.each { |svc_id| \n    svc = body[\"services\"][svc_id]\n  -%>\n  <%= svc_id %> : <%= svc[\"resource_ref\"][\"class_type\"] %> (<%= svc_status_msg(svc[\"status\"]) %>:<%= monitor_status_msg(svc[\"monitor_status\"]) %>)\n    <%- if svc[\"agent_ref\"] -%>\n    On VM: <%= svc[\"agent_ref\"][\"id\"] %>\n    <%- end -%>\n  <%- } -%>\n<%- end -%>\n<%- if cluster[\"cloud_hosts\"].size > 0 -%>\n\nCloud Host (<%= cluster[\"cloud_hosts\"].size %>):\n  <%- cluster[\"cloud_hosts\"].keys.each { |host_id| \n    cloud_host = body[\"cloud_hosts\"][host_id]\n  -%>\n  <%= host_id %> : <% if cloud_host[\"agent_id\"] %>bind to <%= cloud_host[\"agent_id\"] %><% end %>\n    <%- assigned_svcs = body['services'].values.find_all{|data| data['cloud_host_id'] == host_id } -%>\n    <%- if assigned_svcs.size > 0 -%>\n    Assigned: <%= body['services'].values.find_all{|data| data['cloud_host_id'] == host_id }.map{|data| data['resource_ref']['class_type'] }.join(', ')  %>\n    <%- end -%>\n  <%- } -%>\n<%- end -%>\n<%- else # if cluster -%>\nCluster: \n  No cluster data is loaded in master. (Run import_cluster_config first)\n<%- end # if cluster -%>\n\n<%- if agent_pool && agent_pool[\"group_active\"].size > 0 -%>\n\nAgents (<%= agent_pool[\"group_active\"].size %>):\n  <%- agent_pool[\"group_active\"].each { |agent_id|\n  a = body[\"agents\"][agent_id]\n  -%>\n  <%= a[\"id\"] %> : <%= (Time.now - Time.parse(a[\"last_ping_at\"])).to_i %> sec(s) (<%= agent_status_msg(a[\"status\"]) %>)\n   <%- if a[\"reported_services\"].size > 0 && !cluster[\"services\"].empty? -%>\n    Services (<%= a[\"reported_services\"].size %>): <%= a[\"reported_services\"].keys.collect{ |svc_id|\n                body['services'][svc_id].nil? ? 'Unknown:' + svc_id[0,5] + '...' :  body[\"services\"][svc_id][\"resource_ref\"][\"class_type\"]\n              }.join(', ') %>\n   <%- end -%>\n  <%- } -%>\n<%- else -%>\n\nAgents (0):\n.....\n  None of agents are observed.\n<%- end -%>\n"
SVC_STATUS_MSG =
{
  Wakame::Service::STATUS_TERMINATE=>'Terminated',
  Wakame::Service::STATUS_INIT=>'Initialized',
  Wakame::Service::STATUS_OFFLINE=>'Offline',
  Wakame::Service::STATUS_ONLINE=>'Online',
  Wakame::Service::STATUS_UNKNOWN=>'Unknown',
  Wakame::Service::STATUS_FAIL=>'Fail',
  Wakame::Service::STATUS_STARTING=>'Starting...',
  Wakame::Service::STATUS_STOPPING=>'Stopping...',
  Wakame::Service::STATUS_RELOADING=>'Reloading...',
  Wakame::Service::STATUS_MIGRATING=>'Migrating...',
  Wakame::Service::STATUS_ENTERING=>'Entering...',
  Wakame::Service::STATUS_QUITTING=>'Quitting...',
  Wakame::Service::STATUS_RUNNING=>'Running'
}
SVC_MONITOR_STATUS_MSG =
{
  Wakame::Service::STATUS_OFFLINE=>'Offline',
  Wakame::Service::STATUS_ONLINE=>'Online',
  Wakame::Service::STATUS_UNKNOWN=>'Unknown',
  Wakame::Service::STATUS_FAIL=>'Fail'
}
AGENT_STATUS_MSG =
{
  Wakame::Service::Agent::STATUS_END     => 'Terminated',
  Wakame::Service::Agent::STATUS_INIT    => 'Initialized',
  Wakame::Service::Agent::STATUS_OFFLINE => 'Offline',
  Wakame::Service::Agent::STATUS_ONLINE  => 'Online',
  Wakame::Service::Agent::STATUS_UNKNOWN => 'Unknown',
  Wakame::Service::Agent::STATUS_TIMEOUT => 'Timedout',
  Wakame::Service::Agent::STATUS_RUNNING => 'Running',
  Wakame::Service::Agent::STATUS_REGISTERRING => 'Registerring...',
  Wakame::Service::Agent::STATUS_TERMINATING  => 'Terminating...'
}
CLUSTER_STATUS_MSG =
{
  Wakame::Service::ServiceCluster::STATUS_OFFLINE=>'Offline',
  Wakame::Service::ServiceCluster::STATUS_ONLINE=>'Online',
  Wakame::Service::ServiceCluster::STATUS_PARTIAL_ONLINE=>'Partial Online'
}

Instance Method Summary collapse

Methods included from Wakame::Cli::Subcommand

#create_parser, included

Instance Method Details

#parse(args) ⇒ Object



448
449
450
451
452
453
454
455
# File 'lib/wakame/runner/administrator_command.rb', line 448

def parse(args)
  @params = {}
  create_parser(args){|opts|
    opts.banner = "Usage: status"
    #opts.separator ""
    #opts.separator "options:"
  }
end


461
462
463
464
465
466
467
468
469
# File 'lib/wakame/runner/administrator_command.rb', line 461

def print_result()
  require 'time'
  body = @res[1]["data"]
  map_ref_data(body)

  cluster = body["cluster"]
  agent_pool = body["agent_pool"]
  puts ERB.new(STATUS_TMPL, nil, '-').result(binding)
end

#run(requester) ⇒ Object



457
458
459
# File 'lib/wakame/runner/administrator_command.rb', line 457

def run(requester)
  @res = requester.request(@params)
end