Class: VMC::App::Logs

Inherits:
Base show all
Defined in:
lib/vmc/cli/app/logs.rb

Constant Summary

Constants inherited from Mothership

Mothership::VERSION

Instance Attribute Summary

Attributes inherited from Mothership

#input

Instance Method Summary collapse

Methods inherited from Base

#app_status, #human_mb, #human_size, #megabytes, #memory_choices, #state_color

Methods inherited from V2CheckCLI

#fail_on_v2, #precondition

Methods inherited from CLI

#check_logged_in, #check_target, #client, client, client=, #client_target, #color_enabled?, #debug?, #default_action, #ensure_config_dir, #err, #execute, #fail, #fail_unknown, #force?, #invalidate_client, #log_error, #name_list, #no_v2, #normalize_targets_info, #one_of, #precondition, #quiet?, #remove_target_info, #sane_target_url, #save_target_info, #save_targets, #save_token_if_it_changes, #set_target, #table, #target_file, #target_info, #targets_info, #tokens_file, #user_colors, #v2?, #verbose?, #wrap_errors

Methods included from Spacing

#indented, #justify, #line, #lines, #quiet?, #spaced, #start_line, #tabular, #text_width, #trim_escapes

Methods included from Interactive

#ask, #handler, #input_state, #list_choices, #prompt, #show_default

Methods inherited from Mothership

add_input, after, alias_command, around, before, change_argument, commands, #default_action, desc, #execute, #exit_status, #filter, filter, global_option, group, #help, #initialize, input, #interact, interactions, #invoke, method_added, option, #run, start, #unknown_command, #with_filters

Constructor Details

This class inherits a constructor from Mothership

Instance Method Details

#crashlogsObject



39
40
41
42
43
44
45
46
47
48
# File 'lib/vmc/cli/app/logs.rb', line 39

def crashlogs
  app = input[:app]

  crashes = app.crashes

  fail "No crashed instances found." if crashes.empty?

  most_recent = crashes.sort_by(&:since).last
  show_instance_logs(app, most_recent)
end

#logsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vmc/cli/app/logs.rb', line 12

def logs
  app = input[:app]

  instances =
    if input[:all] || input[:instance] == "all"
      app.instances
    else
      app.instances.select { |i| i.id == input[:instance] }
    end

  if instances.empty?
    if input[:all]
      fail "No instances found."
    else
      fail "Instance #{app.name} \##{input[:instance]} not found."
    end
  end

  spaced(instances) do |i|
    show_instance_logs(app, i)
  end
end

#show_instance_logs(app, i) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/vmc/cli/app/logs.rb', line 50

def show_instance_logs(app, i)
  return unless i.id

  logs =
    with_progress(
        "Getting logs for #{c(app.name, :name)} " +
          c("\##{i.id}", :instance)) do
      i.files("logs")
    end

  line unless quiet?

  spaced(logs) do |log|
    begin
      body =
        with_progress("Reading " + b(log.join("/"))) do |s|
          i.file(*log)
        end

      lines body
      line unless body.empty?
    rescue CFoundry::NotFound
    end
  end
end