morpheus-cli 5.3.4 → 5.4.0

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/api_client.rb +14 -1
  4. data/lib/morpheus/api/health_interface.rb +37 -3
  5. data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
  6. data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
  7. data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
  8. data/lib/morpheus/api/network_servers_interface.rb +68 -12
  9. data/lib/morpheus/api/roles_interface.rb +7 -0
  10. data/lib/morpheus/cli/cli_command.rb +7 -8
  11. data/lib/morpheus/cli/cli_registry.rb +1 -0
  12. data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
  13. data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
  14. data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
  15. data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +0 -3
  16. data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
  17. data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
  18. data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +0 -9
  19. data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
  20. data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
  21. data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
  22. data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
  23. data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
  24. data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +0 -0
  25. data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
  26. data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
  27. data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
  28. data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +0 -0
  29. data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
  30. data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
  31. data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
  32. data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
  33. data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +0 -4
  34. data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +0 -7
  35. data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +0 -6
  36. data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
  37. data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
  38. data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
  39. data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
  40. data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
  41. data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
  42. data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
  43. data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
  44. data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
  45. data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
  46. data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
  47. data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
  48. data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
  49. data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
  50. data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
  51. data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
  52. data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
  53. data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
  54. data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
  55. data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
  56. data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
  57. data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
  58. data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
  59. data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
  60. data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +0 -9
  61. data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +2 -8
  62. data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
  63. data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +0 -4
  64. data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +0 -0
  65. data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +1 -1
  66. data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
  67. data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
  68. data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +0 -4
  69. data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
  70. data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
  71. data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
  72. data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +0 -4
  73. data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
  74. data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +0 -4
  75. data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
  76. data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
  77. data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
  78. data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
  79. data/lib/morpheus/cli/{load_balancer_pools.rb → commands/load_balancer_pools.rb} +0 -0
  80. data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +0 -4
  81. data/lib/morpheus/cli/{load_balancer_virtual_servers.rb → commands/load_balancer_virtual_servers.rb} +0 -0
  82. data/lib/morpheus/cli/{load_balancers.rb → commands/load_balancers.rb} +0 -1
  83. data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
  84. data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
  85. data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
  86. data/lib/morpheus/cli/commands/logout.rb +63 -0
  87. data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
  88. data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
  89. data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
  90. data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
  91. data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +0 -1
  92. data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
  93. data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
  94. data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
  95. data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
  96. data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
  97. data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
  98. data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
  99. data/lib/morpheus/cli/commands/network_firewalls_command.rb +806 -0
  100. data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
  101. data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
  102. data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
  103. data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
  104. data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +0 -5
  105. data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
  106. data/lib/morpheus/cli/{network_scopes_command.rb → commands/network_transport_zones_command.rb} +102 -92
  107. data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +18 -18
  108. data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
  109. data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +0 -7
  110. data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +0 -7
  111. data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
  112. data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
  113. data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
  114. data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +0 -0
  115. data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
  116. data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
  117. data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
  118. data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +0 -0
  119. data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
  120. data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +1 -7
  121. data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
  122. data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
  123. data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +244 -39
  124. data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
  125. data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
  126. data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +0 -6
  127. data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
  128. data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +0 -0
  129. data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
  130. data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +0 -0
  131. data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +2 -103
  132. data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
  133. data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
  134. data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
  135. data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
  136. data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +0 -4
  137. data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +0 -4
  138. data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
  139. data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +0 -7
  140. data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
  141. data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
  142. data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +0 -1
  143. data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +0 -0
  144. data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +0 -1
  145. data/lib/morpheus/cli/{users.rb → commands/users.rb} +0 -7
  146. data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
  147. data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
  148. data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
  149. data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
  150. data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +0 -0
  151. data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
  152. data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +0 -4
  153. data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
  154. data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
  155. data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
  156. data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
  157. data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
  158. data/lib/morpheus/cli/mixins/print_helper.rb +1 -0
  159. data/lib/morpheus/cli/mixins/rest_command.rb +103 -17
  160. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +105 -18
  161. data/lib/morpheus/cli/option_types.rb +56 -19
  162. data/lib/morpheus/cli/version.rb +1 -1
  163. data/lib/morpheus/cli.rb +4 -135
  164. data/lib/morpheus/terminal.rb +5 -6
  165. metadata +150 -144
  166. data/lib/morpheus/cli/change_password_command.rb +0 -147
  167. data/lib/morpheus/cli/library.rb +0 -1
  168. data/lib/morpheus/cli/logout.rb +0 -81
@@ -1,10 +1,4 @@
1
- # require 'yaml'
2
- require 'io/console'
3
- require 'rest_client'
4
- require 'optparse'
5
- require 'filesize'
6
1
  require 'morpheus/cli/cli_command'
7
- #require 'morpheus/cli/mixins/infrastructure_helper'
8
2
 
9
3
  class Morpheus::Cli::Clusters
10
4
  include Morpheus::Cli::CliCommand
@@ -1,6 +1,4 @@
1
- require 'optparse'
2
1
  require 'morpheus/cli/cli_command'
3
- require 'json'
4
2
 
5
3
  # This is for use in dotfile scripts
6
4
  # It allows you to turn colors on or off globally
@@ -1,11 +1,4 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
- require 'filesize'
5
1
  require 'morpheus/cli/cli_command'
6
- require 'morpheus/cli/mixins/provisioning_helper'
7
- require 'morpheus/cli/mixins/logs_helper'
8
- require 'morpheus/cli/option_types'
9
2
 
10
3
  class Morpheus::Cli::ContainersCommand
11
4
  include Morpheus::Cli::CliCommand
@@ -1,7 +1,4 @@
1
- require 'optparse'
2
- require 'morpheus/logging'
3
1
  require 'morpheus/cli/cli_command'
4
- require 'json'
5
2
 
6
3
  class Morpheus::Cli::CurlCommand
7
4
  include Morpheus::Cli::CliCommand
@@ -1,4 +1,3 @@
1
- require 'json'
2
1
  require 'morpheus/cli/cli_command'
3
2
 
4
3
  class Morpheus::Cli::CypherCommand
@@ -1,6 +1,4 @@
1
- require 'optparse'
2
1
  require 'morpheus/cli/cli_command'
3
- require 'json'
4
2
 
5
3
  class Morpheus::Cli::DashboardCommand
6
4
  include Morpheus::Cli::CliCommand
@@ -1,5 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'morpheus/logging'
3
2
 
4
3
  # This is for use in dotfile scripts
5
4
  # It allows you to turn colors on or off globally
@@ -1,5 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'yaml'
3
2
 
4
3
  class Morpheus::Cli::Deploy
5
4
  include Morpheus::Cli::CliCommand
@@ -1,5 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'yaml'
3
2
 
4
3
  class Morpheus::Cli::Deploys
5
4
  include Morpheus::Cli::CliCommand
@@ -2,7 +2,7 @@ require 'morpheus/cli/cli_command'
2
2
 
3
3
  # This provides commands for authentication
4
4
  # This also includes credential management.
5
- class Morpheus::Cli::DocCommand
5
+ class Morpheus::Cli::Doc
6
6
  include Morpheus::Cli::CliCommand
7
7
 
8
8
  set_command_name :'doc'
@@ -1,6 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'term/ansicolor'
3
- require 'json'
4
2
 
5
3
  # This is for use in dotfile scripts for printing
6
4
  # It is also responsible for maintaining a map of variables
@@ -1,8 +1,6 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'term/ansicolor'
3
- require 'json'
4
2
 
5
- # Command for editing the .morpheus_profile initalization script
3
+ # Command for editing the .morpheus_profile initialization script
6
4
  class Morpheus::Cli::EditProfileCommand
7
5
  include Morpheus::Cli::CliCommand
8
6
  set_command_name :'edit-profile'
@@ -18,7 +16,20 @@ class Morpheus::Cli::EditProfileCommand
18
16
  editor = val
19
17
  end
20
18
  build_common_options(opts, options, [])
21
- opts.footer = "Edit your interactive shell script at #{filename}"
19
+ opts.footer = <<-EOT
20
+ Edit your .morpheus_profile script located in the morpheus home directory.
21
+ This script runs whenever the morpheus terminal command is executed.
22
+ It provides a way to initialize your cli environment for all morpheus commands.
23
+
24
+ Example:
25
+
26
+ # disable coloring to exclude ansi characters in output
27
+ coloring off -q
28
+
29
+ # Enable debugging to print extra output for troubleshooting
30
+ debug on
31
+
32
+ EOT
22
33
  end
23
34
  optparse.parse!(args)
24
35
 
@@ -1,6 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'term/ansicolor'
3
- require 'json'
4
2
 
5
3
  # Command for editing the .morpheus_profile initalization script
6
4
  class Morpheus::Cli::EditRcCommand
@@ -18,7 +16,25 @@ class Morpheus::Cli::EditRcCommand
18
16
  editor = val.gsub("'",'')
19
17
  end
20
18
  build_common_options(opts, options, [])
21
- opts.footer = "Edit your morpheus initialization script at #{filename}"
19
+ opts.footer = <<-EOT
20
+ Edit your .morpheusrc script located in the morpheus home directory.
21
+ This script runs at the beginning of the interactive morpheus shell command.
22
+ It provides a way to initialize your interactive morpheus shell environment.
23
+
24
+ Example:
25
+
26
+ # customize the morpheus shell prompt
27
+ set-prompt "%cyan%username%reset@%magenta%remote %cyanmorpheus> %reset"
28
+
29
+ # print the morpheus cli version
30
+ version
31
+
32
+ # print the current remote appliance version
33
+ remote get current
34
+
35
+ # greetings
36
+ echo "Welcome back %username"
37
+ EOT
22
38
  end
23
39
  optparse.parse!(args)
24
40
 
@@ -1,9 +1,4 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/option_types'
6
- require 'json'
7
2
 
8
3
  class Morpheus::Cli::EnvironmentsCommand
9
4
  include Morpheus::Cli::CliCommand
@@ -1,6 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- # require 'morpheus/cli/mixins/provisioning_helper'
3
- # require 'morpheus/cli/mixins/infrastructure_helper'
4
2
 
5
3
  class Morpheus::Cli::ExecutionRequestCommand
6
4
  include Morpheus::Cli::CliCommand
@@ -1,6 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'term/ansicolor'
3
- require 'json'
4
2
 
5
3
  # Utility command for exiting a shell
6
4
  class Morpheus::Cli::ExitCommand
@@ -1,11 +1,7 @@
1
1
  require 'morpheus/cli/cli_command'
2
- # require 'morpheus/cli/mixins/provisioning_helper'
3
- # require 'morpheus/cli/mixins/infrastructure_helper'
4
2
 
5
3
  class Morpheus::Cli::FileCopyRequestCommand
6
4
  include Morpheus::Cli::CliCommand
7
- # include Morpheus::Cli::InfrastructureHelper
8
- # include Morpheus::Cli::ProvisioningHelper
9
5
 
10
6
  set_command_name :'file-copy-request'
11
7
 
@@ -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::GetPromptCommand
@@ -1,11 +1,4 @@
1
- require 'fileutils'
2
- require 'yaml'
3
- require 'io/console'
4
- require 'rest_client'
5
- require 'optparse'
6
1
  require 'morpheus/cli/cli_command'
7
- require 'morpheus/cli/mixins/infrastructure_helper'
8
- require 'morpheus/logging'
9
2
 
10
3
  class Morpheus::Cli::Groups
11
4
  include Morpheus::Cli::CliCommand
@@ -1,5 +1,5 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'date'
2
+ require 'date' #needed?
3
3
 
4
4
  class Morpheus::Cli::GuidanceCommand
5
5
  include Morpheus::Cli::CliCommand
@@ -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
@@ -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
@@ -1,7 +1,3 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
- require 'filesize'
5
1
  require 'morpheus/cli/cli_command'
6
2
 
7
3
  class Morpheus::Cli::Instances
@@ -1,5 +1,5 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'date'
2
+ require 'date' #needed?
3
3
 
4
4
  class Morpheus::Cli::InvoicesCommand
5
5
  include Morpheus::Cli::CliCommand
@@ -1,10 +1,4 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/option_types'
6
- require 'morpheus/cli/mixins/accounts_helper'
7
- require 'json'
8
2
 
9
3
  class Morpheus::Cli::KeyPairs
10
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryClusterLayoutsCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,5 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'morpheus/cli/mixins/library_helper'
3
2
 
4
3
  class Morpheus::Cli::LibraryContainerTemplatesCommand
5
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryContainerTypesCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryInstanceTypesCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryLayoutsCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryOptionListsCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryOptionTypesCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,5 +1,4 @@
1
1
  require 'morpheus/cli/cli_command'
2
- require 'morpheus/cli/mixins/library_helper'
3
2
 
4
3
  class Morpheus::Cli::LibrarySpecTemplatesCommand
5
4
  include Morpheus::Cli::CliCommand
@@ -1,8 +1,4 @@
1
- require 'io/console'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/library_helper'
6
2
 
7
3
  class Morpheus::Cli::LibraryUpgradesCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -1,6 +1,3 @@
1
- require 'io/console'
2
- require 'rest_client'
3
- require 'optparse'
4
1
  require 'morpheus/cli/cli_command'
5
2
 
6
3
  class Morpheus::Cli::License
@@ -1,7 +1,3 @@
1
- # require 'yaml'
2
- require 'io/console'
3
- require 'rest_client'
4
- require 'optparse'
5
1
  require 'morpheus/cli/cli_command'
6
2
 
7
3
  class Morpheus::Cli::LoadBalancerTypes
@@ -1,4 +1,3 @@
1
- # require 'yaml'
2
1
  require 'morpheus/cli/cli_command'
3
2
 
4
3
  class Morpheus::Cli::LoadBalancers
@@ -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::LogLevelCommand
@@ -1,9 +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 'json'
7
2
 
8
3
  class Morpheus::Cli::Login
9
4
  include Morpheus::Cli::CliCommand