morpheus-cli 3.5.1.1 → 3.5.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -342,7 +342,7 @@ class Morpheus::Cli::ImageBuilderCommand
342
342
  opts.on('--keepResults VALUE', String, "Keep only the most recent builds. Older executions will be deleted along with their associated Virtual Images. The value 0 disables this functionality.") do |val|
343
343
  options['keepResults'] = val.to_i
344
344
  end
345
- build_common_options(opts, options, [:options, :json, :dry_run, :quiet])
345
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet])
346
346
  end
347
347
  optparse.parse!(args)
348
348
  if args.count > 1
@@ -351,20 +351,29 @@ class Morpheus::Cli::ImageBuilderCommand
351
351
  end
352
352
  connect(options)
353
353
  begin
354
- options.merge!(options[:options]) if options[:options] # so -O var= works..
354
+ payload = nil
355
+ if options[:payload]
356
+ payload = options[:payload]
357
+ # support options top of --payload
358
+ options.merge!(options[:options]) if options[:options] # so -O var= works..
359
+ option_params = options.reject {|k,v| k.is_a?(Symbol) }
360
+ payload.deep_merge!({'imageBuild' => option_params}) unless option_params.empty?
361
+ else
362
+ options.merge!(options[:options]) if options[:options] # so -O var= works..
363
+
364
+ # use the -g GROUP or active group by default
365
+ # options['group'] ||= @active_group_id
366
+
367
+ # support first arg as name instead of --name
368
+ if args[0] && !options['name']
369
+ options['name'] = args[0]
370
+ end
355
371
 
356
- # use the -g GROUP or active group by default
357
- # options['group'] ||= @active_group_id
358
-
359
- # support first arg as name instead of --name
360
- if args[0] && !options['name']
361
- options['name'] = args[0]
372
+ image_build_payload = prompt_new_image_build(options)
373
+ return 1 if !image_build_payload
374
+ payload = {'imageBuild' => image_build_payload}
362
375
  end
363
376
 
364
- image_build_payload = prompt_new_image_build(options)
365
- return 1 if !image_build_payload
366
- payload = {'imageBuild' => image_build_payload}
367
-
368
377
  if options[:dry_run]
369
378
  print_dry_run @image_builds_interface.dry.create(payload)
370
379
  return
@@ -461,7 +470,7 @@ class Morpheus::Cli::ImageBuilderCommand
461
470
  # 0 disables it
462
471
  # options['deleteOldResults'] = (options['keepResults'] > 0)
463
472
  end
464
- build_common_options(opts, options, [:options, :json, :dry_run, :quiet])
473
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :quiet])
465
474
  end
466
475
  optparse.parse!(args)
467
476
  if args.count != 1
@@ -472,9 +481,20 @@ class Morpheus::Cli::ImageBuilderCommand
472
481
  begin
473
482
  image_build = find_image_build_by_name_or_id(args[0])
474
483
  return 1 if !image_build
475
- image_build_payload = prompt_edit_image_build(image_build, options)
476
- return 1 if !image_build_payload
477
- payload = {imageBuild: image_build_payload}
484
+ payload = nil
485
+ if options[:payload]
486
+ payload = options[:payload]
487
+ # support options top of --payload
488
+ options.merge!(options[:options]) if options[:options] # so -O var= works..
489
+ option_params = options.reject {|k,v| k.is_a?(Symbol) }
490
+ payload.deep_merge!({'imageBuild' => option_params}) unless option_params.empty?
491
+ else
492
+ options.merge!(options[:options]) if options[:options] # so -O var= works..
493
+ image_build_payload = prompt_edit_image_build(image_build, options)
494
+ return 1 if !image_build_payload
495
+ payload = {'imageBuild' => image_build_payload}
496
+ end
497
+
478
498
  if options[:dry_run]
479
499
  print_dry_run @image_builds_interface.dry.update(image_build["id"], payload)
480
500
  return
@@ -58,7 +58,7 @@ class Morpheus::Cli::PoliciesCommand
58
58
  opts.on( '-G', '--global', "Global policies only" ) do
59
59
  params[:global] = true
60
60
  end
61
- build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :json, :dry_run, :remote])
61
+ build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
62
62
  opts.footer = "List policies."
63
63
  end
64
64
  optparse.parse!(args)
@@ -390,7 +390,8 @@ class Morpheus::Cli::PoliciesCommand
390
390
  return 1
391
391
  end
392
392
  # payload['policy']['policyTypeId'] = policy_type['id']
393
- payload['policy']['policyType'] = {'id' => policy_type['id']}
393
+ # payload['policy']['policyType'] = {'id' => policy_type['id']}
394
+ payload['policy']['policyType'] = {'code' => policy_type['code']}
394
395
 
395
396
  # Scope
396
397
  if user
@@ -692,7 +693,7 @@ class Morpheus::Cli::PoliciesCommand
692
693
  options = {}
693
694
  optparse = Morpheus::Cli::OptionParser.new do |opts|
694
695
  opts.banner = subcommand_usage()
695
- build_common_options(opts, options, [:json, :dry_run, :remote])
696
+ build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
696
697
  opts.footer = "List policy types."
697
698
  end
698
699
  optparse.parse!(args)
@@ -712,7 +713,14 @@ class Morpheus::Cli::PoliciesCommand
712
713
  json_response = @policies_interface.list_policy_types()
713
714
  policy_types = json_response['policyTypes']
714
715
  if options[:json]
715
- puts as_json(json_response)
716
+ puts as_json(json_response, options, "policyTypes")
717
+ return 0
718
+ elsif options[:yaml]
719
+ puts as_yaml(json_response, options, "policyTypes")
720
+ return 0
721
+ elsif options[:csv]
722
+ puts records_as_csv(policy_types, options)
723
+ return 0
716
724
  else
717
725
  print_h1 "Morpheus Policy Types"
718
726
  rows = policy_types.collect {|policy_type|
@@ -1,13 +1,9 @@
1
1
  require 'morpheus/cli/cli_command'
2
2
 
3
- class Morpheus::Cli::PowerSchedulingCommand
3
+ class Morpheus::Cli::PowerSchedulesCommand
4
4
  include Morpheus::Cli::CliCommand
5
5
  # include Morpheus::Cli::ProvisioningHelper
6
-
7
- # this is the only type of schedule right now
8
- #set_command_name :'schedules'
9
- #set_command_name :'scheduling'
10
- set_command_name :'power-scheduling'
6
+ set_command_name :'power-schedules'
11
7
 
12
8
  register_subcommands :list, :get, :add, :update, :remove
13
9
  register_subcommands :'add-instances' => :add_instances
@@ -17,7 +13,7 @@ class Morpheus::Cli::PowerSchedulingCommand
17
13
 
18
14
  def connect(opts)
19
15
  @api_client = establish_remote_appliance_connection(opts)
20
- @power_scheduling_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).power_scheduling
16
+ @power_schedules_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).power_schedules
21
17
  @instances_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instances
22
18
  @servers_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).servers
23
19
  end
@@ -38,21 +34,21 @@ class Morpheus::Cli::PowerSchedulingCommand
38
34
  begin
39
35
  params.merge!(parse_list_options(options))
40
36
  if options[:dry_run]
41
- print_dry_run @power_scheduling_interface.dry.list(params)
37
+ print_dry_run @power_schedules_interface.dry.list(params)
42
38
  return
43
39
  end
44
- json_response = @power_scheduling_interface.list(params)
40
+ json_response = @power_schedules_interface.list(params)
45
41
  if options[:json]
46
- puts as_json(json_response, options, "powerScheduleTypes")
42
+ puts as_json(json_response, options, "schedules")
47
43
  return 0
48
44
  elsif options[:csv]
49
- puts records_as_csv(json_response['powerScheduleTypes'], options)
45
+ puts records_as_csv(json_response['schedules'], options)
50
46
  return 0
51
47
  elsif options[:yaml]
52
- puts as_yaml(json_response, options, "powerScheduleTypes")
48
+ puts as_yaml(json_response, options, "schedules")
53
49
  return 0
54
50
  end
55
- schedules = json_response['powerScheduleTypes']
51
+ schedules = json_response['schedules']
56
52
  title = "Morpheus Power Schedules"
57
53
  subtitles = []
58
54
  subtitles += parse_list_subtitles(options)
@@ -107,18 +103,18 @@ class Morpheus::Cli::PowerSchedulingCommand
107
103
  return 1
108
104
  end
109
105
  if options[:dry_run]
110
- print_dry_run @power_scheduling_interface.dry.get(schedule['id'])
106
+ print_dry_run @power_schedules_interface.dry.get(schedule['id'])
111
107
  return
112
108
  end
113
- json_response = @power_scheduling_interface.get(schedule['id'])
114
- schedule = json_response['powerScheduleType']
109
+ json_response = @power_schedules_interface.get(schedule['id'])
110
+ schedule = json_response['schedule']
115
111
  instances = json_response['instances'] || []
116
112
  servers = json_response['servers'] || []
117
113
  if options[:json]
118
- puts as_json(json_response, options, "powerScheduleType")
114
+ puts as_json(json_response, options, "schedule")
119
115
  return 0
120
116
  elsif options[:yaml]
121
- puts as_yaml(json_response, options, "powerScheduleType")
117
+ puts as_yaml(json_response, options, "schedule")
122
118
  return 0
123
119
  elsif options[:csv]
124
120
  puts records_as_csv([json_response['schedule']], options)
@@ -236,10 +232,10 @@ class Morpheus::Cli::PowerSchedulingCommand
236
232
  payload = {'schedule' => params}
237
233
  end
238
234
  if options[:dry_run]
239
- print_dry_run @power_scheduling_interface.dry.create(payload)
235
+ print_dry_run @power_schedules_interface.dry.create(payload)
240
236
  return
241
237
  end
242
- json_response = @power_scheduling_interface.create(payload)
238
+ json_response = @power_schedules_interface.create(payload)
243
239
  if options[:json]
244
240
  puts as_json(json_response, options)
245
241
  elsif !options[:quiet]
@@ -311,13 +307,13 @@ class Morpheus::Cli::PowerSchedulingCommand
311
307
  else
312
308
  # merge -O options into normally parsed options
313
309
  params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
314
- payload = {'powerScheduleType' => params}
310
+ payload = {'schedule' => params}
315
311
  end
316
312
  if options[:dry_run]
317
- print_dry_run @power_scheduling_interface.dry.update(schedule["id"], payload)
313
+ print_dry_run @power_schedules_interface.dry.update(schedule["id"], payload)
318
314
  return
319
315
  end
320
- json_response = @power_scheduling_interface.update(schedule["id"], payload)
316
+ json_response = @power_schedules_interface.update(schedule["id"], payload)
321
317
  if options[:json]
322
318
  puts as_json(json_response, options)
323
319
  elsif !options[:quiet]
@@ -356,17 +352,17 @@ class Morpheus::Cli::PowerSchedulingCommand
356
352
  end
357
353
 
358
354
  # payload = {
359
- # 'powerScheduleType' => {id: schedule["id"]}
355
+ # 'schedule' => {id: schedule["id"]}
360
356
  # }
361
- # payload['powerScheduleType'].merge!(schedule)
357
+ # payload['schedule'].merge!(schedule)
362
358
  payload = params
363
359
 
364
360
  if options[:dry_run]
365
- print_dry_run @power_scheduling_interface.dry.destroy(schedule["id"])
361
+ print_dry_run @power_schedules_interface.dry.destroy(schedule["id"])
366
362
  return
367
363
  end
368
364
 
369
- json_response = @power_scheduling_interface.destroy(schedule["id"])
365
+ json_response = @power_schedules_interface.destroy(schedule["id"])
370
366
  if options[:json]
371
367
  puts as_json(json_response, options)
372
368
  elsif !options[:quiet]
@@ -416,10 +412,10 @@ class Morpheus::Cli::PowerSchedulingCommand
416
412
  payload = {'instances' => instances.collect {|it| it['id'] } }
417
413
  end
418
414
  if options[:dry_run]
419
- print_dry_run @power_scheduling_interface.dry.add_instances(schedule["id"], payload)
415
+ print_dry_run @power_schedules_interface.dry.add_instances(schedule["id"], payload)
420
416
  return 0
421
417
  end
422
- json_response = @power_scheduling_interface.add_instances(schedule["id"], payload)
418
+ json_response = @power_schedules_interface.add_instances(schedule["id"], payload)
423
419
  if options[:json]
424
420
  puts as_json(json_response, options)
425
421
  elsif !options[:quiet]
@@ -474,10 +470,10 @@ class Morpheus::Cli::PowerSchedulingCommand
474
470
  payload = {'instances' => instances.collect {|it| it['id'] } }
475
471
  end
476
472
  if options[:dry_run]
477
- print_dry_run @power_scheduling_interface.dry.remove_instances(schedule["id"], payload)
473
+ print_dry_run @power_schedules_interface.dry.remove_instances(schedule["id"], payload)
478
474
  return 0
479
475
  end
480
- json_response = @power_scheduling_interface.remove_instances(schedule["id"], payload)
476
+ json_response = @power_schedules_interface.remove_instances(schedule["id"], payload)
481
477
  if options[:json]
482
478
  puts as_json(json_response, options)
483
479
  elsif !options[:quiet]
@@ -532,10 +528,10 @@ class Morpheus::Cli::PowerSchedulingCommand
532
528
  payload = {'servers' => servers.collect {|it| it['id'] } }
533
529
  end
534
530
  if options[:dry_run]
535
- print_dry_run @power_scheduling_interface.dry.add_servers(schedule["id"], payload)
531
+ print_dry_run @power_schedules_interface.dry.add_servers(schedule["id"], payload)
536
532
  return 0
537
533
  end
538
- json_response = @power_scheduling_interface.add_servers(schedule["id"], payload)
534
+ json_response = @power_schedules_interface.add_servers(schedule["id"], payload)
539
535
  if options[:json]
540
536
  puts as_json(json_response, options)
541
537
  elsif !options[:quiet]
@@ -590,10 +586,10 @@ class Morpheus::Cli::PowerSchedulingCommand
590
586
  payload = {'servers' => servers.collect {|it| it['id'] } }
591
587
  end
592
588
  if options[:dry_run]
593
- print_dry_run @power_scheduling_interface.dry.remove_servers(schedule["id"], payload)
589
+ print_dry_run @power_schedules_interface.dry.remove_servers(schedule["id"], payload)
594
590
  return 0
595
591
  end
596
- json_response = @power_scheduling_interface.remove_servers(schedule["id"], payload)
592
+ json_response = @power_schedules_interface.remove_servers(schedule["id"], payload)
597
593
  if options[:json]
598
594
  puts as_json(json_response, options)
599
595
  elsif !options[:quiet]
@@ -624,8 +620,8 @@ class Morpheus::Cli::PowerSchedulingCommand
624
620
 
625
621
  def find_schedule_by_id(id)
626
622
  begin
627
- json_response = @power_scheduling_interface.get(id.to_i)
628
- return json_response['powerScheduleType']
623
+ json_response = @power_schedules_interface.get(id.to_i)
624
+ return json_response['schedule']
629
625
  rescue RestClient::Exception => e
630
626
  if e.response && e.response.code == 404
631
627
  print_red_alert "Power Schedule not found by id #{id}"
@@ -636,7 +632,7 @@ class Morpheus::Cli::PowerSchedulingCommand
636
632
  end
637
633
 
638
634
  def find_schedule_by_name(name)
639
- schedules = @power_scheduling_interface.list({name: name.to_s})['powerScheduleTypes']
635
+ schedules = @power_schedules_interface.list({name: name.to_s})['schedules']
640
636
  if schedules.empty?
641
637
  print_red_alert "Power Schedule not found by name #{name}"
642
638
  return nil
@@ -335,6 +335,7 @@ class Morpheus::Cli::Shell
335
335
  end
336
336
 
337
337
  def execute_command(input)
338
+
338
339
  #Morpheus::Logging::DarkPrinter.puts "Shell command: #{input}"
339
340
  input = input.to_s.strip
340
341
 
@@ -529,6 +530,7 @@ class Morpheus::Cli::Shell
529
530
  return Morpheus::Cli::SourceCommand.new.handle(input.split[1..-1])
530
531
  end
531
532
  cmd_result = nil
533
+ @return_to_log_level = Morpheus::Logging.log_level
532
534
  begin
533
535
  argv = Shellwords.shellsplit(input)
534
536
  cmd_name = argv[0]
@@ -553,12 +555,12 @@ class Morpheus::Cli::Shell
553
555
  @history_logger.error "#{e.message}" if @history_logger
554
556
  cmd_result = Morpheus::Cli::ErrorHandler.new(my_terminal.stderr).handle_error(e) # lol
555
557
  # exit 1
556
- end
557
-
558
- if @return_to_log_level
559
- Morpheus::Logging.set_log_level(@return_to_log_level)
560
- ::RestClient.log = Morpheus::Logging.debug? ? Morpheus::Logging::DarkPrinter.instance : nil
561
- @return_to_log_level = nil
558
+ ensure
559
+ if @return_to_log_level
560
+ Morpheus::Logging.set_log_level(@return_to_log_level)
561
+ ::RestClient.log = Morpheus::Logging.debug? ? Morpheus::Logging::DarkPrinter.instance : nil
562
+ @return_to_log_level = nil
563
+ end
562
564
  end
563
565
 
564
566
  # commands should be a number or nil (treated as 0)
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "3.5.1.1"
4
+ VERSION = "3.5.1.2"
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: 3.5.1.1
4
+ version: 3.5.1.2
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: 2018-09-19 00:00:00.000000000 Z
14
+ date: 2018-09-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -173,6 +173,7 @@ files:
173
173
  - lib/morpheus/api/dashboard_interface.rb
174
174
  - lib/morpheus/api/deploy_interface.rb
175
175
  - lib/morpheus/api/deployments_interface.rb
176
+ - lib/morpheus/api/execute_schedules_interface.rb
176
177
  - lib/morpheus/api/group_policies_interface.rb
177
178
  - lib/morpheus/api/groups_interface.rb
178
179
  - lib/morpheus/api/image_builder_boot_scripts_interface.rb
@@ -209,7 +210,7 @@ files:
209
210
  - lib/morpheus/api/options_interface.rb
210
211
  - lib/morpheus/api/packages_interface.rb
211
212
  - lib/morpheus/api/policies_interface.rb
212
- - lib/morpheus/api/power_scheduling_interface.rb
213
+ - lib/morpheus/api/power_schedules_interface.rb
213
214
  - lib/morpheus/api/provision_types_interface.rb
214
215
  - lib/morpheus/api/roles_interface.rb
215
216
  - lib/morpheus/api/security_group_rules_interface.rb
@@ -251,6 +252,7 @@ files:
251
252
  - lib/morpheus/cli/edit_profile_command.rb
252
253
  - lib/morpheus/cli/edit_rc_command.rb
253
254
  - lib/morpheus/cli/error_handler.rb
255
+ - lib/morpheus/cli/execute_schedules_command.rb
254
256
  - lib/morpheus/cli/expression_parser.rb
255
257
  - lib/morpheus/cli/groups.rb
256
258
  - lib/morpheus/cli/hosts.rb
@@ -296,7 +298,7 @@ files:
296
298
  - lib/morpheus/cli/option_types.rb
297
299
  - lib/morpheus/cli/packages_command.rb
298
300
  - lib/morpheus/cli/policies_command.rb
299
- - lib/morpheus/cli/power_scheduling_command.rb
301
+ - lib/morpheus/cli/power_schedules_command.rb
300
302
  - lib/morpheus/cli/preseed_scripts_command.rb
301
303
  - lib/morpheus/cli/recent_activity_command.rb
302
304
  - lib/morpheus/cli/remote.rb