morpheus-cli 4.1.7 → 4.1.8

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.
@@ -3,9 +3,9 @@ require 'morpheus/cli/cli_command'
3
3
  class Morpheus::Cli::LogSettingsCommand
4
4
  include Morpheus::Cli::CliCommand
5
5
  include Morpheus::Cli::AccountsHelper
6
- set_command_hidden
7
- set_command_name :'log-settings'
8
6
 
7
+ set_command_name :'log-settings'
8
+ set_command_hidden
9
9
  register_subcommands :get, :update
10
10
  register_subcommands :enable_integration, :disable_integration
11
11
  register_subcommands :add_syslog_rule, :remove_syslog_rule
@@ -147,8 +147,8 @@ class Morpheus::Cli::LogSettingsCommand
147
147
  end
148
148
 
149
149
  if !options[:integrations].nil?
150
- if options[:integrations].reject { |rule| rule['name'] && rule['host'] && rule['port'] }.count > 0
151
- print_red_alert "Invalid integration: name, host and port are required"
150
+ if options[:integrations].reject { |rule| rule['name'] }.count > 0
151
+ print_red_alert "Invalid integration: name is required"
152
152
  return 1
153
153
  end
154
154
  payload['logSettings']['integrations'] = options[:integrations]
@@ -486,8 +486,8 @@ class Morpheus::Cli::MonitoringAppsCommand
486
486
  optparse = Morpheus::Cli::OptionParser.new do |opts|
487
487
  opts.banner = subcommand_usage("[name]")
488
488
  opts.on(nil, "--disable", "Unmute instead, the same as the unmute command") do
489
- params['enabled'] = false
490
489
  params['muted'] = false
490
+ params['enabled'] = false
491
491
  end
492
492
  opts.footer = "Mute a monitoring app. This prevents it from creating new incidents." + "\n" +
493
493
  "[name] is required. This is the name or id of a monitoring app."
@@ -517,7 +517,7 @@ class Morpheus::Cli::MonitoringAppsCommand
517
517
  if options[:json]
518
518
  puts as_json(json_response, options)
519
519
  elsif !options[:quiet]
520
- if params['enabled']
520
+ if params['muted'] != false
521
521
  print_green_success "Muted app #{monitor_app['name']}"
522
522
  else
523
523
  print_green_success "Unmuted app #{monitor_app['name']}"
@@ -611,7 +611,7 @@ class Morpheus::Cli::MonitoringAppsCommand
611
611
  puts as_json(json_response, options)
612
612
  elsif !options[:quiet]
613
613
  num_updated = json_response['updated']
614
- if params['enabled']
614
+ if params['muted'] != false
615
615
  print_green_success "Muted #{num_updated} apps"
616
616
  else
617
617
  print_green_success "Unmuted #{num_updated} apps"
@@ -505,7 +505,7 @@ class Morpheus::Cli::MonitoringChecksCommand
505
505
  if options[:json]
506
506
  puts as_json(json_response, options)
507
507
  elsif !options[:quiet]
508
- if params['enabled']
508
+ if params['muted'] != false
509
509
  print_green_success "Muted check #{check['name']}"
510
510
  else
511
511
  print_green_success "Unmuted check #{check['name']}"
@@ -599,7 +599,7 @@ class Morpheus::Cli::MonitoringChecksCommand
599
599
  puts as_json(json_response, options)
600
600
  elsif !options[:quiet]
601
601
  num_updated = json_response['updated']
602
- if params['enabled']
602
+ if params['muted'] != false
603
603
  print_green_success "Muted #{num_updated} checks"
604
604
  else
605
605
  print_green_success "Unmuted #{num_updated} checks"
@@ -445,6 +445,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
445
445
  opts.banner = subcommand_usage("[name]")
446
446
  opts.on(nil, "--disable", "Disable mute, the same as unmute") do
447
447
  params['enabled'] = false
448
+ params['muted'] = false
448
449
  end
449
450
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
450
451
  opts.footer = "Mute a check group. This prevents it from creating new incidents." + "\n" +
@@ -474,7 +475,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
474
475
  if options[:json]
475
476
  puts as_json(json_response, options)
476
477
  elsif !options[:quiet]
477
- if params['enabled']
478
+ if params['muted'] != false
478
479
  print_green_success "Muted group #{check_group['name']}"
479
480
  else
480
481
  print_green_success "Unmuted group #{check_group['name']}"
@@ -568,7 +569,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
568
569
  puts as_json(json_response, options)
569
570
  elsif !options[:quiet]
570
571
  num_updated = json_response['updated']
571
- if params['enabled']
572
+ if params['muted'] != false
572
573
  print_green_success "Muted #{num_updated} check groups"
573
574
  else
574
575
  print_green_success "Unmuted #{num_updated} check groups"
@@ -587,7 +587,7 @@ class Morpheus::Cli::MonitoringIncidentsCommand
587
587
  if options[:json]
588
588
  puts as_json(json_response, options)
589
589
  elsif !options[:quiet]
590
- if params['enabled']
590
+ if params['muted'] != false
591
591
  print_green_success "Muted incident #{incident['id']}"
592
592
  else
593
593
  print_green_success "Unmuted incident #{incident['id']}"
@@ -651,6 +651,7 @@ class Morpheus::Cli::MonitoringIncidentsCommand
651
651
  optparse = Morpheus::Cli::OptionParser.new do |opts|
652
652
  opts.banner = subcommand_usage()
653
653
  opts.on(nil, "--disable", "Disable mute state instead, the same as unmute-all") do
654
+ params['muted'] = false
654
655
  params['enabled'] = false
655
656
  end
656
657
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet, :remote])
@@ -680,7 +681,7 @@ class Morpheus::Cli::MonitoringIncidentsCommand
680
681
  puts as_json(json_response, options)
681
682
  elsif !options[:quiet]
682
683
  num_updated = json_response['updated']
683
- if params['enabled']
684
+ if params['muted'] != false
684
685
  print_green_success "Muted #{num_updated} open incidents"
685
686
  else
686
687
  print_green_success "Unmuted #{num_updated} open incidents"
@@ -35,7 +35,7 @@ module Morpheus
35
35
  prompt(option_types, options, api_client, api_params, true)
36
36
  end
37
37
 
38
- def self.prompt(option_types, options={}, api_client=nil,api_params={}, no_prompt=false)
38
+ def self.prompt(option_types, options={}, api_client=nil, api_params={}, no_prompt=false, paging_enabled=false)
39
39
  results = {}
40
40
  options = options || {}
41
41
  # puts "Options Prompt #{options}"
@@ -153,7 +153,7 @@ module Morpheus
153
153
  # I suppose the entered value should take precedence
154
154
  # api_params = api_params.merge(options) # this might be good enough
155
155
  # dup it
156
- value = select_prompt(option_type,api_client, (api_params || {}).merge(results))
156
+ value = select_prompt(option_type, api_client, (api_params || {}).merge(results), options[:no_prompt], nil, paging_enabled)
157
157
  elsif option_type['type'] == 'hidden'
158
158
  value = option_type['defaultValue']
159
159
  input = value
@@ -245,7 +245,7 @@ module Morpheus
245
245
  Thread.current[:_last_select]
246
246
  end
247
247
 
248
- def self.select_prompt(option_type,api_client, api_params={}, no_prompt=false, use_value=nil)
248
+ def self.select_prompt(option_type,api_client, api_params={}, no_prompt=false, use_value=nil, paging_enabled=false)
249
249
  value_found = false
250
250
  value = nil
251
251
  default_value = option_type['defaultValue']
@@ -320,6 +320,12 @@ module Morpheus
320
320
  end
321
321
  end
322
322
  end
323
+
324
+ page_size = Readline.get_screen_size[0] - 6
325
+ if paging_enabled && page_size < select_options.count
326
+ paging = {:cur_page => 0, :page_size => page_size, :total => select_options.count}
327
+ end
328
+
323
329
  while !value_found do
324
330
  Readline.completion_append_character = ""
325
331
  Readline.basic_word_break_characters = ''
@@ -336,7 +342,9 @@ module Morpheus
336
342
  }
337
343
  matches
338
344
  }
339
- input = Readline.readline("#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''}#{!default_value.to_s.empty? ? ' ['+default_value.to_s+']' : ''} ['?' for options]: ", false).to_s
345
+
346
+ has_more_pages = paging && (paging[:cur_page] * paging[:page_size]) < paging[:total]
347
+ input = Readline.readline("#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''}#{!default_value.to_s.empty? ? ' ['+default_value.to_s+']' : ''} ['?' for#{has_more_pages && paging[:cur_page] > 0 ? ' more ' : ' '}options]: ", false).to_s
340
348
  input = input.chomp.strip
341
349
  if input.empty? && default_value
342
350
  input = default_value.to_s
@@ -351,7 +359,8 @@ module Morpheus
351
359
 
352
360
  if input == '?'
353
361
  help_prompt(option_type)
354
- display_select_options(option_type, select_options)
362
+ display_select_options(option_type, select_options, paging)
363
+ paging[:cur_page] = (paging[:cur_page] + 1) * paging[:page_size] < paging[:total] ? paging[:cur_page] + 1 : 0 if paging
355
364
  elsif !value.nil? || option_type['required'] != true
356
365
  value_found = true
357
366
  end
@@ -505,8 +514,14 @@ module Morpheus
505
514
  api_client.options.options_for_source(source,params)['data']
506
515
  end
507
516
 
508
- def self.display_select_options(opt, select_options = [])
517
+ def self.display_select_options(opt, select_options = [], paging = nil)
509
518
  header = opt['fieldLabel'] ? "#{opt['fieldLabel']} Options" : "Options"
519
+ if paging
520
+ offset = paging[:cur_page] * paging[:page_size]
521
+ limit = [offset + paging[:page_size], select_options.count].min - 1
522
+ header = "#{header} (#{offset+1}-#{limit+1} of #{paging[:total]})"
523
+ select_options = select_options[(offset)..(limit)]
524
+ end
510
525
  puts "\n#{header}"
511
526
  puts "==============="
512
527
  select_options.each do |option|
@@ -43,7 +43,7 @@ class Morpheus::Cli::TenantsCommand
43
43
  optparse = Morpheus::Cli::OptionParser.new do |opts|
44
44
  opts.banner = subcommand_usage()
45
45
  build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
46
- opts.footer = "List tenants (accounts)."
46
+ opts.footer = "List tenants."
47
47
  end
48
48
  optparse.parse!(args)
49
49
  connect(options)
@@ -53,7 +53,7 @@ class Morpheus::Cli::TenantsCommand
53
53
  @accounts_interface.setopts(options)
54
54
  if options[:dry_run]
55
55
  print_dry_run @accounts_interface.dry.list(params)
56
- return
56
+ return 0
57
57
  end
58
58
  json_response = @accounts_interface.list(params)
59
59
  render_result = render_with_format(json_response, options, 'accounts')
@@ -64,7 +64,7 @@ class Morpheus::Cli::TenantsCommand
64
64
  subtitles += parse_list_subtitles(options)
65
65
  print_h1 title, subtitles
66
66
  if accounts.empty?
67
- puts yellow,"No tenants found.",reset
67
+ print cyan,"No tenants found.",reset,"\n"
68
68
  else
69
69
  print_accounts_table(accounts)
70
70
  print_results_pagination(json_response)
@@ -53,32 +53,26 @@ class Morpheus::Cli::Users
53
53
  return
54
54
  end
55
55
  json_response = @users_interface.list(account_id, params)
56
+ render_result = render_with_format(json_response, options, 'users')
57
+ return 0 if render_result
56
58
  users = json_response['users']
57
- if options[:json]
58
- puts as_json(json_response, options, "users")
59
- return 0
60
- elsif options[:yaml]
61
- puts as_yaml(json_response, options, "users")
62
- return 0
63
- elsif options[:csv]
64
- puts records_as_csv(users, options)
65
- return 0
59
+
60
+ title = "Morpheus Users"
61
+ subtitles = []
62
+ if account
63
+ subtitles << "Account: #{account['name']}".strip
64
+ end
65
+ subtitles += parse_list_subtitles(options)
66
+ print_h1 title, subtitles, options
67
+ if users.empty?
68
+ print cyan,"No users found.",reset,"\n"
66
69
  else
67
- title = "Morpheus Users"
68
- subtitles = []
69
- if account
70
- subtitles << "Account: #{account['name']}".strip
71
- end
72
- subtitles += parse_list_subtitles(options)
73
- print_h1 title, subtitles, options
74
- if users.empty?
75
- puts yellow,"No users found.",reset
76
- else
77
- print_users_table(users, options)
78
- print_results_pagination(json_response)
79
- end
80
- print reset,"\n"
70
+ print_users_table(users, options)
71
+ print_results_pagination(json_response)
81
72
  end
73
+ print reset,"\n"
74
+ return 0
75
+
82
76
  rescue RestClient::Exception => e
83
77
  print_rest_exception(e, options)
84
78
  return 1
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "4.1.7"
4
+ VERSION = "4.1.8"
5
5
  end
6
6
  end
@@ -3,9 +3,9 @@ require 'morpheus/cli/cli_command'
3
3
  class Morpheus::Cli::WhitelabelSettingsCommand
4
4
  include Morpheus::Cli::CliCommand
5
5
  # include Morpheus::Cli::AccountsHelper
6
- set_command_hidden
7
- set_command_name :'whitelabel-settings'
8
6
 
7
+ set_command_name :'whitelabel-settings'
8
+ set_command_hidden
9
9
  register_subcommands :get, :update
10
10
  register_subcommands :update_images, :reset_image, :download_image, :view_image
11
11
  set_default_subcommand :get
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.required_ruby_version = '>= 2.3' # according to http.rb doc
21
+ spec.required_ruby_version = '>= 2.5.1' # according to http.rb doc
22
22
  spec.add_development_dependency "bundler", "~> 1.6"
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_dependency 'term-ansicolor', '~> 1.3.0'
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.1.7
4
+ version: 4.1.8
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: 2019-11-07 00:00:00.000000000 Z
14
+ date: 2019-11-27 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -162,6 +162,7 @@ files:
162
162
  - lib/morpheus/api/accounts_interface.rb
163
163
  - lib/morpheus/api/api_client.rb
164
164
  - lib/morpheus/api/appliance_settings_interface.rb
165
+ - lib/morpheus/api/approvals_interface.rb
165
166
  - lib/morpheus/api/apps_interface.rb
166
167
  - lib/morpheus/api/archive_buckets_interface.rb
167
168
  - lib/morpheus/api/archive_files_interface.rb
@@ -192,6 +193,8 @@ files:
192
193
  - lib/morpheus/api/image_builder_preseed_scripts_interface.rb
193
194
  - lib/morpheus/api/instance_types_interface.rb
194
195
  - lib/morpheus/api/instances_interface.rb
196
+ - lib/morpheus/api/integrations_interface.rb
197
+ - lib/morpheus/api/jobs_interface.rb
195
198
  - lib/morpheus/api/key_pairs_interface.rb
196
199
  - lib/morpheus/api/library_compute_type_layouts_interface.rb
197
200
  - lib/morpheus/api/library_container_scripts_interface.rb
@@ -258,6 +261,7 @@ files:
258
261
  - lib/morpheus/cli/account_groups_command.rb
259
262
  - lib/morpheus/cli/accounts.rb
260
263
  - lib/morpheus/cli/appliance_settings_command.rb
264
+ - lib/morpheus/cli/approvals_command.rb
261
265
  - lib/morpheus/cli/apps.rb
262
266
  - lib/morpheus/cli/archives_command.rb
263
267
  - lib/morpheus/cli/auth_command.rb
@@ -312,6 +316,8 @@ files:
312
316
  - lib/morpheus/cli/image_builder_command.rb
313
317
  - lib/morpheus/cli/instance_types.rb
314
318
  - lib/morpheus/cli/instances.rb
319
+ - lib/morpheus/cli/integrations_command.rb
320
+ - lib/morpheus/cli/jobs_command.rb
315
321
  - lib/morpheus/cli/key_pairs.rb
316
322
  - lib/morpheus/cli/library.rb
317
323
  - lib/morpheus/cli/library_container_scripts_command.rb
@@ -399,7 +405,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
399
405
  requirements:
400
406
  - - ">="
401
407
  - !ruby/object:Gem::Version
402
- version: '2.3'
408
+ version: 2.5.1
403
409
  required_rubygems_version: !ruby/object:Gem::Requirement
404
410
  requirements:
405
411
  - - ">="