morpheus-cli 4.1.7 → 4.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  - - ">="