morpheus-cli 4.1.4 → 4.1.5

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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus.rb +5 -0
  3. data/lib/morpheus/api.rb +2 -2
  4. data/lib/morpheus/api/api_client.rb +47 -12
  5. data/lib/morpheus/api/appliance_settings_interface.rb +30 -0
  6. data/lib/morpheus/api/auth_interface.rb +14 -10
  7. data/lib/morpheus/api/clouds_interface.rb +7 -0
  8. data/lib/morpheus/api/clusters_interface.rb +17 -5
  9. data/lib/morpheus/api/custom_instance_types_interface.rb +2 -3
  10. data/lib/morpheus/api/deployments_interface.rb +7 -0
  11. data/lib/morpheus/api/execute_schedules_interface.rb +2 -3
  12. data/lib/morpheus/api/groups_interface.rb +7 -0
  13. data/lib/morpheus/api/license_interface.rb +9 -2
  14. data/lib/morpheus/api/load_balancers_interface.rb +7 -0
  15. data/lib/morpheus/api/logs_interface.rb +11 -2
  16. data/lib/morpheus/api/monitoring_alerts_interface.rb +45 -0
  17. data/lib/morpheus/api/monitoring_checks_interface.rb +2 -2
  18. data/lib/morpheus/api/monitoring_interface.rb +13 -8
  19. data/lib/morpheus/api/power_schedules_interface.rb +2 -3
  20. data/lib/morpheus/api/servers_interface.rb +5 -2
  21. data/lib/morpheus/api/setup_interface.rb +25 -7
  22. data/lib/morpheus/api/task_sets_interface.rb +7 -1
  23. data/lib/morpheus/api/tasks_interface.rb +7 -0
  24. data/lib/morpheus/api/virtual_images_interface.rb +2 -3
  25. data/lib/morpheus/api/whitelabel_settings_interface.rb +60 -0
  26. data/lib/morpheus/cli.rb +18 -14
  27. data/lib/morpheus/cli/access_token_command.rb +18 -2
  28. data/lib/morpheus/cli/appliance_settings_command.rb +303 -0
  29. data/lib/morpheus/cli/apps.rb +4 -3
  30. data/lib/morpheus/cli/archives_command.rb +0 -21
  31. data/lib/morpheus/cli/blueprints_command.rb +2 -2
  32. data/lib/morpheus/cli/cli_command.rb +32 -8
  33. data/lib/morpheus/cli/clouds.rb +6 -11
  34. data/lib/morpheus/cli/clusters.rb +346 -117
  35. data/lib/morpheus/cli/command_error.rb +4 -0
  36. data/lib/morpheus/cli/commands/standard/man_command.rb +1 -1
  37. data/lib/morpheus/cli/containers_command.rb +2 -1
  38. data/lib/morpheus/cli/credentials.rb +49 -4
  39. data/lib/morpheus/cli/deployments.rb +2 -2
  40. data/lib/morpheus/cli/dot_file.rb +2 -2
  41. data/lib/morpheus/cli/error_handler.rb +6 -3
  42. data/lib/morpheus/cli/execute_schedules_command.rb +1 -1
  43. data/lib/morpheus/cli/groups.rb +4 -4
  44. data/lib/morpheus/cli/hosts.rb +3 -2
  45. data/lib/morpheus/cli/image_builder_command.rb +0 -21
  46. data/lib/morpheus/cli/instances.rb +17 -4
  47. data/lib/morpheus/cli/library_container_types_command.rb +1 -1
  48. data/lib/morpheus/cli/library_layouts_command.rb +1 -1
  49. data/lib/morpheus/cli/library_upgrades_command.rb +1 -1
  50. data/lib/morpheus/cli/license.rb +185 -72
  51. data/lib/morpheus/cli/load_balancers.rb +4 -4
  52. data/lib/morpheus/cli/login.rb +4 -0
  53. data/lib/morpheus/cli/logs_command.rb +132 -0
  54. data/lib/morpheus/cli/mixins/infrastructure_helper.rb +2 -2
  55. data/lib/morpheus/cli/mixins/logs_helper.rb +65 -0
  56. data/lib/morpheus/cli/mixins/monitoring_helper.rb +410 -28
  57. data/lib/morpheus/cli/mixins/print_helper.rb +14 -4
  58. data/lib/morpheus/cli/monitoring_alerts_command.rb +800 -0
  59. data/lib/morpheus/cli/monitoring_apps_command.rb +85 -28
  60. data/lib/morpheus/cli/monitoring_checks_command.rb +60 -27
  61. data/lib/morpheus/cli/monitoring_contacts_command.rb +54 -79
  62. data/lib/morpheus/cli/monitoring_groups_command.rb +62 -23
  63. data/lib/morpheus/cli/monitoring_incidents_command.rb +91 -70
  64. data/lib/morpheus/cli/network_pools_command.rb +39 -23
  65. data/lib/morpheus/cli/power_schedules_command.rb +1 -1
  66. data/lib/morpheus/cli/remote.rb +834 -275
  67. data/lib/morpheus/cli/roles.rb +100 -38
  68. data/lib/morpheus/cli/tasks.rb +1 -1
  69. data/lib/morpheus/cli/user_settings_command.rb +20 -12
  70. data/lib/morpheus/cli/version.rb +1 -1
  71. data/lib/morpheus/cli/virtual_images.rb +1 -1
  72. data/lib/morpheus/cli/whitelabel_settings_command.rb +546 -0
  73. data/lib/morpheus/cli/whoami.rb +1 -1
  74. data/lib/morpheus/cli/workflows.rb +2 -2
  75. data/lib/morpheus/terminal.rb +22 -8
  76. metadata +11 -2
@@ -8,9 +8,10 @@ class Morpheus::Cli::MonitoringAppsCommand
8
8
  set_command_name :'monitor-apps'
9
9
 
10
10
  register_subcommands :list, :get, :add, :update, :remove
11
- register_subcommands :mute, :unmute #, :history, :statistics
11
+ register_subcommands :mute, :unmute
12
12
  register_subcommands :'mute-all' => :mute_all
13
13
  register_subcommands :'unmute-all' => :unmute_all
14
+ #register_subcommands :history
14
15
 
15
16
  def connect(opts)
16
17
  @api_client = establish_remote_appliance_connection(opts)
@@ -82,6 +83,11 @@ class Morpheus::Cli::MonitoringAppsCommand
82
83
  # opts.on(nil,'--statistics', "Display Statistics") do |val|
83
84
  # options[:show_statistics] = true
84
85
  # end
86
+ opts.on('-a','--all', "Display All Details (History, Notifications)") do
87
+ options[:show_history] = true
88
+ options[:show_notifications] = true
89
+ options[:show_statistics] = true
90
+ end
85
91
  build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
86
92
  end
87
93
  optparse.parse!(args)
@@ -105,6 +111,7 @@ class Morpheus::Cli::MonitoringAppsCommand
105
111
  print_dry_run @monitoring_apps_interface.dry.get(monitor_app['id'])
106
112
  return
107
113
  end
114
+ # get by ID to sideload associated checks
108
115
  json_response = @monitoring_apps_interface.get(monitor_app['id'])
109
116
  monitor_app = json_response['monitorApp']
110
117
  if options[:json]
@@ -118,7 +125,7 @@ class Morpheus::Cli::MonitoringAppsCommand
118
125
  return 0
119
126
  end
120
127
 
121
- print_h1 "Monitoring App Details"
128
+ print_h1 "Monitoring App Details", [], options
122
129
  print cyan
123
130
  description_cols = {
124
131
  "ID" => lambda {|it| it['id'] },
@@ -129,7 +136,7 @@ class Morpheus::Cli::MonitoringAppsCommand
129
136
  "Availability" => lambda {|it| it['availability'] ? "#{it['availability'].to_f.round(3).to_s}%" : "N/A"},
130
137
  "Response Time" => lambda {|it| it['lastTimer'] ? "#{it['lastTimer']}ms" : "N/A" }
131
138
  }
132
- print_description_list(description_cols, monitor_app)
139
+ print_description_list(description_cols, monitor_app, options)
133
140
 
134
141
  ## Chart Stats
135
142
 
@@ -137,7 +144,7 @@ class Morpheus::Cli::MonitoringAppsCommand
137
144
  ## Checks in this app
138
145
  checks = json_response["checks"]
139
146
  if checks && !checks.empty?
140
- print_h2 "Checks"
147
+ print_h2 "Checks", options
141
148
  print_checks_table(checks, options)
142
149
  else
143
150
  # print "\n"
@@ -147,13 +154,19 @@ class Morpheus::Cli::MonitoringAppsCommand
147
154
  ## Check Groups in this app
148
155
  check_groups = json_response["checkGroups"]
149
156
  if check_groups && !check_groups.empty?
150
- print_h2 "Groups"
157
+ print_h2 "Groups", options
151
158
  print_check_groups_table(check_groups, options)
152
159
  else
153
160
  # print "\n"
154
161
  # puts "No check groups in this monitoring app"
155
162
  end
156
163
 
164
+ ## Checks in this check group
165
+ if (!checks || checks.empty?) && (check_groups || check_groups.empty?)
166
+ print "\n", yellow
167
+ puts "This monitor app is empty, it contains no checks or groups."
168
+ end
169
+
157
170
  ## Open Incidents
158
171
  open_incidents = json_response["openIncidents"]
159
172
  if open_incidents && !open_incidents.empty?
@@ -174,7 +187,7 @@ class Morpheus::Cli::MonitoringAppsCommand
174
187
  issues = history_items
175
188
  if history_items && !history_items.empty?
176
189
  print_h2 "History"
177
- print_check_history_table(history_items, options)
190
+ print_monitor_app_history_table(history_items, options)
178
191
  print_results_pagination(history_json_response, {:label => "event", :n_label => "events"})
179
192
  else
180
193
  print "\n"
@@ -247,7 +260,7 @@ class Morpheus::Cli::MonitoringAppsCommand
247
260
  if history_items.empty?
248
261
  print cyan,"No history found.",reset,"\n"
249
262
  else
250
- print_check_history_table(history_items, options)
263
+ print_monitor_app_history_table(history_items, options)
251
264
  print_results_pagination(json_response, {:label => "event", :n_label => "events"})
252
265
  end
253
266
  print reset,"\n"
@@ -277,15 +290,18 @@ class Morpheus::Cli::MonitoringAppsCommand
277
290
  opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
278
291
  params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
279
292
  end
280
- opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of IDs") do |list|
281
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
293
+ opts.on('--muted [on|off]', String, "Muted, Turns Affects Availability off.") do |val|
294
+ params['muted'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
295
+ end
296
+ opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of names or IDs.") do |list|
297
+ if list.size == 1 && ('[]' == list[0]) # clear array
282
298
  params['checks'] = []
283
299
  else
284
300
  params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
285
301
  end
286
302
  end
287
- opts.on('--checkGroups LIST', Array, "Check Groups to include in this app, comma separated list of IDs") do |list|
288
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
303
+ opts.on('--groups LIST', Array, "Check Groups to include in this app, comma separated list of names or IDs.") do |list|
304
+ if list.size == 1 && ('[]' == list[0]) # clear array
289
305
  params['checkGroups'] = []
290
306
  else
291
307
  params['checkGroups'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
@@ -314,13 +330,35 @@ class Morpheus::Cli::MonitoringAppsCommand
314
330
  else
315
331
  # merge -O options into normally parsed options
316
332
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
317
- if params['checks']
318
- params['checks'] = params['checks'].collect {|it| it.to_i }
333
+ if params['name'].nil?
334
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'name', 'type' => 'text', 'fieldLabel' => 'Name', 'required' => true, 'description' => 'The name of this alert rule.'}], options[:options])
335
+ params['name'] = v_prompt['name']
319
336
  end
320
- if params['checkGroups']
321
- params['checkGroups'] = params['checkGroups'].collect {|it| it.to_i }
337
+ if params['severity'].nil?
338
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'severity', 'type' => 'text', 'fieldLabel' => 'Severity', 'required' => false, 'description' => 'Max Severity. Determines the maximum severity level this app can incur on an incident when failing. Default is critical', 'defaultValue' => 'critical'}], options[:options])
339
+ params['severity'] = v_prompt['severity'] unless v_prompt['severity'].to_s.empty?
340
+ end
341
+ if params['inUptime'].nil? && params['muted'].nil?
342
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'inUptime', 'type' => 'checkbox', 'fieldLabel' => 'Affects Availability', 'required' => false, 'description' => 'Affects Availability. Default is on.', 'defaultValue' => true}], options[:options])
343
+ params['inUptime'] = v_prompt['inUptime'] unless v_prompt['inUptime'].to_s.empty?
344
+ end
345
+
346
+ # Checks
347
+ prompt_results = prompt_for_checks(params, options, @api_client)
348
+ if prompt_results[:success]
349
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
350
+ else
351
+ return 1
322
352
  end
323
- # todo: prompt?
353
+
354
+ # Check Groups
355
+ prompt_results = prompt_for_check_groups(params, options, @api_client)
356
+ if prompt_results[:success]
357
+ params['checkGroups'] = prompt_results[:data] unless prompt_results[:data].nil?
358
+ else
359
+ return 1
360
+ end
361
+
324
362
  payload = {'monitorApp' => params}
325
363
  end
326
364
  @monitoring_apps_interface.setopts(options)
@@ -363,15 +401,18 @@ class Morpheus::Cli::MonitoringAppsCommand
363
401
  opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
364
402
  params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
365
403
  end
366
- opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of IDs") do |list|
367
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
404
+ opts.on('--muted [on|off]', String, "Muted, Turns Affects Availability off.") do |val|
405
+ params['muted'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
406
+ end
407
+ opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of names or IDs.") do |list|
408
+ if list.size == 1 && ('[]' == list[0]) # clear array
368
409
  params['checks'] = []
369
410
  else
370
411
  params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
371
412
  end
372
413
  end
373
- opts.on('--checkGroups LIST', Array, "Check Groups to include in this app, comma separated list of IDs") do |list|
374
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
414
+ opts.on('--groups LIST', Array, "Check Groups to include in this app, comma separated list of names or IDs.") do |list|
415
+ if list.size == 1 && ('[]' == list[0]) # clear array
375
416
  params['checkGroups'] = []
376
417
  else
377
418
  params['checkGroups'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
@@ -397,13 +438,27 @@ class Morpheus::Cli::MonitoringAppsCommand
397
438
  else
398
439
  # merge -O options into normally parsed options
399
440
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
441
+
442
+ # Checks
400
443
  if params['checks']
401
- params['checks'] = params['checks'].collect {|it| it.to_i }
444
+ prompt_results = prompt_results(params, options, @api_client)
445
+ if prompt_results[:success]
446
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
447
+ else
448
+ return 1
449
+ end
402
450
  end
451
+
452
+ # Check Groups
403
453
  if params['checkGroups']
404
- params['checkGroups'] = params['checkGroups'].collect {|it| it.to_i }
454
+ prompt_results = prompt_for_check_groups(params, options, @api_client)
455
+ if prompt_results[:success]
456
+ params['checkGroups'] = prompt_results[:data] unless prompt_results[:data].nil?
457
+ else
458
+ return 1
459
+ end
405
460
  end
406
- # todo: prompt?
461
+
407
462
  payload = {'monitorApp' => params}
408
463
  end
409
464
  @monitoring_apps_interface.setopts(options)
@@ -427,11 +482,12 @@ class Morpheus::Cli::MonitoringAppsCommand
427
482
 
428
483
  def mute(args)
429
484
  options = {}
430
- params = {'enabled' => true}
485
+ params = {}
431
486
  optparse = Morpheus::Cli::OptionParser.new do |opts|
432
487
  opts.banner = subcommand_usage("[name]")
433
488
  opts.on(nil, "--disable", "Unmute instead, the same as the unmute command") do
434
489
  params['enabled'] = false
490
+ params['muted'] = false
435
491
  end
436
492
  opts.footer = "Mute a monitoring app. This prevents it from creating new incidents." + "\n" +
437
493
  "[name] is required. This is the name or id of a monitoring app."
@@ -477,7 +533,7 @@ class Morpheus::Cli::MonitoringAppsCommand
477
533
 
478
534
  def unmute(args)
479
535
  options = {}
480
- params = {'enabled' => false}
536
+ params = {'muted' => false, 'enabled' => false}
481
537
  optparse = Morpheus::Cli::OptionParser.new do |opts|
482
538
  opts.banner = subcommand_usage("[name]")
483
539
  build_common_options(opts, options, [:payload, :json, :dry_run, :remote, :quiet])
@@ -521,10 +577,11 @@ class Morpheus::Cli::MonitoringAppsCommand
521
577
 
522
578
  def mute_all(args)
523
579
  options = {}
524
- params = {'enabled' => true}
580
+ params = {}
525
581
  optparse = Morpheus::Cli::OptionParser.new do |opts|
526
582
  opts.banner = subcommand_usage()
527
583
  opts.on(nil, "--disable", "Unmute instead, the same as the unmute-all command") do
584
+ params['muted'] = false
528
585
  params['enabled'] = false
529
586
  end
530
587
  opts.footer = "Mute all monitoring apps. This prevents the creation of new incidents."
@@ -569,7 +626,7 @@ class Morpheus::Cli::MonitoringAppsCommand
569
626
 
570
627
  def unmute_all(args)
571
628
  options = {}
572
- params = {'enabled' => false}
629
+ params = {'muted' => false, 'enabled' => false}
573
630
  optparse = Morpheus::Cli::OptionParser.new do |opts|
574
631
  opts.banner = subcommand_usage()
575
632
  build_common_options(opts, options, [:payload, :json, :dry_run, :remote, :quiet])
@@ -614,7 +671,7 @@ class Morpheus::Cli::MonitoringAppsCommand
614
671
  params = {}
615
672
  optparse = Morpheus::Cli::OptionParser.new do |opts|
616
673
  opts.banner = subcommand_usage("[name]")
617
- build_common_options(opts, options, [:json, :dry_run, :quiet])
674
+ build_common_options(opts, options, [:auto_confirm, :json, :dry_run, :quiet, :remote])
618
675
  end
619
676
  optparse.parse!(args)
620
677
  if args.count < 1
@@ -84,6 +84,11 @@ class Morpheus::Cli::MonitoringChecksCommand
84
84
  # opts.on(nil,'--statistics', "Display Statistics") do |val|
85
85
  # options[:show_statistics] = true
86
86
  # end
87
+ opts.on('-a','--all', "Display All Details (History, Notifications)") do
88
+ options[:show_history] = true
89
+ options[:show_notifications] = true
90
+ options[:show_statistics] = true
91
+ end
87
92
  build_common_options(opts, options, [:json, :csv, :fields, :dry_run, :remote])
88
93
  end
89
94
  optparse.parse!(args)
@@ -107,8 +112,11 @@ class Morpheus::Cli::MonitoringChecksCommand
107
112
  print_dry_run @monitoring_checks_interface.dry.get(check['id'])
108
113
  return
109
114
  end
115
+
116
+ # get by ID to sideload associated checks
110
117
  json_response = @monitoring_checks_interface.get(check['id'])
111
118
  check = json_response['check']
119
+
112
120
  if options[:json]
113
121
  puts as_json(json_response, options, 'check')
114
122
  return 0
@@ -164,9 +172,9 @@ class Morpheus::Cli::MonitoringChecksCommand
164
172
 
165
173
  check_groups = json_response["groups"]
166
174
  if check_groups && !check_groups.empty?
167
- print_h2 "Groups"
168
- #print as_pretty_table(check_groups, [:id, :name], options)
169
- print_check_groups_table(check_groups, options)
175
+ print_h2 "Check Groups"
176
+ print as_pretty_table(check_groups, [:id, :name], options)
177
+ #print_check_groups_table(check_groups, options)
170
178
  else
171
179
  # print "\n"
172
180
  # puts "This check is not in any check groups."
@@ -184,18 +192,17 @@ class Morpheus::Cli::MonitoringChecksCommand
184
192
  ## Open Incidents
185
193
 
186
194
  open_incidents = json_response["openIncidents"]
195
+
187
196
  if open_incidents && !open_incidents.empty?
188
197
  print_h2 "Open Incidents"
189
- # puts "\n(table coming soon...)\n"
190
- puts JSON.pretty_generate(open_incidents)
191
- # todo: move this to MonitoringHelper ?
192
- # print_incidents_table(issues, options)
198
+ print_incidents_table(open_incidents)
199
+ # print_results_pagination(size: open_incidents.size, total: open_incidents.size)
193
200
  else
194
201
  print "\n", cyan
195
- puts "No open incidents for this check"
202
+ puts "No open incidents for this monitoring app"
196
203
  end
197
204
 
198
- ## History (plain old Hash)
205
+ ## History
199
206
  if options[:show_history]
200
207
  # history_items = json_response["history"]
201
208
  # gotta go get it
@@ -293,15 +300,12 @@ class Morpheus::Cli::MonitoringChecksCommand
293
300
  def add(args)
294
301
  options = {:skip_booleanize => true}
295
302
  params = {'inUptime' => true, 'severity' => 'critical'}
303
+ check_type_code = nil
296
304
  check_type = nil
297
305
  optparse = Morpheus::Cli::OptionParser.new do |opts|
298
306
  opts.banner = subcommand_usage("[name] -t CODE")
299
- opts.on('-t', '--type CODE', "Check Type Code or ID") do |val|
300
- if val.to_s =~ /\A\d{1,}\Z/
301
- params['checkType'] = {'id' => val.to_i}
302
- else
303
- params['checkType'] = {'code' => val}
304
- end
307
+ opts.on('-t', '--type CODE', "Check Type Code") do |val|
308
+ check_type_code = val
305
309
  end
306
310
  opts.on('--name VALUE', String, "Name") do |val|
307
311
  params['name'] = val
@@ -345,7 +349,36 @@ class Morpheus::Cli::MonitoringChecksCommand
345
349
  payload = options[:payload]
346
350
  else
347
351
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
348
- # todo: load option types based on type and prompt
352
+ # merge in arbitrary option values
353
+ if params['name'].nil?
354
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'name', 'type' => 'text', 'fieldLabel' => 'Name', 'required' => true, 'description' => 'The name of this check.'}], options[:options])
355
+ params['name'] = v_prompt['name']
356
+ end
357
+
358
+ # Check Type
359
+ # rescue pre 3.6.5 error with maxResults.toLong()
360
+ available_check_types = []
361
+ begin
362
+ available_check_types = @monitoring_checks_interface.list_check_types({max:1000})['checkTypes']
363
+ rescue RestClient::Exception => e
364
+ available_check_types = @monitoring_checks_interface.list_check_types({})['checkTypes']
365
+ end
366
+ if available_check_types && available_check_types.size > 0
367
+ options[:options]['type'] = check_type_code if check_type_code
368
+ check_types_dropdown = available_check_types.collect {|it| {'name' => it['name'], 'value' => it['code']} }
369
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'type', 'type' => 'select', 'selectOptions' => check_types_dropdown, 'fieldLabel' => 'Check Type', 'required' => true, 'description' => 'The check type code.'}], options[:options])
370
+ check_type_code = v_prompt['type']
371
+ end
372
+ if check_type_code
373
+ params['checkType'] = {'code' => check_type_code}
374
+ end
375
+
376
+ # todo: load check type optionTypes and prompt accordingly..
377
+
378
+ # include arbitrary -O options
379
+ extra_passed_options = options[:options].reject {|k,v| k.is_a?(Symbol) || ['type'].include?(k)}
380
+ params.deep_merge!(extra_passed_options)
381
+
349
382
  payload = {'check' => params}
350
383
  end
351
384
  @monitoring_checks_interface.setopts(options)
@@ -359,7 +392,7 @@ class Morpheus::Cli::MonitoringChecksCommand
359
392
  elsif !options[:quiet]
360
393
  check = json_response['check']
361
394
  print_green_success "Added check #{check['name']}"
362
- _get(check['id'], {})
395
+ _get(check['id'], options)
363
396
  end
364
397
  return 0
365
398
  rescue RestClient::Exception => e
@@ -425,7 +458,7 @@ class Morpheus::Cli::MonitoringChecksCommand
425
458
  puts as_json(json_response, options)
426
459
  elsif !options[:quiet]
427
460
  print_green_success "Updated check #{check['name']}"
428
- _get(check['id'], {})
461
+ _get(check['id'], options)
429
462
  end
430
463
  return 0
431
464
  rescue RestClient::Exception => e
@@ -437,11 +470,12 @@ class Morpheus::Cli::MonitoringChecksCommand
437
470
 
438
471
  def mute(args)
439
472
  options = {}
440
- params = {'enabled' => true}
473
+ params = {}
441
474
  optparse = Morpheus::Cli::OptionParser.new do |opts|
442
475
  opts.banner = subcommand_usage("[name]")
443
476
  opts.on(nil, "--disable", "Disable mute state instead, the same as unmute") do
444
477
  params['enabled'] = false
478
+ params['muted'] = false
445
479
  end
446
480
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet, :remote])
447
481
  opts.footer = "Mute a check. This prevents it from creating new incidents." + "\n" +
@@ -476,7 +510,7 @@ class Morpheus::Cli::MonitoringChecksCommand
476
510
  else
477
511
  print_green_success "Unmuted check #{check['name']}"
478
512
  end
479
- _get(check['id'], {})
513
+ _get(check['id'], options)
480
514
  end
481
515
  return 0
482
516
  rescue RestClient::Exception => e
@@ -520,7 +554,7 @@ class Morpheus::Cli::MonitoringChecksCommand
520
554
  puts as_json(json_response, options)
521
555
  elsif !options[:quiet]
522
556
  print_green_success "Unmuted check #{check['name']}"
523
- _get(check['id'], {})
557
+ _get(check['id'], options)
524
558
  end
525
559
  return 0
526
560
  rescue RestClient::Exception => e
@@ -531,10 +565,11 @@ class Morpheus::Cli::MonitoringChecksCommand
531
565
 
532
566
  def mute_all(args)
533
567
  options = {}
534
- params = {'enabled' => true}
568
+ params = {}
535
569
  optparse = Morpheus::Cli::OptionParser.new do |opts|
536
570
  opts.banner = subcommand_usage()
537
571
  opts.on(nil, "--disable", "Disable mute state instead, the same as unmute-all") do
572
+ params['muted'] = false
538
573
  params['enabled'] = false
539
574
  end
540
575
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet, :remote])
@@ -579,7 +614,7 @@ class Morpheus::Cli::MonitoringChecksCommand
579
614
 
580
615
  def unmute_all(args)
581
616
  options = {}
582
- params = {'enabled' => false}
617
+ params = {'muted' => false, 'enabled' => false}
583
618
  optparse = Morpheus::Cli::OptionParser.new do |opts|
584
619
  opts.banner = subcommand_usage()
585
620
  build_common_options(opts, options, [:payload, :json, :dry_run, :quiet, :remote])
@@ -624,7 +659,7 @@ class Morpheus::Cli::MonitoringChecksCommand
624
659
  params = {}
625
660
  optparse = Morpheus::Cli::OptionParser.new do |opts|
626
661
  opts.banner = subcommand_usage("[name]")
627
- build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
662
+ build_common_options(opts, options, [:auto_confirm, :json, :dry_run, :quiet, :remote])
628
663
  end
629
664
  optparse.parse!(args)
630
665
  if args.count != 1
@@ -717,8 +752,6 @@ class Morpheus::Cli::MonitoringChecksCommand
717
752
  end
718
753
  end
719
754
 
720
- private
721
-
722
-
755
+ private
723
756
 
724
757
  end