morpheus-cli 4.2.12 → 4.2.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e122acdb8c77d80c4d352581e33ee8e8a7d7caf6e631fda4645e8f5854f8c6e
4
- data.tar.gz: 67d82f25c0fd463098d96183f0301ee22f3538bd6d6043c77132ae12fa5c3324
3
+ metadata.gz: 2788d4682a38deca42b716fa364b76fa58b81bc4dd0d9e0d61088029462684f9
4
+ data.tar.gz: 68fa32a490908ba747a7ea4ce63e34a6894e7e0398592a7a53e01fa688f237de
5
5
  SHA512:
6
- metadata.gz: 84efcd68bc06c45125654bc2279894cb5e1d7ef484f63015185fdedbdcdef57c48179cababa63128fd978416109229e08dc267ee0094c74fb16824f4450a4306
7
- data.tar.gz: 8326f9f6dc94b22cb3e0df8ce18155bbadf67e5256301d9ad0df07803c99e4eaccfe36eabcde0b8ec9461f226dd3beea5c0584c30bb5146937dbf70c59e7b75b
6
+ metadata.gz: 25a714b9505f60ad3c71da4b1af361f32112efe774ec08f1fb85c162f59e62150410127ed3b34f37de23a71ebc2857b112cf68b9d0501478bf401d348553473c
7
+ data.tar.gz: 6ec182c42b61ebf359e3ea9158c63e109b3a5369bc4242e5cad80355dd6093b82e6593d26c7968683e55903ee184791187b0db5f470ff0b100b16fdaeb5ba2b3
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
1
  FROM ruby:2.5.1
2
2
 
3
- RUN gem install morpheus-cli -v 4.2.12
3
+ RUN gem install morpheus-cli -v 4.2.13
4
4
 
5
5
  ENTRYPOINT ["morpheus"]
@@ -1303,7 +1303,7 @@ EOT
1303
1303
  # options[:interval] = parse_time(val).utc.iso8601
1304
1304
  # end
1305
1305
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
1306
- params['level'] = params['level'] ? [params['level'], val].flatten : val
1306
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
1307
1307
  end
1308
1308
  opts.on('--table', '--table', "Format ouput as a table.") do
1309
1309
  options[:table] = true
@@ -1346,6 +1346,7 @@ EOT
1346
1346
  end
1347
1347
  end
1348
1348
  params = {}
1349
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
1349
1350
  params.merge!(parse_list_options(options))
1350
1351
  params['query'] = params.delete('phrase') if params['phrase']
1351
1352
  params['order'] = params['direction'] unless params['direction'].nil? # old api version expects order instead of direction
@@ -128,6 +128,11 @@ module Morpheus
128
128
  previous_command_result = nil
129
129
  current_operator = nil
130
130
  still_executing = true
131
+ # need to error before executing anything, could be dangerous otherwise!
132
+ # also maybe only pass flow commands if they have a space on either side..
133
+ if flow.include?("|")
134
+ raise Morpheus::Cli::ExpressionParser::InvalidExpression.new "The PIPE (|) operator is not yet supported. You can wrap your arguments in quotations."
135
+ end
131
136
  flow.each do |flow_cmd|
132
137
  if still_executing
133
138
  if flow_cmd == '&&'
@@ -144,7 +149,8 @@ module Morpheus
144
149
  still_executing = false
145
150
  end
146
151
  elsif flow_cmd == '|' # or with previous command
147
- raise Morpheus::Cli::ExpressionParser::InvalidExpression.new "The PIPE (|) operator is not yet supported =["
152
+ # todo, handle pipe!
153
+ raise Morpheus::Cli::ExpressionParser::InvalidExpression.new "The PIPE (|) operator is not yet supported. You can wrap your arguments in quotations."
148
154
  previous_command_result = nil
149
155
  still_executing = false
150
156
  # or just continue?
@@ -836,7 +836,7 @@ class Morpheus::Cli::Clusters
836
836
  options[:end] = parse_time(val) #.utc.iso8601
837
837
  end
838
838
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
839
- params['level'] = params['level'] ? [params['level'], val].flatten : val
839
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
840
840
  end
841
841
  opts.on('--table', '--table', "Format ouput as a table.") do
842
842
  options[:table] = true
@@ -854,6 +854,7 @@ class Morpheus::Cli::Clusters
854
854
  begin
855
855
  cluster = find_cluster_by_name_or_id(args[0])
856
856
  params = {}
857
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
857
858
  params.merge!(parse_list_options(options))
858
859
  params['query'] = params.delete('phrase') if params['phrase']
859
860
  params['startMs'] = (options[:start].to_i * 1000) if options[:start]
@@ -519,7 +519,7 @@ class Morpheus::Cli::ContainersCommand
519
519
  options[:end] = parse_time(val) #.utc.iso8601
520
520
  end
521
521
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
522
- params['level'] = params['level'] ? [params['level'], val].flatten : val
522
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
523
523
  end
524
524
  opts.on('--table', '--table', "Format ouput as a table.") do
525
525
  options[:table] = true
@@ -541,6 +541,7 @@ class Morpheus::Cli::ContainersCommand
541
541
  id_list = parse_id_list(args)
542
542
  begin
543
543
  containers = id_list # heh
544
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
544
545
  params.merge!(parse_list_options(options))
545
546
  params['query'] = params.delete('phrase') if params['phrase']
546
547
  params[:order] = params[:direction] unless params[:direction].nil? # old api version expects order instead of direction
@@ -457,7 +457,7 @@ class Morpheus::Cli::HealthCommand
457
457
  optparse = Morpheus::Cli::OptionParser.new do |opts|
458
458
  opts.banner = subcommand_usage()
459
459
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
460
- params['level'] = params['level'] ? [params['level'], val].flatten : val
460
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
461
461
  end
462
462
  opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start timestamp. Default is 30 days ago.") do |val|
463
463
  start_date = parse_time(val) #.utc.iso8601
@@ -465,7 +465,7 @@ class Morpheus::Cli::HealthCommand
465
465
  opts.on('--end TIMESTAMP','--end TIMESTAMP', "End timestamp. Default is now.") do |val|
466
466
  end_date = parse_time(val) #.utc.iso8601
467
467
  end
468
- opts.on('--table', '--table', "Format output as a table.") do
468
+ opts.on('-t', '--table', "Format output as a table.") do
469
469
  options[:table] = true
470
470
  end
471
471
  opts.on('-a', '--all', "Display all details: entire message." ) do
@@ -484,6 +484,7 @@ class Morpheus::Cli::HealthCommand
484
484
  # params['endDate'] = end_date.utc.iso8601 if end_date
485
485
  params['startMs'] = (start_date.to_i * 1000) if start_date
486
486
  params['endMs'] = (end_date.to_i * 1000) if end_date
487
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
487
488
  params.merge!(parse_list_options(options))
488
489
  @health_interface.setopts(options)
489
490
  if options[:dry_run]
@@ -497,7 +498,7 @@ class Morpheus::Cli::HealthCommand
497
498
  title = "Morpheus Health Logs"
498
499
  subtitles = []
499
500
  if params['level']
500
- subtitles << "Level: #{params['level']}"
501
+ subtitles << "Level: #{[params['level']].flatten.join(',')}"
501
502
  end
502
503
  if start_date
503
504
  subtitles << "Start: #{start_date}"
@@ -582,7 +582,7 @@ class Morpheus::Cli::Hosts
582
582
  options[:end] = parse_time(val) #.utc.iso8601
583
583
  end
584
584
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
585
- params['level'] = params['level'] ? [params['level'], val].flatten : val
585
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
586
586
  end
587
587
  opts.on('--table', '--table', "Format ouput as a table.") do
588
588
  options[:table] = true
@@ -600,6 +600,7 @@ class Morpheus::Cli::Hosts
600
600
  connect(options)
601
601
  begin
602
602
  server = find_host_by_name_or_id(args[0])
603
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
603
604
  params.merge!(parse_list_options(options))
604
605
  params['query'] = params.delete('phrase') if params['phrase']
605
606
  params['order'] = params['direction'] unless params['direction'].nil? # old api version expects order instead of direction
@@ -1009,7 +1009,7 @@ class Morpheus::Cli::Instances
1009
1009
  # options[:interval] = parse_time(val).utc.iso8601
1010
1010
  # end
1011
1011
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
1012
- params['level'] = params['level'] ? [params['level'], val].flatten : val
1012
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
1013
1013
  end
1014
1014
  opts.on('--table', '--table', "Format ouput as a table.") do
1015
1015
  options[:table] = true
@@ -1036,6 +1036,7 @@ class Morpheus::Cli::Instances
1036
1036
  return 1
1037
1037
  end
1038
1038
  end
1039
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
1039
1040
  params.merge!(parse_list_options(options))
1040
1041
  params['query'] = params.delete('phrase') if params['phrase']
1041
1042
  params['order'] = params['direction'] unless params['direction'].nil? # old api version expects order instead of direction
@@ -63,9 +63,9 @@ class Morpheus::Cli::LogsCommand
63
63
  # options[:interval] = parse_time(val).utc.iso8601
64
64
  # end
65
65
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
66
- params['level'] = params['level'] ? [params['level'], val].flatten : val
66
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
67
67
  end
68
- opts.on('--table', '--table', "Format ouput as a table.") do
68
+ opts.on('-t', '--table', "Format ouput as a table.") do
69
69
  options[:table] = true
70
70
  end
71
71
  opts.on('-a', '--all', "Display all details: entire message." ) do
@@ -81,6 +81,7 @@ class Morpheus::Cli::LogsCommand
81
81
  end
82
82
  connect(options)
83
83
  begin
84
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
84
85
  params.merge!(parse_list_options(options))
85
86
  params['query'] = params.delete('phrase') if params['phrase']
86
87
  params['order'] = params['direction'] unless params['direction'].nil? # old api version expects order instead of direction
@@ -45,6 +45,8 @@ module Morpheus::Cli::LogsHelper
45
45
  end
46
46
  out = ""
47
47
  table_color = options.key?(:color) ? options[:color] : cyan
48
+ term_width = current_terminal_width()
49
+ message_col_width = current_terminal_width() - (show_object ? 56 : 36)
48
50
  log_records.each do |log_entry|
49
51
  log_level = format_log_level(log_entry['level'], table_color, 6)
50
52
  out << table_color if table_color
@@ -52,15 +54,20 @@ module Morpheus::Cli::LogsHelper
52
54
  out << "#{log_level} "
53
55
  out << "[#{log_entry['ts']}] "
54
56
  if show_object
55
- out << "(#{log_entry['typeCode']} #{log_entry['objectId']}) "
57
+ log_src = "#{log_entry['typeCode']} #{log_entry['objectId']}"
58
+ if options[:details] || options[:all]
59
+ # log_src = "#{log_entry['typeCode']} #{log_entry['objectId']}"
60
+ else
61
+ log_src = truncate_string(log_src, 20)
62
+ end
63
+ out << "(#{log_src}) "
56
64
  end
57
65
  log_msg = ""
58
66
  if options[:details] || options[:all]
59
- log_msg = log_entry['message'].to_s.strip
60
- else
61
- # truncate_string(log_entry['message'].to_s.split.select {|it| it.to_s.strip != "" }.first, 100)
62
- log_msg = truncate_string(log_entry['message'].to_s.gsub("\r\n", " ").gsub("\n", " "), 100)
63
- end
67
+ log_msg = log_entry['message'].to_s.strip
68
+ else
69
+ log_msg = truncate_string(log_entry['message'].to_s.strip.gsub(/\r?\n/, " "), message_col_width)
70
+ end
64
71
  out << "- #{log_msg}"
65
72
  out << table_color if table_color
66
73
  out << "\n"
@@ -71,15 +78,17 @@ module Morpheus::Cli::LogsHelper
71
78
  def format_log_table(logs, options={}, show_object=true)
72
79
  out = ""
73
80
  table_color = options.key?(:color) ? options[:color] : cyan
81
+ term_width = current_terminal_width()
82
+ message_col_width = current_terminal_width() - (show_object ? 56 : 36)
74
83
  log_columns = [
75
84
  {"LEVEL" => lambda {|log_entry| format_log_level(log_entry['level'], table_color) } },
76
85
  {"DATE" => lambda {|log_entry| log_entry['ts'] } },
77
86
  {"SOURCE" => lambda {|log_entry| "#{log_entry['typeCode']} #{log_entry['objectId']}" } },
78
87
  {"MESSAGE" => lambda {|log_entry|
79
88
  if options[:details] || options[:all]
80
- log_entry['message'].to_s
89
+ log_entry['message'].to_s.strip
81
90
  else
82
- truncate_string(log_entry['message'].to_s.split.first, 100)
91
+ truncate_string(log_entry['message'].to_s.strip.gsub(/\r?\n/, " "), message_col_width)
83
92
  end
84
93
  } }
85
94
  ]
@@ -89,7 +98,7 @@ module Morpheus::Cli::LogsHelper
89
98
  # if options[:include_fields]
90
99
  # columns = options[:include_fields]
91
100
  # end
92
- out << as_pretty_table(logs, log_columns, options.merge(responsive_table:false))
101
+ out << as_pretty_table(logs, log_columns, options.merge(wrap:true))
93
102
  # out << "\n"
94
103
  return out
95
104
  end
@@ -302,15 +302,12 @@ EOT
302
302
  # secure is the default,
303
303
  # try to only store insecure:false in the appliances config
304
304
  if url.to_s =~ /^https\:/ && secure.nil?
305
- if secure != nil
306
- new_appliance_map[:insecure] = !secure
307
- else
308
- #v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'secure', 'fieldLabel' => 'Secure', 'type' => 'checkbox', 'required' => false, 'defaultValue' => true, 'description' => 'Prevent insecure HTTPS communication, respect SSL errors.'}], options[:options])
309
- v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'insecure', 'fieldLabel' => 'Insecure (Ignore SSL Errors)', 'type' => 'checkbox', 'required' => false, 'defaultValue' => false, 'description' => 'Allow insecure HTTPS communication, ignore SSL errors.'}], options[:options])
310
- if v_prompt['insecure'].to_s == 'true' || v_prompt['insecure'].to_s == 'on'
311
- new_appliance_map[:insecure] = true
312
- end
305
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'insecure', 'fieldLabel' => 'Insecure (Ignore SSL Errors)', 'type' => 'checkbox', 'required' => false, 'defaultValue' => false, 'description' => 'Allow insecure HTTPS communication, ignore SSL errors.'}], options[:options])
306
+ if v_prompt['insecure'].to_s == 'true' || v_prompt['insecure'].to_s == 'on'
307
+ new_appliance_map[:insecure] = true
313
308
  end
309
+ elsif secure != nil
310
+ new_appliance_map[:insecure] = !secure
314
311
  end
315
312
 
316
313
  # --use
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "4.2.12"
4
+ VERSION = "4.2.13"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.12
4
+ version: 4.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-05-13 00:00:00.000000000 Z
14
+ date: 2020-05-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler