greenhat 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/greenhat +1 -4
- data/lib/greenhat/accessors/disk.rb +42 -3
- data/lib/greenhat/accessors/gitlab.rb +30 -1
- data/lib/greenhat/accessors/memory.rb +1 -1
- data/lib/greenhat/archive.rb +19 -8
- data/lib/greenhat/cli.rb +24 -126
- data/lib/greenhat/entrypoint.rb +170 -0
- data/lib/greenhat/host.rb +25 -37
- data/lib/greenhat/settings.rb +6 -0
- data/lib/greenhat/shell/args.rb +22 -9
- data/lib/greenhat/shell/faststats.rb +23 -3
- data/lib/greenhat/shell/field_helper.rb +1 -1
- data/lib/greenhat/shell/filter_help.rb +232 -9
- data/lib/greenhat/shell/log.rb +153 -9
- data/lib/greenhat/shell/markdown.rb +352 -0
- data/lib/greenhat/shell/old_search_helper.rb +54 -0
- data/lib/greenhat/shell/page.rb +1 -1
- data/lib/greenhat/shell/pipe.rb +31 -0
- data/lib/greenhat/shell/platform.rb +28 -0
- data/lib/greenhat/shell/report.rb +106 -25
- data/lib/greenhat/shell/shell_helper.rb +115 -106
- data/lib/greenhat/shell.rb +10 -3
- data/lib/greenhat/thing/file_types.rb +136 -8
- data/lib/greenhat/thing/formatters/json.rb +4 -0
- data/lib/greenhat/thing/formatters/kube_json.rb +36 -0
- data/lib/greenhat/thing/formatters/kube_nginx.rb +48 -0
- data/lib/greenhat/thing/formatters/kube_webservice.rb +51 -0
- data/lib/greenhat/thing/formatters/nginx.rb +6 -2
- data/lib/greenhat/thing/formatters/registry.rb +47 -0
- data/lib/greenhat/thing/formatters/time_space.rb +0 -16
- data/lib/greenhat/thing/helpers.rb +12 -0
- data/lib/greenhat/thing/kind.rb +5 -0
- data/lib/greenhat/thing.rb +11 -0
- data/lib/greenhat/version.rb +1 -1
- data/lib/greenhat/views/api.slim +55 -0
- data/lib/greenhat/views/chart.slim +42 -0
- data/lib/greenhat/views/chart_template.slim +31 -0
- data/lib/greenhat/views/chartkick.js +21 -0
- data/lib/greenhat/views/css.slim +47 -0
- data/lib/greenhat/views/gitaly.slim +53 -0
- data/lib/greenhat/views/headers.slim +16 -0
- data/lib/greenhat/views/index-old.slim +51 -0
- data/lib/greenhat/views/index.slim +14 -14
- data/lib/greenhat/views/info.slim +17 -18
- data/lib/greenhat/views/production.slim +55 -0
- data/lib/greenhat/views/sidekiq.slim +55 -0
- data/lib/greenhat/views/time.slim +63 -0
- data/lib/greenhat/views/workhorse.slim +16 -0
- data/lib/greenhat/web/api.rb +94 -0
- data/lib/greenhat/web/chartkick_shim.rb +14 -0
- data/lib/greenhat/web/faststats.rb +44 -0
- data/lib/greenhat/web/gitaly.rb +65 -0
- data/lib/greenhat/web/helpers.rb +198 -0
- data/lib/greenhat/web/production.rb +104 -0
- data/lib/greenhat/web/sidekiq.rb +73 -0
- data/lib/greenhat/web/stats_helpers.rb +74 -0
- data/lib/greenhat/web/time.rb +36 -0
- data/lib/greenhat/web/workhorse.rb +43 -0
- data/lib/greenhat/web.rb +63 -19
- data/lib/greenhat.rb +2 -0
- metadata +78 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4205de8b256423c08291a212511d4d6ecd613d21f232d0d6b4641881779f1303
|
4
|
+
data.tar.gz: 695ce3fb852d8a3167b853b3b8c07448f031305e51072f34e7afb3aed75ca50e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d4653882946a783ddc0e11094205e42b33338afe53334cc9774956047a1b00eb54bca964925efbed47ca4c410e5007d6e5ac79f10376274b50beb1ffaedc8f0
|
7
|
+
data.tar.gz: c2002b0458b334799e4b04a446a9ca0193091f264e7077b9eac84c310423e6c0547d79094da45fa5fa9ce475d110756952602d3274b34f97b4162e7ee4226871
|
data/bin/greenhat
CHANGED
@@ -30,7 +30,6 @@ module GreenHat
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Unified Output Handler
|
33
|
-
# rubocop:disable Metrics/MethodLength
|
34
33
|
def self.format_output(file, name = false, limit = nil, filter = %w[tmpfs loop])
|
35
34
|
output = []
|
36
35
|
|
@@ -62,7 +61,7 @@ module GreenHat
|
|
62
61
|
disk.use.rjust(5).ljust(5).pastel(:green),
|
63
62
|
' ['.pastel(:blue),
|
64
63
|
('=' * (disk.use.to_i / 2)).pastel(:green),
|
65
|
-
' ' * (50 - disk.use.to_i / 2),
|
64
|
+
' ' * (50 - (disk.use.to_i / 2)),
|
66
65
|
']'.pastel(:blue)
|
67
66
|
].join
|
68
67
|
|
@@ -78,6 +77,46 @@ module GreenHat
|
|
78
77
|
|
79
78
|
output
|
80
79
|
end
|
81
|
-
|
80
|
+
|
81
|
+
# Unified Output Handler
|
82
|
+
def self.markdown_format(file, name = false, limit = nil, filter = %w[tmpfs loop])
|
83
|
+
output = []
|
84
|
+
|
85
|
+
output << file.friendly_name if name
|
86
|
+
|
87
|
+
# Reject TMPFS
|
88
|
+
disks = file.data.sort_by { |x| x.use.to_i }.reverse
|
89
|
+
|
90
|
+
# Filter
|
91
|
+
disks.reject! { |x| filter.any? { |y| x.filesystem.include? y } }
|
92
|
+
|
93
|
+
disks = disks[0..limit - 1] if limit
|
94
|
+
|
95
|
+
pad_mount, pad_size, pad_used, pad_avail = GreenHat::Disk.padding(disks)
|
96
|
+
|
97
|
+
# Headers
|
98
|
+
output << [
|
99
|
+
'Mount'.ljust(pad_mount),
|
100
|
+
'Size'.ljust(pad_size),
|
101
|
+
'Used'.ljust(pad_used),
|
102
|
+
'Avail'.ljust(pad_avail),
|
103
|
+
'% Use'.ljust(pad_avail)
|
104
|
+
].join
|
105
|
+
|
106
|
+
# Table Summary
|
107
|
+
disks.map do |disk|
|
108
|
+
# Whole Thing
|
109
|
+
output << [
|
110
|
+
disk.mounted_on.ljust(pad_mount),
|
111
|
+
disk[:size].to_s.ljust(pad_size),
|
112
|
+
disk.used.to_s.ljust(pad_used),
|
113
|
+
disk.avail.to_s.ljust(pad_avail),
|
114
|
+
disk.use.rjust(5).ljust(5)
|
115
|
+
].join
|
116
|
+
end
|
117
|
+
|
118
|
+
output
|
119
|
+
end
|
120
|
+
# =
|
82
121
|
end
|
83
122
|
end
|
@@ -35,6 +35,7 @@ module GreenHat
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Show GitLab Services in a grid / include versions
|
38
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
38
39
|
def self.services(archive, indent = 0)
|
39
40
|
manifest = archive.things.find { |x| x.type == 'gitlab/version-manifest.json' }
|
40
41
|
gitlab_status = archive.things.find { |x| x.name == 'gitlab_status' }
|
@@ -43,6 +44,7 @@ module GreenHat
|
|
43
44
|
|
44
45
|
list = gitlab_status.data.keys.sort.map do |service|
|
45
46
|
color = gitlab_status.data.dig(service, 0, :status) == 'run' ? :green : :red
|
47
|
+
status = gitlab_status.data.dig(service, 0, :status) == 'run' ? '↑' : '↓'
|
46
48
|
|
47
49
|
# Collect Service version from manifest
|
48
50
|
version = manifest.data.software[service.to_sym]&.display_version
|
@@ -50,7 +52,7 @@ module GreenHat
|
|
50
52
|
# If able to identify version use / fallback
|
51
53
|
if version
|
52
54
|
[
|
53
|
-
service.pastel(color),
|
55
|
+
"#{service}#{status}".pastel(color),
|
54
56
|
"(#{version})".pastel(:bright_black)
|
55
57
|
].join(' ')
|
56
58
|
else
|
@@ -71,5 +73,32 @@ module GreenHat
|
|
71
73
|
|
72
74
|
table.render(:unicode, padding: [0, 1, 0, 1], indent: indent)
|
73
75
|
end
|
76
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
77
|
+
|
78
|
+
def self.services_markdown(archive)
|
79
|
+
# manifest = archive.things.find { |x| x.type == 'gitlab/version-manifest.json' }
|
80
|
+
gitlab_status = archive.things.find { |x| x.name == 'gitlab_status' }
|
81
|
+
|
82
|
+
list = gitlab_status.data.keys.sort.map do |service|
|
83
|
+
status = gitlab_status.data.dig(service, 0, :status) == 'run' ? '↑' : '↓'
|
84
|
+
|
85
|
+
"#{service}#{status}"
|
86
|
+
end
|
87
|
+
|
88
|
+
# Keep Alphabetical Sort
|
89
|
+
groups = list.each_slice((list.size / 3.to_f).round).to_a
|
90
|
+
|
91
|
+
table = TTY::Table.new do |t|
|
92
|
+
loop do
|
93
|
+
break if groups.all?(&:empty?)
|
94
|
+
|
95
|
+
t << groups.map(&:shift)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
"```\n#{table.render(:basic)}\n```"
|
100
|
+
end
|
101
|
+
|
102
|
+
# ==
|
74
103
|
end
|
75
104
|
end
|
data/lib/greenhat/archive.rb
CHANGED
@@ -7,7 +7,7 @@ module GreenHat
|
|
7
7
|
Dir.mkdir path
|
8
8
|
|
9
9
|
# Initially Copy file into tmpdir
|
10
|
-
FileUtils.
|
10
|
+
FileUtils.cp_r(archive_path.to_s, "#{path}/")
|
11
11
|
|
12
12
|
# Extract Everything
|
13
13
|
loop do
|
@@ -28,9 +28,6 @@ module GreenHat
|
|
28
28
|
|
29
29
|
archive = Archive.new(name: archive_path, path: path)
|
30
30
|
archive.save
|
31
|
-
# file = list[2]
|
32
|
-
# thing = archive.things_create(file: file)
|
33
|
-
# thing.setup
|
34
31
|
|
35
32
|
list.each do |file|
|
36
33
|
# Ensure Valid Content
|
@@ -54,8 +51,13 @@ module GreenHat
|
|
54
51
|
# Handle Different Types of Archives
|
55
52
|
def self.unpack(archive_path, path)
|
56
53
|
case File.extname archive_path
|
54
|
+
when '.tgz'
|
55
|
+
base_path = archive_path.gsub(File.basename(archive_path), '')
|
56
|
+
`bsdtar -xzf "#{archive_path}" -C #{base_path}`
|
57
|
+
FileUtils.rm(archive_path)
|
57
58
|
when '.tar'
|
58
|
-
|
59
|
+
base_path = archive_path.gsub(File.basename(archive_path), '')
|
60
|
+
`bsdtar -xf "#{archive_path}" -C #{base_path}`
|
59
61
|
FileUtils.rm(archive_path)
|
60
62
|
when '.gz'
|
61
63
|
`gzip -d "#{archive_path}"`
|
@@ -75,7 +77,7 @@ module GreenHat
|
|
75
77
|
end
|
76
78
|
|
77
79
|
def self.archive_types
|
78
|
-
%w[s gz tar]
|
80
|
+
%w[s gz tar tgz]
|
79
81
|
end
|
80
82
|
# -- Archive Loader ----------------------------------------------
|
81
83
|
end
|
@@ -102,7 +104,16 @@ class Archive < Teron
|
|
102
104
|
"#<Archive name: '#{name}'>"
|
103
105
|
end
|
104
106
|
|
105
|
-
def report
|
106
|
-
GreenHat::Report.new(self)
|
107
|
+
def report(flags)
|
108
|
+
GreenHat::Report.new(self, flags)
|
109
|
+
end
|
110
|
+
|
111
|
+
def report_markdown
|
112
|
+
GreenHat::ReportMarkdown.new(self)
|
113
|
+
end
|
114
|
+
|
115
|
+
# Helper for finding thing
|
116
|
+
def thing?(thing_name = 'gitlab-workhorse/current')
|
117
|
+
things.find { |x| x.name == thing_name }
|
107
118
|
end
|
108
119
|
end
|
data/lib/greenhat/cli.rb
CHANGED
@@ -1,8 +1,31 @@
|
|
1
1
|
# Top level namespace
|
2
2
|
module GreenHat
|
3
|
-
# CLI Methods
|
3
|
+
# CLI Methods / Shell Specific COmmands
|
4
4
|
# rubocop:disable Metrics/ModuleLength
|
5
5
|
module Cli
|
6
|
+
# CLI Start
|
7
|
+
def self.start
|
8
|
+
value ||= '' # Empty Start
|
9
|
+
|
10
|
+
loop do
|
11
|
+
line = reader.read_line(readline_notch, value: value)
|
12
|
+
value = '' # Remove Afterwards
|
13
|
+
|
14
|
+
if reader.breaker
|
15
|
+
value = line
|
16
|
+
puts ''
|
17
|
+
next
|
18
|
+
end
|
19
|
+
|
20
|
+
break if line =~ /^exit/i
|
21
|
+
|
22
|
+
Settings.cmd_add(line) unless line.blank?
|
23
|
+
|
24
|
+
process
|
25
|
+
run
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
6
29
|
def self.cursor
|
7
30
|
@cursor = TTY::Cursor
|
8
31
|
end
|
@@ -348,117 +371,6 @@ module GreenHat
|
|
348
371
|
@quiet = !@quiet
|
349
372
|
end
|
350
373
|
|
351
|
-
def self.cli_help
|
352
|
-
Shell.version
|
353
|
-
puts
|
354
|
-
puts 'Usage'.pastel(:yellow)
|
355
|
-
puts ' greenhat <sos-archive.tgz> <sos-archive2.tgz> '
|
356
|
-
puts ' greenhat <sos-archive.tgz> -q --command=df'
|
357
|
-
puts
|
358
|
-
|
359
|
-
puts 'Options'.pastel(:yellow)
|
360
|
-
puts ' --report, -r'.pastel(:green)
|
361
|
-
puts ' Run `report` against archives and exit'
|
362
|
-
puts
|
363
|
-
|
364
|
-
puts ' --quiet, -r'.pastel(:green)
|
365
|
-
puts ' Surpress GreenHat logging output'
|
366
|
-
puts
|
367
|
-
|
368
|
-
puts ' --load, -l'.pastel(:green)
|
369
|
-
puts ' Automatically attempt to read/parse/preload all included files'
|
370
|
-
puts
|
371
|
-
|
372
|
-
puts ' --command, -c'.pastel(:green)
|
373
|
-
puts ' Run and then exit a GreenHat Shell command'
|
374
|
-
puts
|
375
|
-
|
376
|
-
puts ' --version, -v'.pastel(:green)
|
377
|
-
puts ' Print version and exit'
|
378
|
-
puts
|
379
|
-
end
|
380
|
-
|
381
|
-
# Arguments before general processing
|
382
|
-
def self.pre_args(flags, files)
|
383
|
-
# Help
|
384
|
-
if flags?(%i[help h], flags)
|
385
|
-
cli_help
|
386
|
-
exit 0
|
387
|
-
end
|
388
|
-
|
389
|
-
# Version
|
390
|
-
if flags?(%i[version v], flags)
|
391
|
-
Shell.version
|
392
|
-
exit 0
|
393
|
-
end
|
394
|
-
|
395
|
-
# Quiet Flag
|
396
|
-
@quiet = true if flags?(%i[quiet q], flags)
|
397
|
-
|
398
|
-
# rubocop:disable Style/GuardClause
|
399
|
-
# MIA Files
|
400
|
-
if files.empty? || files.count { |x| File.exist? x }.zero?
|
401
|
-
puts "No arguments or files don't exist".pastel(:red)
|
402
|
-
puts 'Usage: greenhat <sos-archive.tgz> <sos-archive2.tgz>'
|
403
|
-
cli_help
|
404
|
-
Shell.version
|
405
|
-
end
|
406
|
-
# rubocop:enable Style/GuardClause
|
407
|
-
end
|
408
|
-
|
409
|
-
# Arguments to be handled after general processing
|
410
|
-
def self.post_args(flags)
|
411
|
-
# Run report and exit / Don't Clear for reports
|
412
|
-
if flags?(%i[report r], flags)
|
413
|
-
@quiet = true
|
414
|
-
# Don't Use Pagination
|
415
|
-
GreenHat::Shell.report(['--raw'])
|
416
|
-
exit 0
|
417
|
-
else
|
418
|
-
clear_screen
|
419
|
-
end
|
420
|
-
|
421
|
-
# CTL Tails need to be parsed for new 'things'
|
422
|
-
Thing.where(kind: :gitlab_tail)&.map(&:process)
|
423
|
-
|
424
|
-
Thing.all.each(&:process) if flags?(%i[load l], flags)
|
425
|
-
end
|
426
|
-
|
427
|
-
# Helper to Simplify checking flags
|
428
|
-
def self.flags?(list = [], flags = {})
|
429
|
-
list.any? { |x| flags.key? x }
|
430
|
-
end
|
431
|
-
|
432
|
-
# If no arguments Supplied Print and quit - rather than nasty exception
|
433
|
-
def self.start(raw)
|
434
|
-
Settings.start
|
435
|
-
files, flags, args = Args.parse(raw)
|
436
|
-
pre_args(flags, files)
|
437
|
-
load_files files
|
438
|
-
run_command(args) if args.any? { |arg| run_command?(arg) }
|
439
|
-
post_args(flags)
|
440
|
-
|
441
|
-
value ||= '' # Empty Start
|
442
|
-
|
443
|
-
loop do
|
444
|
-
line = reader.read_line(readline_notch, value: value)
|
445
|
-
value = '' # Remove Afterwards
|
446
|
-
|
447
|
-
if reader.breaker
|
448
|
-
value = line
|
449
|
-
puts ''
|
450
|
-
next
|
451
|
-
end
|
452
|
-
|
453
|
-
break if line =~ /^exit/i
|
454
|
-
|
455
|
-
Settings.cmd_add(line) unless line.blank?
|
456
|
-
|
457
|
-
process
|
458
|
-
run
|
459
|
-
end
|
460
|
-
end
|
461
|
-
|
462
374
|
def self.run_command?(arg)
|
463
375
|
%i[command c].any? do |x|
|
464
376
|
arg[:field] == x
|
@@ -478,20 +390,6 @@ module GreenHat
|
|
478
390
|
exit 0
|
479
391
|
end
|
480
392
|
|
481
|
-
def self.load_files(files)
|
482
|
-
# TODO: Web Helpers?
|
483
|
-
# suppress_output { GreenHat::Web.start }
|
484
|
-
|
485
|
-
# Don't double up on archives / Only Existing files
|
486
|
-
puts 'Loading Archives'.pastel(:blue) unless Cli.quiet
|
487
|
-
files.uniq.each do |file|
|
488
|
-
next unless File.exist?(file)
|
489
|
-
|
490
|
-
puts "- #{file}".pastel(:magenta) unless Cli.quiet
|
491
|
-
ArchiveLoader.load file
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
393
|
def self.suppress_output
|
496
394
|
original_stderr = $stderr.clone
|
497
395
|
original_stdout = $stdout.clone
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# Top level namespace
|
2
|
+
module GreenHat
|
3
|
+
# Entrypoint Methods
|
4
|
+
# Command Line Args / File Parsing etc
|
5
|
+
module Entrypoint
|
6
|
+
# If no arguments Supplied Print and quit - rather than nasty exception
|
7
|
+
def self.start(raw)
|
8
|
+
@clear = true # Reset screen by default
|
9
|
+
Settings.start
|
10
|
+
files, flags, args = Args.parse(raw)
|
11
|
+
pre_args(flags, files)
|
12
|
+
load_files files
|
13
|
+
Cli.run_command(args) if args.any? { |arg| Cli.run_command?(arg) }
|
14
|
+
post_args(flags)
|
15
|
+
post_setup(flags)
|
16
|
+
|
17
|
+
Cli.start # Kick over to CLI
|
18
|
+
end
|
19
|
+
|
20
|
+
# Arguments before general processing
|
21
|
+
def self.pre_args(flags, files)
|
22
|
+
# Help
|
23
|
+
if flags?(%i[help h], flags)
|
24
|
+
cli_help
|
25
|
+
exit 0
|
26
|
+
end
|
27
|
+
|
28
|
+
# Version
|
29
|
+
if flags?(%i[version v], flags)
|
30
|
+
Shell.version
|
31
|
+
exit 0
|
32
|
+
end
|
33
|
+
|
34
|
+
# Assume Raw Setting
|
35
|
+
Settings.settings[:assume_raw] = true if flags?(%i[no-prompt np], flags)
|
36
|
+
Settings.settings[:assume_raw] = false if flags?(%i[prompt p], flags)
|
37
|
+
|
38
|
+
# Quiet Flag
|
39
|
+
@quiet = true if flags?(%i[quiet q], flags)
|
40
|
+
|
41
|
+
if flags?(%i[load-local ll], flags)
|
42
|
+
# Hook in loading local
|
43
|
+
Shell.load_local(false)
|
44
|
+
elsif files.empty? || files.count { |x| File.exist? x }.zero?
|
45
|
+
# MIA Files
|
46
|
+
puts "No arguments or files don't exist".pastel(:red)
|
47
|
+
puts 'Usage: greenhat <sos-archive.tgz> <sos-archive2.tgz>'
|
48
|
+
puts 'See `--help`'
|
49
|
+
|
50
|
+
@clear = false # Don't hide messages
|
51
|
+
|
52
|
+
Shell.version
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Arguments to be handled after general processing
|
57
|
+
def self.post_args(flags)
|
58
|
+
# Supress Color
|
59
|
+
GreenHat::Settings.settings[:color] = false if flags?(%i[no-color n], flags)
|
60
|
+
|
61
|
+
# Run report and exit / Don't Clear for reports
|
62
|
+
if flags?(%i[report r], flags)
|
63
|
+
@quiet = true
|
64
|
+
# Don't Use Pagination
|
65
|
+
GreenHat::Shell.report(['--raw'])
|
66
|
+
exit 0
|
67
|
+
elsif flags?(%i[full-report f], flags)
|
68
|
+
@quiet = true
|
69
|
+
# Don't Use Pagination
|
70
|
+
GreenHat::Shell.report(['--raw', '--full'])
|
71
|
+
exit 0
|
72
|
+
elsif flags?(%i[markdown m], flags)
|
73
|
+
@quiet = true
|
74
|
+
# Don't Use Pagination
|
75
|
+
GreenHat::Shell.markdown_report(['--raw'])
|
76
|
+
exit 0
|
77
|
+
elsif @clear
|
78
|
+
Cli.clear_screen
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.post_setup(flags)
|
83
|
+
# CTL Tails need to be parsed for new 'things'
|
84
|
+
Thing.where(kind: :gitlab_tail)&.map(&:process)
|
85
|
+
Thing.where(kind: :kube_webservice)&.map(&:process)
|
86
|
+
|
87
|
+
Thing.all.each(&:process) if flags?(%i[load l], flags)
|
88
|
+
|
89
|
+
Shell.web if flags?(%i[web w], flags)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Helper to Simplify checking flags
|
93
|
+
def self.flags?(list = [], flags = {})
|
94
|
+
list.any? { |x| flags.key? x }
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.load_files(files)
|
98
|
+
# Don't double up on archives / Only Existing files
|
99
|
+
puts 'Loading Archives'.pastel(:blue) unless Cli.quiet
|
100
|
+
files.uniq.each do |file|
|
101
|
+
next unless File.exist?(file)
|
102
|
+
|
103
|
+
puts "- #{file}".pastel(:magenta) unless Cli.quiet
|
104
|
+
ArchiveLoader.load file
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# rubocop:disable Metrics/MethodLength
|
109
|
+
def self.cli_help
|
110
|
+
Shell.version
|
111
|
+
puts
|
112
|
+
puts 'Usage'.pastel(:yellow)
|
113
|
+
puts ' greenhat <sos-archive.tgz> <sos-archive2.tgz> '
|
114
|
+
puts ' greenhat <sos-archive.tgz> -q --command=df'
|
115
|
+
puts
|
116
|
+
|
117
|
+
puts 'Options'.pastel(:yellow)
|
118
|
+
puts ' --report, -r'.pastel(:green)
|
119
|
+
puts ' Run `report` against archives and exit'
|
120
|
+
puts
|
121
|
+
|
122
|
+
puts ' --full-report, -f'.pastel(:green)
|
123
|
+
puts ' Run `report` with all details. e.g. include fast-stats top/errors'
|
124
|
+
puts
|
125
|
+
|
126
|
+
puts ' --markdown, -m'.pastel(:green)
|
127
|
+
puts ' Run `markdown_report` against archives and exit'
|
128
|
+
puts
|
129
|
+
|
130
|
+
puts ' --quiet, -r'.pastel(:green)
|
131
|
+
puts ' Surpress GreenHat logging output'
|
132
|
+
puts
|
133
|
+
|
134
|
+
puts ' --load, -l'.pastel(:green)
|
135
|
+
puts ' Automatically attempt to read/parse/preload all included files'
|
136
|
+
puts
|
137
|
+
|
138
|
+
puts ' --load-local, -ll'.pastel(:green)
|
139
|
+
puts ' Load log files from locations on an Omnibus install'
|
140
|
+
puts
|
141
|
+
|
142
|
+
puts ' --prompt, -p'.pastel(:green)
|
143
|
+
puts ' Override settings / Assume Prompt'
|
144
|
+
puts
|
145
|
+
|
146
|
+
puts ' --no-prompt, -np'.pastel(:green)
|
147
|
+
puts ' Do not prompt for file types / Assume Raw or JSON'
|
148
|
+
puts
|
149
|
+
|
150
|
+
puts ' --command, -c'.pastel(:green)
|
151
|
+
puts ' Run and then exit a GreenHat Shell command'
|
152
|
+
puts
|
153
|
+
|
154
|
+
puts ' --web, -w'.pastel(:green)
|
155
|
+
puts ' Start Sinatra Webservice on load (4567)'
|
156
|
+
puts
|
157
|
+
|
158
|
+
puts ' --no-color, -n'.pastel(:green)
|
159
|
+
puts ' Disable color output'
|
160
|
+
puts
|
161
|
+
|
162
|
+
puts ' --version, -v'.pastel(:green)
|
163
|
+
puts ' Print version and exit'
|
164
|
+
puts
|
165
|
+
end
|
166
|
+
# rubocop:enable Metrics/MethodLength
|
167
|
+
|
168
|
+
# ==========================================================
|
169
|
+
end
|
170
|
+
end
|