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
@@ -34,7 +34,8 @@ class Morpheus::Cli::MonitoringContactsCommand
34
34
  params = {}
35
35
  optparse = Morpheus::Cli::OptionParser.new do |opts|
36
36
  opts.banner = subcommand_usage()
37
- build_common_options(opts, options, [:list, :query, :json, :csv, :yaml, :fields, :json, :dry_run])
37
+ build_common_options(opts, options, [:list, :query, :json, :csv, :yaml, :fields, :json, :dry_run, :remote])
38
+ opts.footer = "List monitoring contacts."
38
39
  end
39
40
  optparse.parse!(args)
40
41
  connect(options)
@@ -79,7 +80,7 @@ class Morpheus::Cli::MonitoringContactsCommand
79
80
  def get(args)
80
81
  options = {}
81
82
  optparse = Morpheus::Cli::OptionParser.new do |opts|
82
- opts.banner = subcommand_usage("[id list]")
83
+ opts.banner = subcommand_usage("[contact]")
83
84
  opts.on(nil,'--history', "Display History") do |val|
84
85
  options[:show_history] = true
85
86
  end
@@ -87,11 +88,12 @@ class Morpheus::Cli::MonitoringContactsCommand
87
88
  options[:show_notifications] = true
88
89
  end
89
90
  build_common_options(opts, options, [:json, :csv, :fields, :dry_run, :remote])
91
+ opts.footer = "Get details about a monitoring contact." + "\n" +
92
+ "[contact] is required. This is the name or ID of the contact. Supports 1-N [contact] arguments."
90
93
  end
91
94
  optparse.parse!(args)
92
95
  if args.count < 1
93
- puts optparse
94
- exit 1
96
+ raise_command_error "wrong number of arguments, expected 1-N and got (#{args.count}) #{args.join(' ')}\n#{optparse}"
95
97
  end
96
98
  connect(options)
97
99
  id_list = parse_id_list(args)
@@ -109,8 +111,10 @@ class Morpheus::Cli::MonitoringContactsCommand
109
111
  print_dry_run @monitoring_contacts_interface.dry.get(contact['id'])
110
112
  return
111
113
  end
112
- json_response = @monitoring_contacts_interface.get(contact['id'])
113
- contact = json_response['contact']
114
+ # save a request
115
+ # json_response = @monitoring_contacts_interface.get(contact['id'])
116
+ # contact = json_response['contact']
117
+ json_response = {'contact' => contact}
114
118
 
115
119
  if options[:json]
116
120
  puts as_json(json_response, options, "contact")
@@ -130,16 +134,16 @@ class Morpheus::Cli::MonitoringContactsCommand
130
134
  "Name" => 'name',
131
135
  "Email" => 'emailAddress',
132
136
  "Mobile" => 'smsAddress',
133
- # "Slack Hook" => 'slackHook'
137
+ "Slack Hook" => 'slackHook'
134
138
  }
135
- description_cols["Slack Hook"] = 'slackHook' if !contact['slackHook'].empty?
139
+ description_cols.delete("Slack Hook") if contact['slackHook'].to_s.empty?
136
140
  puts as_description_list(contact, description_cols)
137
141
 
138
142
  ## Notifications
139
143
  # show notify events here...
140
144
 
141
- print reset,"\n"
142
-
145
+ print reset
146
+ return 0
143
147
  rescue RestClient::Exception => e
144
148
  print_rest_exception(e, options)
145
149
  exit 1
@@ -163,19 +167,36 @@ class Morpheus::Cli::MonitoringContactsCommand
163
167
  opts.on("--slackHook STRING", String, "Contact slack hook") do |val|
164
168
  params['slackHook'] = val == 'null' ? nil : val
165
169
  end
166
- build_common_options(opts, options, [:json, :dry_run, :quiet])
170
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet, :remote])
171
+ opts.footer = "Create a monitoring contact." + "\n" +
172
+ "[name] is required. This is the name of the new contact."
167
173
  end
168
174
  optparse.parse!(args)
169
175
  connect(options)
170
-
176
+ if args.count > 1
177
+ raise_command_error "wrong number of arguments, expected 0-1 and got (#{args.count}) #{args.join(' ')}\n#{optparse}"
178
+ end
179
+ if args[0]
180
+ params['name'] = args[0]
181
+ end
171
182
  begin
172
-
173
- if !params["name"]
174
- print_red_alert "Name is required"
175
- puts optparse
176
- exit 1
183
+ params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
184
+ if params['name'].nil?
185
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'name', 'type' => 'text', 'fieldLabel' => 'Name', 'required' => true, 'description' => 'The name of this contact.'}], options[:options])
186
+ params['name'] = v_prompt['name']
177
187
  end
178
-
188
+ if params['emailAddress'].nil?
189
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'emailAddress', 'type' => 'text', 'fieldLabel' => 'Email', 'required' => false, 'description' => 'Contact email address.'}], options[:options])
190
+ params['emailAddress'] = v_prompt['emailAddress'] unless v_prompt['emailAddress'].to_s.empty?
191
+ end
192
+ if params['smsAddress'].nil?
193
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'smsAddress', 'type' => 'text', 'fieldLabel' => 'Mobile', 'required' => false, 'description' => 'Contact sms address, or phone number.'}], options[:options])
194
+ params['smsAddress'] = v_prompt['smsAddress'] unless v_prompt['smsAddress'].to_s.empty?
195
+ end
196
+ # if params['slackHook'].nil?
197
+ # v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'slackHook', 'type' => 'text', 'fieldLabel' => 'Slack Hook', 'required' => false, 'description' => 'Contact slack hook.'}], options[:options])
198
+ # params['slackHook'] = v_prompt['slackHook'] unless v_prompt['slackHook'].to_s.empty?
199
+ # end
179
200
  payload = {
180
201
  'contact' => {}
181
202
  }
@@ -192,7 +213,7 @@ class Morpheus::Cli::MonitoringContactsCommand
192
213
  puts as_json(json_response, options)
193
214
  elsif !options[:quiet]
194
215
  print_green_success "Created contact (#{contact['id']}) #{contact['name']}"
195
- #_get(contact['id'], {})
216
+ #_get(contact['id'], options)
196
217
  end
197
218
 
198
219
  rescue RestClient::Exception => e
@@ -205,7 +226,7 @@ class Morpheus::Cli::MonitoringContactsCommand
205
226
  options = {}
206
227
  params = {}
207
228
  optparse = Morpheus::Cli::OptionParser.new do |opts|
208
- opts.banner = subcommand_usage("[id]")
229
+ opts.banner = subcommand_usage("[contact]")
209
230
  opts.on("--name STRING", String, "Contact name") do |val|
210
231
  params['name'] = val
211
232
  end
@@ -218,12 +239,13 @@ class Morpheus::Cli::MonitoringContactsCommand
218
239
  opts.on("--slackHook STRING", String, "Contact slack hook") do |val|
219
240
  params['slackHook'] = val == 'null' ? nil : val
220
241
  end
221
- build_common_options(opts, options, [:json, :dry_run, :quiet])
242
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet, :remote])
243
+ opts.footer = "Update a monitoring contact." + "\n" +
244
+ "[contact] is required. This is the name or ID of the contact."
222
245
  end
223
246
  optparse.parse!(args)
224
- if args.count < 1
225
- puts optparse
226
- exit 1
247
+ if args.count != 1
248
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args.join(' ')}\n#{optparse}"
227
249
  end
228
250
  connect(options)
229
251
 
@@ -247,11 +269,12 @@ class Morpheus::Cli::MonitoringContactsCommand
247
269
  end
248
270
 
249
271
  json_response = @monitoring_contacts_interface.update(contact["id"], payload)
272
+ contact = json_response['contact']
250
273
  if options[:json]
251
274
  puts as_json(json_response, options)
252
275
  elsif !options[:quiet]
253
- print_green_success "Updated contact #{contact['id']}"
254
- _get(contact['id'], {})
276
+ print_green_success "Updated contact (#{contact['id']}) #{contact['name']}"
277
+ _get(contact['id'], options)
255
278
  end
256
279
 
257
280
  rescue RestClient::Exception => e
@@ -264,17 +287,18 @@ class Morpheus::Cli::MonitoringContactsCommand
264
287
  def remove(args)
265
288
  options = {}
266
289
  optparse = Morpheus::Cli::OptionParser.new do |opts|
267
- opts.banner = subcommand_usage("[id list]")
290
+ opts.banner = subcommand_usage("[contact]")
268
291
  build_common_options(opts, options, [:auto_confirm, :quiet, :json, :dry_run, :remote])
292
+ opts.footer = "Delete a monitoring contact." + "\n" +
293
+ "[contact] is required. This is the name or ID of the contact. Supports 1-N [contact] arguments."
269
294
  end
270
295
  optparse.parse!(args)
271
296
  if args.count < 1
272
- puts optparse
273
- exit 1
297
+ raise_command_error "wrong number of arguments, expected 1-N and got (#{args.count}) #{args.join(' ')}\n#{optparse}"
274
298
  end
275
299
  connect(options)
276
300
  id_list = parse_id_list(args)
277
- unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to delete contact #{id_list.size == 1 ? 'contact' : 'contacts'} #{anded_list(id_list)}?", options)
301
+ unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to delete #{id_list.size == 1 ? 'contact' : 'contacts'} #{anded_list(id_list)}?", options)
278
302
  exit 1
279
303
  end
280
304
  return run_command_for_each_arg(id_list) do |arg|
@@ -303,55 +327,6 @@ class Morpheus::Cli::MonitoringContactsCommand
303
327
  end
304
328
  end
305
329
 
306
- def reopen(args)
307
- options = {}
308
- optparse = Morpheus::Cli::OptionParser.new do |opts|
309
- opts.banner = subcommand_usage("[id list]")
310
- build_common_options(opts, options, [:auto_confirm, :quiet, :json, :dry_run, :remote])
311
- end
312
- optparse.parse!(args)
313
- if args.count < 1
314
- puts optparse
315
- exit 1
316
- end
317
- connect(options)
318
- id_list = parse_id_list(args)
319
- unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to reopen #{id_list.size == 1 ? 'contact' : 'contacts'} #{anded_list(id_list)}?", options)
320
- exit 1
321
- end
322
- return run_command_for_each_arg(id_list) do |arg|
323
- _reopen(arg, options)
324
- end
325
- end
326
-
327
- def _reopen(id, options)
328
-
329
- begin
330
- contact = find_contact_by_name_or_id(id)
331
- already_open = contact['status'] == 'open'
332
- if already_open
333
- print bold,yellow,"contact #{contact['id']} is already open",reset,"\n"
334
- return false
335
- end
336
- @monitoring_contacts_interface.setopts(options)
337
- if options[:dry_run]
338
- print_dry_run @monitoring_contacts_interface.dry.reopen(contact['id'])
339
- return
340
- end
341
- json_response = @monitoring_contacts_interface.reopen(contact['id'])
342
- if options[:json]
343
- print JSON.pretty_generate(json_response)
344
- print "\n"
345
- elsif !options[:quiet]
346
- print_green_success json_response["msg"] || "contact #{contact['id']} is now open"
347
- # _get(contact['id'] {})
348
- end
349
- rescue RestClient::Exception => e
350
- print_rest_exception(e, options)
351
- exit 1
352
- end
353
- end
354
-
355
330
  private
356
331
 
357
332
  def print_contacts_table(contacts, opts={})
@@ -83,6 +83,11 @@ class Morpheus::Cli::MonitoringGroupsCommand
83
83
  # opts.on(nil,'--statistics', "Display Statistics") do |val|
84
84
  # options[:show_statistics] = true
85
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
86
91
  build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
87
92
  end
88
93
  optparse.parse!(args)
@@ -106,8 +111,10 @@ class Morpheus::Cli::MonitoringGroupsCommand
106
111
  print_dry_run @monitoring_groups_interface.dry.get(check_group['id'])
107
112
  return
108
113
  end
114
+ # get by ID to sideload associated checks
109
115
  json_response = @monitoring_groups_interface.get(check_group['id'])
110
116
  check_group = json_response['checkGroup']
117
+
111
118
  if options[:json]
112
119
  puts as_json(json_response, options, "checkGroup")
113
120
  return 0
@@ -145,8 +152,8 @@ class Morpheus::Cli::MonitoringGroupsCommand
145
152
  # print as_pretty_table(check_groups, [:id, {"Check Group" => :name}], options)
146
153
  print_checks_table(checks, options)
147
154
  else
148
- # print "\n"
149
- # puts "No checks found..."
155
+ print "\n", yellow
156
+ puts "No Checks"
150
157
  end
151
158
 
152
159
  ## Open Incidents
@@ -157,8 +164,8 @@ class Morpheus::Cli::MonitoringGroupsCommand
157
164
  print_incidents_table(open_incidents)
158
165
  # print_results_pagination(size: open_incidents.size, total: open_incidents.size)
159
166
  else
160
- print "\n", cyan
161
- puts "No open incidents for this check group"
167
+ # print "\n", cyan
168
+ # puts "No open incidents for this check group"
162
169
  end
163
170
 
164
171
  ## History (plain old Hash)
@@ -170,7 +177,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
170
177
  issues = history_items
171
178
  if history_items && !history_items.empty?
172
179
  print_h2 "History"
173
- print_check_history_table(history_items, options)
180
+ print_check_group_history_table(history_items, options)
174
181
  print_results_pagination(history_json_response, {:label => "event", :n_label => "events"})
175
182
  else
176
183
  print "\n"
@@ -241,7 +248,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
241
248
  if history_items.empty?
242
249
  print cyan,"No history found.",reset,"\n"
243
250
  else
244
- print_check_history_table(history_items, options)
251
+ print_check_group_history_table(history_items, options)
245
252
  print_results_pagination(json_response, {:label => "event", :n_label => "events"})
246
253
  end
247
254
  print reset,"\n"
@@ -253,7 +260,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
253
260
 
254
261
  def add(args)
255
262
  options = {}
256
- params = {'inUptime' => true, 'severity' => 'critical'}
263
+ params = {}
257
264
  optparse = Morpheus::Cli::OptionParser.new do |opts|
258
265
  opts.banner = subcommand_usage("[name]")
259
266
  opts.on('--name VALUE', String, "Name") do |val|
@@ -266,13 +273,13 @@ class Morpheus::Cli::MonitoringGroupsCommand
266
273
  params['minHappy'] = val.to_i
267
274
  end
268
275
  opts.on('--severity VALUE', String, "Max Severity. Determines the maximum severity level this group can incur on an incident when failing. Default is critical") do |val|
269
- params['severity'] = val
276
+ params['severity'] = val.to_s.downcase
270
277
  end
271
278
  opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
272
279
  params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
273
280
  end
274
- opts.on('--checks LIST', Array, "Checks to include in this group, comma separated list of IDs") do |list|
275
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
281
+ opts.on('--checks LIST', Array, "Checks to include in this group, comma separated list of names or IDs.") do |list|
282
+ if list.size == 1 && ('[]' == list[0]) # clear array
276
283
  params['checks'] = []
277
284
  else
278
285
  params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
@@ -301,9 +308,35 @@ class Morpheus::Cli::MonitoringGroupsCommand
301
308
  else
302
309
  # merge -O options into normally parsed options
303
310
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
304
- if params['checks']
305
- params['checks'] = params['checks'].collect {|it| it.to_i }
311
+ if params['name'].nil?
312
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'name', 'type' => 'text', 'fieldLabel' => 'Name', 'required' => true, 'description' => 'The name of this contact.'}], options[:options])
313
+ params['name'] = v_prompt['name']
314
+ end
315
+ if params['description'].nil?
316
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'description', 'type' => 'text', 'fieldLabel' => 'Description', 'required' => false, 'description' => 'Contact email address.'}], options[:options])
317
+ params['description'] = v_prompt['description'] unless v_prompt['description'].to_s.empty?
318
+ end
319
+ if params['minHappy'].nil?
320
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'minHappy', 'type' => 'text', 'fieldLabel' => 'Min. Checks', 'required' => false, 'description' => 'Min Checks. This specifies the minimum number of checks within the group that must be happy to keep the group from becoming unhealthy.', 'defaultValue' => 1}], options[:options])
321
+ params['minHappy'] = v_prompt['minHappy'] unless v_prompt['minHappy'].to_s.empty?
322
+ end
323
+ if params['severity'].nil?
324
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'severity', 'type' => 'text', 'fieldLabel' => 'Severity', 'required' => false, 'description' => 'Max Severity. Determines the maximum severity level this group can incur on an incident when failing. Default is critical', 'defaultValue' => 'critical'}], options[:options])
325
+ params['severity'] = v_prompt['severity'] unless v_prompt['severity'].to_s.empty?
306
326
  end
327
+ if params['inUptime'].nil?
328
+ 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])
329
+ params['inUptime'] = v_prompt['inUptime'] unless v_prompt['inUptime'].to_s.empty?
330
+ end
331
+
332
+ # Checks
333
+ prompt_results = prompt_for_checks(params, options, @api_client)
334
+ if prompt_results[:success]
335
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
336
+ else
337
+ return 1
338
+ end
339
+
307
340
  # todo: prompt?
308
341
  payload = {'checkGroup' => params}
309
342
  end
@@ -318,7 +351,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
318
351
  elsif !options[:quiet]
319
352
  check_group = json_response['checkGroup']
320
353
  print_green_success "Added check group #{check_group['name']}"
321
- _get(check_group['id'], {})
354
+ _get(check_group['id'], options)
322
355
  end
323
356
  return 0
324
357
  rescue RestClient::Exception => e
@@ -348,8 +381,8 @@ class Morpheus::Cli::MonitoringGroupsCommand
348
381
  opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
349
382
  params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
350
383
  end
351
- opts.on('--checks LIST', Array, "Checks to include in this group, comma separated list of IDs") do |list|
352
- if list.size == 1 && list[0] == 'null' # hacky way to clear it
384
+ opts.on('--checks LIST', Array, "Checks to include in this group, comma separated list of names or IDs.") do |list|
385
+ if list.size == 1 && ('[]' == list[0]) # clear array
353
386
  params['checks'] = []
354
387
  else
355
388
  params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
@@ -375,10 +408,15 @@ class Morpheus::Cli::MonitoringGroupsCommand
375
408
  else
376
409
  # merge -O options into normally parsed options
377
410
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
411
+ # Checks
378
412
  if params['checks']
379
- params['checks'] = params['checks'].collect {|it| it.to_i }
413
+ prompt_results = prompt_for_checks(params, options, @api_client)
414
+ if prompt_results[:success]
415
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
416
+ else
417
+ return 1
418
+ end
380
419
  end
381
- # todo: prompt?
382
420
  payload = {'checkGroup' => params}
383
421
  end
384
422
  @monitoring_groups_interface.setopts(options)
@@ -391,7 +429,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
391
429
  puts as_json(json_response, options)
392
430
  elsif !options[:quiet]
393
431
  print_green_success "Updated check group #{check_group['name']}"
394
- _get(check_group['id'], {})
432
+ _get(check_group['id'], options)
395
433
  end
396
434
  return 0
397
435
  rescue RestClient::Exception => e
@@ -441,7 +479,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
441
479
  else
442
480
  print_green_success "Unmuted group #{check_group['name']}"
443
481
  end
444
- _get(monitor_app['id'], {})
482
+ _get(check_group['id'], options)
445
483
  end
446
484
  return 0
447
485
  rescue RestClient::Exception => e
@@ -485,7 +523,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
485
523
  puts as_json(json_response, options)
486
524
  elsif !options[:quiet]
487
525
  print_green_success "Unmuted group #{check_group['name']}"
488
- _get(check_group['id'], {})
526
+ _get(check_group['id'], options)
489
527
  end
490
528
  return 0
491
529
  rescue RestClient::Exception => e
@@ -496,10 +534,11 @@ class Morpheus::Cli::MonitoringGroupsCommand
496
534
 
497
535
  def mute_all(args)
498
536
  options = {}
499
- params = {'enabled' => true}
537
+ params = {}
500
538
  optparse = Morpheus::Cli::OptionParser.new do |opts|
501
539
  opts.banner = subcommand_usage()
502
540
  opts.on(nil, "--disable", "Disable mute, the same as unmute-all") do
541
+ params['muted'] = false
503
542
  params['enabled'] = false
504
543
  end
505
544
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
@@ -544,7 +583,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
544
583
 
545
584
  def unmute_all(args)
546
585
  options = {}
547
- params = {'enabled' => false}
586
+ params = {'muted' => false, 'enabled' => false}
548
587
  optparse = Morpheus::Cli::OptionParser.new do |opts|
549
588
  opts.banner = subcommand_usage()
550
589
  build_common_options(opts, options, [:payload, :json, :dry_run, :remote, :quiet])
@@ -589,7 +628,7 @@ class Morpheus::Cli::MonitoringGroupsCommand
589
628
  params = {}
590
629
  optparse = Morpheus::Cli::OptionParser.new do |opts|
591
630
  opts.banner = subcommand_usage("[name]")
592
- build_common_options(opts, options, [:json, :dry_run, :quiet])
631
+ build_common_options(opts, options, [:auto_confirm, :json, :dry_run, :quiet, :remote])
593
632
  end
594
633
  optparse.parse!(args)
595
634
  if args.count < 1