morpheus-cli 5.3.2.3 → 5.4.1

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 (212) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/account_users_interface.rb +68 -0
  4. data/lib/morpheus/api/api_client.rb +75 -8
  5. data/lib/morpheus/api/audit_interface.rb +9 -0
  6. data/lib/morpheus/api/clouds_interface.rb +4 -11
  7. data/lib/morpheus/api/health_interface.rb +37 -3
  8. data/lib/morpheus/api/instances_interface.rb +39 -5
  9. data/lib/morpheus/api/load_balancer_monitors_interface.rb +9 -0
  10. data/lib/morpheus/api/load_balancer_profiles_interface.rb +9 -0
  11. data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +9 -0
  12. data/lib/morpheus/api/load_balancers_interface.rb +5 -0
  13. data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
  14. data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
  15. data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
  16. data/lib/morpheus/api/network_routers_interface.rb +30 -0
  17. data/lib/morpheus/api/network_servers_interface.rb +98 -0
  18. data/lib/morpheus/api/network_static_routes_interface.rb +36 -0
  19. data/lib/morpheus/api/read_interface.rb +4 -3
  20. data/lib/morpheus/api/rest_interface.rb +5 -4
  21. data/lib/morpheus/api/roles_interface.rb +7 -0
  22. data/lib/morpheus/api/secondary_read_interface.rb +1 -1
  23. data/lib/morpheus/api/secondary_rest_interface.rb +19 -19
  24. data/lib/morpheus/api/storage_server_types_interface.rb +14 -0
  25. data/lib/morpheus/api/storage_servers_interface.rb +9 -0
  26. data/lib/morpheus/api/storage_volume_types_interface.rb +9 -0
  27. data/lib/morpheus/api/storage_volumes_interface.rb +9 -0
  28. data/lib/morpheus/api/users_interface.rb +16 -63
  29. data/lib/morpheus/api/virtual_images_interface.rb +23 -2
  30. data/lib/morpheus/api/virtual_servers_interface.rb +9 -0
  31. data/lib/morpheus/cli/cli_command.rb +274 -19
  32. data/lib/morpheus/cli/cli_registry.rb +56 -2
  33. data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
  34. data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
  35. data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
  36. data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +1 -4
  37. data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
  38. data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
  39. data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +17 -89
  40. data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
  41. data/lib/morpheus/cli/commands/audit.rb +188 -0
  42. data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
  43. data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
  44. data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
  45. data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
  46. data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +1 -1
  47. data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
  48. data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
  49. data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
  50. data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +0 -0
  51. data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
  52. data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
  53. data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
  54. data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
  55. data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +170 -138
  56. data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +22 -47
  57. data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +86 -49
  58. data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
  59. data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
  60. data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
  61. data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
  62. data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
  63. data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
  64. data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
  65. data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
  66. data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
  67. data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
  68. data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
  69. data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
  70. data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
  71. data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
  72. data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
  73. data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
  74. data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
  75. data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
  76. data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
  77. data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
  78. data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
  79. data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
  80. data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
  81. data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
  82. data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +15 -25
  83. data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +2 -8
  84. data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
  85. data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +473 -150
  86. data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +0 -0
  87. data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +118 -134
  88. data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
  89. data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
  90. data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +20 -4
  91. data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
  92. data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
  93. data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
  94. data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +0 -4
  95. data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
  96. data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +3 -7
  97. data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
  98. data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
  99. data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
  100. data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
  101. data/lib/morpheus/cli/commands/load_balancer_monitors.rb +71 -0
  102. data/lib/morpheus/cli/commands/load_balancer_pools.rb +91 -0
  103. data/lib/morpheus/cli/commands/load_balancer_profiles.rb +65 -0
  104. data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +9 -8
  105. data/lib/morpheus/cli/commands/load_balancer_virtual_servers.rb +156 -0
  106. data/lib/morpheus/cli/commands/load_balancers.rb +176 -0
  107. data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
  108. data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
  109. data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
  110. data/lib/morpheus/cli/commands/logout.rb +63 -0
  111. data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
  112. data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
  113. data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
  114. data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
  115. data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +2 -1
  116. data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
  117. data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
  118. data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
  119. data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
  120. data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
  121. data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
  122. data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
  123. data/lib/morpheus/cli/commands/network_firewalls_command.rb +823 -0
  124. data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
  125. data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
  126. data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
  127. data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
  128. data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +387 -57
  129. data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
  130. data/lib/morpheus/cli/commands/network_static_routes_command.rb +446 -0
  131. data/lib/morpheus/cli/commands/network_transport_zones_command.rb +452 -0
  132. data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +21 -21
  133. data/lib/morpheus/cli/commands/open_command.rb +30 -0
  134. data/lib/morpheus/cli/commands/options.rb +98 -0
  135. data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
  136. data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +0 -7
  137. data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +1 -8
  138. data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
  139. data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
  140. data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
  141. data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +7 -7
  142. data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
  143. data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
  144. data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
  145. data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +0 -0
  146. data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
  147. data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +5 -9
  148. data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
  149. data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
  150. data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +245 -40
  151. data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
  152. data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
  153. data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +0 -6
  154. data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
  155. data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +0 -0
  156. data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
  157. data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +0 -0
  158. data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +4 -105
  159. data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
  160. data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
  161. data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
  162. data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
  163. data/lib/morpheus/cli/commands/storage_server_types.rb +50 -0
  164. data/lib/morpheus/cli/commands/storage_servers.rb +122 -0
  165. data/lib/morpheus/cli/commands/storage_volume_types.rb +50 -0
  166. data/lib/morpheus/cli/commands/storage_volumes.rb +103 -0
  167. data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +7 -6
  168. data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +25 -6
  169. data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
  170. data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +1 -8
  171. data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
  172. data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
  173. data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +1 -2
  174. data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +2 -1
  175. data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +1 -2
  176. data/lib/morpheus/cli/{users.rb → commands/users.rb} +28 -35
  177. data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
  178. data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
  179. data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
  180. data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
  181. data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +4 -1
  182. data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
  183. data/lib/morpheus/cli/commands/view.rb +102 -0
  184. data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +251 -33
  185. data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
  186. data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
  187. data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
  188. data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
  189. data/lib/morpheus/cli/mixins/accounts_helper.rb +5 -5
  190. data/lib/morpheus/cli/mixins/load_balancers_helper.rb +26 -6
  191. data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
  192. data/lib/morpheus/cli/mixins/print_helper.rb +51 -18
  193. data/lib/morpheus/cli/mixins/processes_helper.rb +1 -2
  194. data/lib/morpheus/cli/mixins/provisioning_helper.rb +167 -110
  195. data/lib/morpheus/cli/mixins/rest_command.rb +268 -94
  196. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +668 -0
  197. data/lib/morpheus/cli/mixins/storage_servers_helper.rb +156 -0
  198. data/lib/morpheus/cli/mixins/storage_volumes_helper.rb +119 -0
  199. data/lib/morpheus/cli/option_parser.rb +25 -17
  200. data/lib/morpheus/cli/option_types.rb +137 -52
  201. data/lib/morpheus/cli/version.rb +1 -1
  202. data/lib/morpheus/cli.rb +6 -128
  203. data/lib/morpheus/ext/string.rb +29 -6
  204. data/lib/morpheus/routes.rb +238 -0
  205. data/lib/morpheus/terminal.rb +5 -6
  206. data/lib/morpheus/util.rb +6 -1
  207. data/morpheus-cli.gemspec +1 -1
  208. metadata +183 -149
  209. data/lib/morpheus/cli/change_password_command.rb +0 -147
  210. data/lib/morpheus/cli/library.rb +0 -1
  211. data/lib/morpheus/cli/load_balancers.rb +0 -245
  212. data/lib/morpheus/cli/logout.rb +0 -81
@@ -1,16 +1,10 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/logs_helper'
6
- require 'morpheus/cli/option_types'
7
- require 'json'
8
2
 
9
3
  class Morpheus::Cli::HealthCommand
10
4
  include Morpheus::Cli::CliCommand
11
5
  include Morpheus::Cli::LogsHelper
12
6
  set_command_name :health
13
- register_subcommands :get, :alarms, :'get-alarm', :'acknowledge-alarms', :'unacknowledge-alarms', :logs
7
+ register_subcommands :get, :alarms, :'get-alarm', :'acknowledge-alarms', :'unacknowledge-alarms', :logs, :'export-logs'
14
8
 
15
9
  def connect(opts)
16
10
  @api_client = establish_remote_appliance_connection(opts)
@@ -510,17 +504,16 @@ class Morpheus::Cli::HealthCommand
510
504
  def logs(args)
511
505
  options = {}
512
506
  params = {}
513
- start_date, end_date = nil, nil
514
507
  optparse = Morpheus::Cli::OptionParser.new do |opts|
515
508
  opts.banner = subcommand_usage()
516
509
  opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
517
510
  params['level'] = params['level'] ? [params['level'], val].flatten : [val]
518
511
  end
519
- opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start timestamp. Default is 30 days ago.") do |val|
520
- start_date = parse_time(val) #.utc.iso8601
512
+ opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start date timestamp in standard iso8601 format. Default is 24 hours ago.") do |val|
513
+ params['startDate'] = val # parse_time(val).utc.iso8601
521
514
  end
522
- opts.on('--end TIMESTAMP','--end TIMESTAMP', "End timestamp. Default is now.") do |val|
523
- end_date = parse_time(val) #.utc.iso8601
515
+ opts.on('--end TIMESTAMP','--end TIMESTAMP', "End date timestamp in standard iso8601 format. Default is now.") do |val|
516
+ params['endDate'] = val # parse_time(val).utc.iso8601
524
517
  end
525
518
  opts.on('-t', '--table', "Format output as a table.") do
526
519
  options[:table] = true
@@ -539,8 +532,8 @@ class Morpheus::Cli::HealthCommand
539
532
  begin
540
533
  # params['startDate'] = start_date.utc.iso8601 if start_date
541
534
  # params['endDate'] = end_date.utc.iso8601 if end_date
542
- params['startMs'] = (start_date.to_i * 1000) if start_date
543
- params['endMs'] = (end_date.to_i * 1000) if end_date
535
+ # params['startMs'] = (start_date.to_i * 1000) if start_date
536
+ # params['endMs'] = (end_date.to_i * 1000) if end_date
544
537
  params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
545
538
  params.merge!(parse_list_options(options))
546
539
  @health_interface.setopts(options)
@@ -557,11 +550,11 @@ class Morpheus::Cli::HealthCommand
557
550
  if params['level']
558
551
  subtitles << "Level: #{[params['level']].flatten.join(',')}"
559
552
  end
560
- if start_date
561
- subtitles << "Start: #{start_date}"
553
+ if params['startDate']
554
+ subtitles << "Start: #{params['startDate']}"
562
555
  end
563
- if end_date
564
- subtitles << "End: #{end_date}"
556
+ if params['endDate']
557
+ subtitles << "End: #{params['endDate']}"
565
558
  end
566
559
  subtitles += parse_list_subtitles(options)
567
560
  print_h1 title, subtitles
@@ -580,6 +573,98 @@ class Morpheus::Cli::HealthCommand
580
573
  end
581
574
  end
582
575
 
576
+ def export_logs(args)
577
+ params = {}
578
+ options = {}
579
+ outfile = nil
580
+ do_overwrite = false
581
+ do_mkdir = false
582
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
583
+ opts.banner = subcommand_usage("[file]")
584
+ opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
585
+ params['level'] = params['level'] ? [params['level'], val].flatten : [val]
586
+ end
587
+ opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start date timestamp in standard iso8601 format. Default is 24 hours ago.") do |val|
588
+ params['startDate'] = val # parse_time(val).utc.iso8601
589
+ end
590
+ opts.on('--end TIMESTAMP','--end TIMESTAMP', "End date timestamp in standard iso8601 format. Default is now.") do |val|
591
+ params['endDate'] = val # parse_time(val).utc.iso8601
592
+ end
593
+ opts.on( '-f', '--force', "Overwrite existing [file] if it exists." ) do
594
+ do_overwrite = true
595
+ # do_mkdir = true
596
+ end
597
+ opts.on( '-p', '--mkdir', "Create missing directories for [file] if they do not exist." ) do
598
+ do_mkdir = true
599
+ end
600
+ build_common_options(opts, options, [:list, :query, :dry_run, :remote])
601
+ opts.footer = "Export morpheus appliance log." + "\n" +
602
+ "[file] is required. This is local destination for the downloaded file. Example: morpheus.log"
603
+ end
604
+ optparse.parse!(args)
605
+ verify_args!(args:args, optparse:optparse, count: 1)
606
+ connect(options)
607
+ params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
608
+ params.merge!(parse_list_options(options))
609
+
610
+ outfile = args[0]
611
+ outfile = File.expand_path(outfile)
612
+
613
+ if Dir.exists?(outfile)
614
+ raise_command_error("[file] is invalid. It is the name of an existing directory: #{outfile}", args, optparse)
615
+ end
616
+ destination_dir = File.dirname(outfile)
617
+ if !Dir.exists?(destination_dir)
618
+ if do_mkdir
619
+ print cyan,"Creating local directory #{destination_dir}",reset,"\n"
620
+ FileUtils.mkdir_p(destination_dir)
621
+ else
622
+ raise_command_error("[file] is invalid. Directory not found: #{destination_dir}", args, optparse)
623
+ end
624
+ end
625
+ if File.exists?(outfile)
626
+ if do_overwrite
627
+ # uhh need to be careful wih the passed filepath here..
628
+ # don't delete, just overwrite.
629
+ # File.delete(outfile)
630
+ else
631
+ raise_command_error("[file] is invalid. File already exists: #{outfile}\nUse -f to overwrite the existing file.", args, optparse)
632
+ end
633
+ end
634
+
635
+ @health_interface.setopts(options)
636
+ if options[:dry_run]
637
+ print_dry_run @health_interface.dry.export_logs(outfile, params)
638
+ return 0
639
+ end
640
+ if !options[:quiet]
641
+ print cyan + "Downloading file #{outfile} ... "
642
+ end
643
+ http_response, bad_body = @health_interface.export_logs(outfile, params)
644
+ # FileUtils.chmod(0600, outfile)
645
+ success = http_response.code.to_i == 200
646
+ if success
647
+ if !options[:quiet]
648
+ print green + "SUCCESS" + reset + " (" + format_bytes(http_response["Content-Length"].to_i).to_s + ")" + "\n"
649
+ end
650
+ # todo: parse default outfile from http_response["Content-Type"]
651
+ return 0
652
+ else
653
+ if !options[:quiet]
654
+ print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n"
655
+ end
656
+ # F it, just remove a bad result
657
+ if File.exists?(outfile) && File.file?(outfile)
658
+ Morpheus::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if Morpheus::Logging.debug?
659
+ File.delete(outfile)
660
+ end
661
+ if options[:debug]
662
+ puts_error http_response.inspect
663
+ end
664
+ return 1, "download failed"
665
+ end
666
+ end
667
+
583
668
  def alarms(args)
584
669
  options = {}
585
670
  params = {}
@@ -595,7 +680,7 @@ class Morpheus::Cli::HealthCommand
595
680
  opts.on('--acknowledged', '--acknowledged', "Filter by acknowledged. By default only open alarms are returned.") do
596
681
  params['alarmStatus'] = 'acknowledged'
597
682
  end
598
- opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start timestamp. Default is 30 days ago.") do |val|
683
+ opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start timestamp. Default is 24 hours ago.") do |val|
599
684
  start_date = parse_time(val) #.utc.iso8601
600
685
  end
601
686
  opts.on('--end TIMESTAMP','--end TIMESTAMP', "End timestamp. Default is now.") do |val|
@@ -1,6 +1,3 @@
1
- require 'optparse'
2
- require 'json'
3
- require 'morpheus/logging'
4
1
  require 'morpheus/cli/cli_command'
5
2
 
6
3
  class Morpheus::Cli::HistoryCommand
@@ -1,13 +1,4 @@
1
- # require 'yaml'
2
- require 'io/console'
3
- require 'rest_client'
4
- require 'optparse'
5
1
  require 'morpheus/cli/cli_command'
6
- require 'morpheus/cli/mixins/accounts_helper'
7
- require 'morpheus/cli/mixins/provisioning_helper'
8
- require 'morpheus/cli/mixins/logs_helper'
9
- require 'morpheus/cli/option_types'
10
- require 'json'
11
2
 
12
3
  class Morpheus::Cli::Hosts
13
4
  include Morpheus::Cli::CliCommand
@@ -31,7 +22,7 @@ class Morpheus::Cli::Hosts
31
22
  def connect(opts)
32
23
  @api_client = establish_remote_appliance_connection(opts)
33
24
  @accounts_interface = @api_client.accounts
34
- @users_interface = @api_client.users
25
+ @account_users_interface = @api_client.account_users
35
26
  @clouds_interface = @api_client.clouds
36
27
  @options_interface = @api_client.options
37
28
  @tasks_interface = @api_client.tasks
@@ -90,25 +81,25 @@ class Morpheus::Cli::Hosts
90
81
  opts.on( '--plan-code CODE', String, "Filter by Plan code(s)" ) do |val|
91
82
  params['planCode'] = parse_id_list(val)
92
83
  end
93
- opts.on( '', '--vm', "Show only virtual machines" ) do |val|
84
+ opts.on('--vm', "Show only virtual machines" ) do
94
85
  params[:vm] = true
95
86
  end
96
- opts.on( '', '--hypervisor', "Show only VM Hypervisors" ) do |val|
87
+ opts.on('--hypervisor', "Show only VM Hypervisors" ) do
97
88
  params[:vmHypervisor] = true
98
89
  end
99
- opts.on( '', '--container', "Show only Container Hypervisors" ) do |val|
90
+ opts.on('--container', "Show only Container Hypervisors" ) do
100
91
  params[:containerHypervisor] = true
101
92
  end
102
- opts.on( '', '--baremetal', "Show only Baremetal Servers" ) do |val|
93
+ opts.on('--baremetal', "Show only Baremetal Servers" ) do
103
94
  params[:bareMetalHost] = true
104
95
  end
105
- opts.on( '', '--status STATUS', "Filter by Status" ) do |val|
96
+ opts.on('--status STATUS', String, "Filter by Status" ) do |val|
106
97
  params[:status] = val
107
98
  end
108
- opts.on( '', '--agent', "Show only Servers with the agent installed" ) do |val|
99
+ opts.on('--agent', "Show only Servers with the agent installed" ) do
109
100
  params[:agentInstalled] = true
110
101
  end
111
- opts.on( '', '--noagent', "Show only Servers with No agent" ) do |val|
102
+ opts.on('--noagent', "Show only Servers with No agent" ) do
112
103
  params[:agentInstalled] = false
113
104
  end
114
105
  opts.on( '--created-by USER', "Created By User Username or ID" ) do |val|
@@ -383,25 +374,25 @@ class Morpheus::Cli::Hosts
383
374
  opts.on( '-i', '--ip IPADDRESS', "Filter by IP Address" ) do |val|
384
375
  params[:ip] = val
385
376
  end
386
- opts.on( '', '--vm', "Show only virtual machines" ) do |val|
377
+ opts.on('--vm', "Show only virtual machines" ) do
387
378
  params[:vm] = true
388
379
  end
389
- opts.on( '', '--hypervisor', "Show only VM Hypervisors" ) do |val|
380
+ opts.on('--hypervisor', "Show only VM Hypervisors" ) do
390
381
  params[:vmHypervisor] = true
391
382
  end
392
- opts.on( '', '--container', "Show only Container Hypervisors" ) do |val|
383
+ opts.on('--container', "Show only Container Hypervisors" ) do
393
384
  params[:containerHypervisor] = true
394
385
  end
395
- opts.on( '', '--baremetal', "Show only Baremetal Servers" ) do |val|
386
+ opts.on('--baremetal', "Show only Baremetal Servers" ) do
396
387
  params[:bareMetalHost] = true
397
388
  end
398
- opts.on( '', '--status STATUS', "Filter by Status" ) do |val|
389
+ opts.on('--status STATUS', "Filter by Status" ) do |val|
399
390
  params[:status] = val
400
391
  end
401
- opts.on( '', '--agent', "Show only Servers with the agent installed" ) do |val|
392
+ opts.on('--agent', "Show only Servers with the agent installed" ) do
402
393
  params[:agentInstalled] = true
403
394
  end
404
- opts.on( '', '--noagent', "Show only Servers with No agent" ) do |val|
395
+ opts.on('--noagent', "Show only Servers with No agent" ) do
405
396
  params[:agentInstalled] = false
406
397
  end
407
398
  opts.on( '--created-by USER', "Created By User Username or ID" ) do |val|
@@ -553,7 +544,6 @@ class Morpheus::Cli::Hosts
553
544
  server_columns.delete("Cost") if server['hourlyCost'].to_f == 0
554
545
  server_columns.delete("Price") if server['hourlyPrice'].to_f == 0 || server['hourlyPrice'] == server['hourlyCost']
555
546
  server_columns.delete("Labels") if server['labels'].nil? || server['labels'].empty?
556
- server_columns.delete("Tags") if tags.nil? || tags.empty?
557
547
 
558
548
  print_description_list(server_columns, server)
559
549
 
@@ -1,12 +1,6 @@
1
- require 'json'
2
- require 'yaml'
3
- require 'rest_client'
4
- require 'optparse'
5
- require 'filesize'
6
1
  require 'morpheus/cli/cli_command'
7
- require 'morpheus/cli/mixins/provisioning_helper'
8
- require 'morpheus/cli/boot_scripts_command'
9
- require 'morpheus/cli/preseed_scripts_command'
2
+ # require 'morpheus/cli/commands/boot_scripts_command'
3
+ # require 'morpheus/cli/commands/preseed_scripts_command'
10
4
 
11
5
  class Morpheus::Cli::ImageBuilderCommand
12
6
  include Morpheus::Cli::CliCommand
@@ -1,7 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
1
  require 'morpheus/cli/cli_command'
4
- require 'morpheus/cli/mixins/provisioning_helper'
5
2
 
6
3
  class Morpheus::Cli::InstanceTypes
7
4
  include Morpheus::Cli::CliCommand