morpheus-cli 5.3.4 → 5.4.3

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 (214) 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 +69 -11
  5. data/lib/morpheus/api/audit_interface.rb +9 -0
  6. data/lib/morpheus/api/catalog_item_types_interface.rb +20 -0
  7. data/lib/morpheus/api/health_interface.rb +37 -3
  8. data/lib/morpheus/api/instances_interface.rb +49 -0
  9. data/lib/morpheus/api/load_balancer_monitors_interface.rb +9 -0
  10. data/lib/morpheus/api/load_balancer_pools_interface.rb +4 -4
  11. data/lib/morpheus/api/load_balancer_profiles_interface.rb +4 -5
  12. data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +13 -4
  13. data/lib/morpheus/api/load_balancers_interface.rb +5 -0
  14. data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
  15. data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
  16. data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
  17. data/lib/morpheus/api/network_routers_interface.rb +9 -0
  18. data/lib/morpheus/api/network_servers_interface.rb +68 -12
  19. data/lib/morpheus/api/network_static_routes_interface.rb +36 -0
  20. data/lib/morpheus/api/ping_interface.rb +2 -0
  21. data/lib/morpheus/api/read_interface.rb +4 -3
  22. data/lib/morpheus/api/rest_interface.rb +3 -3
  23. data/lib/morpheus/api/roles_interface.rb +7 -0
  24. data/lib/morpheus/api/secondary_read_interface.rb +1 -1
  25. data/lib/morpheus/api/secondary_rest_interface.rb +19 -19
  26. data/lib/morpheus/api/setup_interface.rb +4 -0
  27. data/lib/morpheus/api/snapshots_interface.rb +19 -0
  28. data/lib/morpheus/api/storage_server_types_interface.rb +14 -0
  29. data/lib/morpheus/api/storage_servers_interface.rb +9 -0
  30. data/lib/morpheus/api/storage_volume_types_interface.rb +9 -0
  31. data/lib/morpheus/api/storage_volumes_interface.rb +9 -0
  32. data/lib/morpheus/api/users_interface.rb +16 -63
  33. data/lib/morpheus/cli/cli_command.rb +260 -13
  34. data/lib/morpheus/cli/cli_registry.rb +2 -1
  35. data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
  36. data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
  37. data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
  38. data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +1 -4
  39. data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
  40. data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
  41. data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +14 -87
  42. data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
  43. data/lib/morpheus/cli/commands/audit.rb +188 -0
  44. data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
  45. data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
  46. data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
  47. data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
  48. data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +1 -1
  49. data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
  50. data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
  51. data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
  52. data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +88 -0
  53. data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
  54. data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
  55. data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
  56. data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
  57. data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +0 -4
  58. data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +0 -7
  59. data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +96 -64
  60. data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
  61. data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
  62. data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
  63. data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
  64. data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
  65. data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
  66. data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
  67. data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
  68. data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
  69. data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
  70. data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
  71. data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
  72. data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
  73. data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
  74. data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
  75. data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
  76. data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
  77. data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
  78. data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
  79. data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
  80. data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
  81. data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
  82. data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
  83. data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
  84. data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +27 -24
  85. data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +6 -16
  86. data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
  87. data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +359 -7
  88. data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +1 -12
  89. data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +1 -1
  90. data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
  91. data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
  92. data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +0 -4
  93. data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
  94. data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
  95. data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
  96. data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +3 -4
  97. data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
  98. data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +0 -4
  99. data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
  100. data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
  101. data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
  102. data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
  103. data/lib/morpheus/cli/commands/load_balancer_monitors.rb +70 -0
  104. data/lib/morpheus/cli/commands/load_balancer_pools.rb +90 -0
  105. data/lib/morpheus/cli/commands/load_balancer_profiles.rb +64 -0
  106. data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +9 -8
  107. data/lib/morpheus/cli/{load_balancer_virtual_servers.rb → commands/load_balancer_virtual_servers.rb} +69 -58
  108. data/lib/morpheus/cli/commands/load_balancers.rb +192 -0
  109. data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
  110. data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
  111. data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
  112. data/lib/morpheus/cli/commands/logout.rb +63 -0
  113. data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
  114. data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
  115. data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
  116. data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
  117. data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +0 -1
  118. data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
  119. data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
  120. data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
  121. data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
  122. data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
  123. data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
  124. data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
  125. data/lib/morpheus/cli/commands/network_firewalls_command.rb +823 -0
  126. data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
  127. data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
  128. data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
  129. data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
  130. data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +96 -50
  131. data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
  132. data/lib/morpheus/cli/commands/network_static_routes_command.rb +451 -0
  133. data/lib/morpheus/cli/{network_scopes_command.rb → commands/network_transport_zones_command.rb} +102 -92
  134. data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +20 -20
  135. data/lib/morpheus/cli/commands/open_command.rb +30 -0
  136. data/lib/morpheus/cli/commands/options.rb +98 -0
  137. data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
  138. data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +3 -12
  139. data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +2 -9
  140. data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
  141. data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
  142. data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
  143. data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +7 -7
  144. data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
  145. data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
  146. data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
  147. data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +1 -0
  148. data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
  149. data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +21 -19
  150. data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
  151. data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
  152. data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +245 -40
  153. data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
  154. data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
  155. data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +2 -8
  156. data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
  157. data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +1 -1
  158. data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
  159. data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +1 -1
  160. data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +4 -105
  161. data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
  162. data/lib/morpheus/cli/commands/snapshots.rb +139 -0
  163. data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
  164. data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
  165. data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
  166. data/lib/morpheus/cli/commands/storage_server_types.rb +50 -0
  167. data/lib/morpheus/cli/commands/storage_servers.rb +122 -0
  168. data/lib/morpheus/cli/commands/storage_volume_types.rb +50 -0
  169. data/lib/morpheus/cli/commands/storage_volumes.rb +103 -0
  170. data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +0 -4
  171. data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +5 -9
  172. data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
  173. data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +1 -8
  174. data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
  175. data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
  176. data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +1 -2
  177. data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +3 -2
  178. data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +1 -2
  179. data/lib/morpheus/cli/{users.rb → commands/users.rb} +28 -35
  180. data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
  181. data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
  182. data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
  183. data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
  184. data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +0 -0
  185. data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
  186. data/lib/morpheus/cli/commands/view.rb +102 -0
  187. data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +4 -5
  188. data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
  189. data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
  190. data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
  191. data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
  192. data/lib/morpheus/cli/mixins/accounts_helper.rb +5 -5
  193. data/lib/morpheus/cli/mixins/load_balancers_helper.rb +24 -4
  194. data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
  195. data/lib/morpheus/cli/mixins/print_helper.rb +51 -18
  196. data/lib/morpheus/cli/mixins/processes_helper.rb +1 -2
  197. data/lib/morpheus/cli/mixins/provisioning_helper.rb +96 -6
  198. data/lib/morpheus/cli/mixins/rest_command.rb +222 -62
  199. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +249 -70
  200. data/lib/morpheus/cli/mixins/storage_servers_helper.rb +156 -0
  201. data/lib/morpheus/cli/mixins/storage_volumes_helper.rb +119 -0
  202. data/lib/morpheus/cli/option_types.rb +150 -46
  203. data/lib/morpheus/cli/version.rb +1 -1
  204. data/lib/morpheus/cli.rb +5 -135
  205. data/lib/morpheus/ext/string.rb +29 -6
  206. data/lib/morpheus/routes.rb +238 -0
  207. data/lib/morpheus/terminal.rb +5 -6
  208. data/lib/morpheus/util.rb +6 -1
  209. metadata +174 -144
  210. data/lib/morpheus/cli/change_password_command.rb +0 -147
  211. data/lib/morpheus/cli/library.rb +0 -1
  212. data/lib/morpheus/cli/load_balancer_pools.rb +0 -111
  213. data/lib/morpheus/cli/load_balancers.rb +0 -90
  214. data/lib/morpheus/cli/logout.rb +0 -81
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e1172b58bb99b6348f15121c97f5c3d8db818c25fa977cd33835f7a3645da44
4
- data.tar.gz: bd216d539aadf61f968cee0dabb6d36361bd79dbdd4ac86527a80872f64620ec
3
+ metadata.gz: 1115efb46c7480c6a3814183c5748f27ce92d8be5ca935116fac0a26d66a58aa
4
+ data.tar.gz: a47a2aa8cb3d36dfff5de6e811c2948e54e54771d3e00c47ca377db50b77fbbf
5
5
  SHA512:
6
- metadata.gz: 24e82961eae144b2b9a00f555313ae653b6c1f844a9be549553481c7e91789011858075acfc76efabfeb3a503f211f4ddc76c79a8a33cff1d4bf07a355179753
7
- data.tar.gz: 0cf97e82534466142e81d7a20ff7672578de00179cfab36a1e94e6900a24193090e1dd1c91d6c6d409000ac92623ed06ae9e6f5f346937c2912b42b5fedac561
6
+ metadata.gz: ab05b111e694eded06459369814d4dcf462766a48a861831a004e428324b7181b570b8df6b6c8097f5be6bc5fc3be2d2ea59ac44ae4003cc444b53e49d2a3665
7
+ data.tar.gz: b4760ef297c3a3dd9b19b71c0d4702885803dc5ae107a2cf538c074fd6a17191303910b28e119560113ce6f50208e250b6c07659e003da80c8c6c068cfad26ed
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
1
  FROM ruby:2.5.1
2
2
 
3
- RUN gem install morpheus-cli -v 5.3.4
3
+ RUN gem install morpheus-cli -v 5.4.2
4
4
 
5
5
  ENTRYPOINT ["morpheus"]
@@ -0,0 +1,68 @@
1
+ require 'morpheus/api/rest_interface'
2
+
3
+ class Morpheus::AccountUsersInterface < Morpheus::RestInterface
4
+
5
+ def base_path(account_id)
6
+ if account_id
7
+ "/api/accounts/#{account_id}/users"
8
+ else
9
+ "/api/users"
10
+ end
11
+ end
12
+
13
+ def list(account_id, params={}, headers={})
14
+ #validate_id!(account_id, "account_id")
15
+ execute(method: :get, url: "#{build_url(account_id)}", params: params, headers: headers)
16
+ end
17
+
18
+ def get(account_id, id, params={}, headers={})
19
+ #validate_id!(account_id, "account_id")
20
+ validate_id!(id)
21
+ execute(method: :get, url: "#{build_url(account_id, id)}", params: params, headers: headers)
22
+ end
23
+
24
+ def create(account_id, payload, params={}, headers={})
25
+ #validate_id!(account_id, "account_id")
26
+ execute(method: :post, url: "#{build_url(account_id)}", params: params, payload: payload, headers: headers)
27
+ end
28
+
29
+ def update(account_id, id, payload, params={}, headers={})
30
+ #validate_id!(account_id, "account_id")
31
+ validate_id!(id)
32
+ execute(method: :put, url: "#{build_url(account_id, id)}", params: params, payload: payload, headers: headers)
33
+ end
34
+
35
+ def destroy(account_id, id, params = {}, headers={})
36
+ #validate_id!(account_id, "account_id")
37
+ validate_id!(id)
38
+ execute(method: :delete, url: "#{build_url(account_id, id)}", params: params, headers: headers)
39
+ end
40
+
41
+ def feature_permissions(account_id, id, params={}, headers={})
42
+ #validate_id!(account_id, "account_id")
43
+ validate_id!(id)
44
+ execute(method: :get, url: "#{build_url(account_id, id)}/feature-permissions", params: params, headers: headers)
45
+ end
46
+
47
+ def permissions(account_id, id, params={}, headers={})
48
+ #validate_id!(account_id, "account_id")
49
+ validate_id!(id)
50
+ execute(method: :get, url: "#{build_url(account_id, id)}/permissions", params: params, headers: headers)
51
+ end
52
+
53
+ def available_roles(account_id, id=nil, params={}, headers={})
54
+ #validate_id!(account_id, "account_id")
55
+ execute(method: :get, url: "#{build_url(account_id, id)}/available-roles", params: params, headers: headers)
56
+ end
57
+
58
+ private
59
+
60
+ def build_url(account_id, id=nil)
61
+ url = base_path(account_id)
62
+ if id
63
+ url += "/#{CGI::escape(id.to_s)}"
64
+ end
65
+ url
66
+ end
67
+
68
+ end
@@ -1,7 +1,8 @@
1
1
  require 'json'
2
2
  require 'uri'
3
3
  require 'cgi'
4
- require 'rest-client'
4
+ require 'morpheus/rest_client'
5
+ # require 'rest-client'
5
6
 
6
7
  class Morpheus::APIClient
7
8
 
@@ -241,7 +242,7 @@ class Morpheus::APIClient
241
242
  # @verify_ssl is not used atm
242
243
  # todo: finish this and use it instead of the global variable RestClient.ssl_verification_enabled?
243
244
  # gotta clean up all APIClient subclasses new() methods to support this
244
- # the CliCommand subclasses should be changed to @users_interface = @api_client.users
245
+ # the CliCommand subclasses should be changed to @foos_interface = @api_client.foos
245
246
  # also.. Credentials.new()
246
247
  if @verify_ssl == false
247
248
  opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
@@ -346,7 +347,6 @@ class Morpheus::APIClient
346
347
  end
347
348
 
348
349
  def auth
349
- # Morpheus::AuthInterface.new(common_interface_options).setopts(@options)
350
350
  Morpheus::AuthInterface.new({url: @base_url, client_id: @client_id, verify_ssl: @verify_ssl}).setopts(@options)
351
351
  end
352
352
 
@@ -486,8 +486,12 @@ class Morpheus::APIClient
486
486
  Morpheus::LoadBalancerPoolsInterface.new(common_interface_options).setopts(@options)
487
487
  end
488
488
 
489
- def virtual_servers
490
- Morpheus::VirtualServersInterface.new(common_interface_options).setopts(@options)
489
+ def load_balancer_profiles
490
+ Morpheus::LoadBalancerProfilesInterface.new(common_interface_options).setopts(@options)
491
+ end
492
+
493
+ def load_balancer_monitors
494
+ Morpheus::LoadBalancerMonitorsInterface.new(common_interface_options).setopts(@options)
491
495
  end
492
496
 
493
497
  def tasks
@@ -542,6 +546,10 @@ class Morpheus::APIClient
542
546
  Morpheus::UsersInterface.new(common_interface_options).setopts(@options)
543
547
  end
544
548
 
549
+ def account_users
550
+ Morpheus::AccountUsersInterface.new(common_interface_options).setopts(@options)
551
+ end
552
+
545
553
  def user_groups
546
554
  Morpheus::UserGroupsInterface.new(common_interface_options).setopts(@options)
547
555
  end
@@ -688,6 +696,22 @@ class Morpheus::APIClient
688
696
  Morpheus::StorageProvidersInterface.new(common_interface_options).setopts(@options)
689
697
  end
690
698
 
699
+ def storage_servers
700
+ Morpheus::StorageServersInterface.new(common_interface_options).setopts(@options)
701
+ end
702
+
703
+ def storage_server_types
704
+ Morpheus::StorageServerTypesInterface.new(common_interface_options).setopts(@options)
705
+ end
706
+
707
+ def storage_volumes
708
+ Morpheus::StorageVolumesInterface.new(common_interface_options).setopts(@options)
709
+ end
710
+
711
+ def storage_volume_types
712
+ Morpheus::StorageVolumeTypesInterface.new(common_interface_options).setopts(@options)
713
+ end
714
+
691
715
  def library_instance_types
692
716
  Morpheus::LibraryInstanceTypesInterface.new(common_interface_options).setopts(@options)
693
717
  end
@@ -772,14 +796,18 @@ class Morpheus::APIClient
772
796
  Morpheus::WikiInterface.new(common_interface_options).setopts(@options)
773
797
  end
774
798
 
775
- def budgets
776
- Morpheus::BudgetsInterface.new(common_interface_options).setopts(@options)
777
- end
778
-
779
799
  def health
780
800
  Morpheus::HealthInterface.new(common_interface_options).setopts(@options)
781
801
  end
782
802
 
803
+ def audit
804
+ Morpheus::AuditInterface.new(common_interface_options).setopts(@options)
805
+ end
806
+
807
+ def budgets
808
+ Morpheus::BudgetsInterface.new(common_interface_options).setopts(@options)
809
+ end
810
+
783
811
  def invoices
784
812
  Morpheus::InvoicesInterface.new(common_interface_options).setopts(@options)
785
813
  end
@@ -844,16 +872,46 @@ class Morpheus::APIClient
844
872
  Morpheus::NetworkServersInterface.new(common_interface_options).setopts(@options)
845
873
  end
846
874
 
875
+ def network_edge_clusters
876
+ Morpheus::NetworkEdgeClustersInterface.new(common_interface_options).setopts(@options)
877
+ end
878
+
879
+ def network_dhcp_servers
880
+ Morpheus::NetworkDhcpServersInterface.new(common_interface_options).setopts(@options)
881
+ end
882
+
883
+ def network_dhcp_relays
884
+ Morpheus::NetworkDhcpRelaysInterface.new(common_interface_options).setopts(@options)
885
+ end
886
+
887
+ def network_static_routes
888
+ Morpheus::NetworkStaticRoutesInterface.new(common_interface_options).setopts(@options)
889
+ end
890
+
891
+ def snapshots
892
+ Morpheus::SnapshotsInterface.new(common_interface_options).setopts(@options)
893
+ end
894
+
847
895
  def rest(endpoint)
848
896
  Morpheus::RestInterface.new(common_interface_options).setopts(@options.merge({base_path: "#{@base_url}/api/#{endpoint}"}))
849
897
  end
850
898
 
899
+ def interface(type)
900
+ type = type.to_s.singularize.underscore
901
+ interface_name = type.pluralize
902
+ if !respond_to?(interface_name)
903
+ raise "#{self.class} has not defined an interface method named '#{interface_name}'"
904
+ end
905
+ return send(interface_name)
906
+ end
907
+ alias :get_interface :interface
908
+
851
909
  # add new interfaces here
852
910
 
853
911
  protected
854
912
 
855
- def validate_id!(id)
856
- raise "#{self.class} passed a blank id!" if id.to_s.strip.empty?
913
+ def validate_id!(id, param_name='id')
914
+ raise "#{self.class} passed a blank #{param_name}!" if id.to_s.strip.empty?
857
915
  end
858
916
 
859
917
  end
@@ -0,0 +1,9 @@
1
+ require 'morpheus/api/read_interface'
2
+
3
+ class Morpheus::AuditInterface < Morpheus::ReadInterface
4
+
5
+ def base_path
6
+ "/api/audit"
7
+ end
8
+
9
+ end
@@ -6,4 +6,24 @@ class Morpheus::CatalogItemTypesInterface < Morpheus::RestInterface
6
6
  "/api/catalog-item-types"
7
7
  end
8
8
 
9
+ # NOT json, multipart file upload
10
+ # def update_logo(id, logo_file)
11
+ # url = "#{base_path}/#{id}/update-logo"
12
+ # headers = { :params => {}, :authorization => "Bearer #{@access_token}"}
13
+ # payload = {}
14
+ # payload[:logo] = logo_file
15
+ # payload[:multipart] = true
16
+ # execute(method: :post, url: url, headers: headers, payload: payload)
17
+ # end
18
+
19
+ # NOT json, multipart file upload, uses PUT update endpoint
20
+ def update_logo(id, logo_file)
21
+ url = "#{base_path}/#{id}"
22
+ headers = { :params => {}, :authorization => "Bearer #{@access_token}"}
23
+ payload = {}
24
+ payload["catalogItemType"] = {"logo" => logo_file}
25
+ payload[:multipart] = true
26
+ execute(method: :put, url: url, headers: headers, payload: payload)
27
+ end
28
+
9
29
  end
@@ -49,6 +49,13 @@ class Morpheus::HealthInterface < Morpheus::APIClient
49
49
  execute(opts)
50
50
  end
51
51
 
52
+ def notifications(params={})
53
+ url = "#{@base_url}/api/health/notifications"
54
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
55
+ opts = {method: :get, url: url, headers: headers}
56
+ execute(opts)
57
+ end
58
+
52
59
  def logs(params={})
53
60
  url = "#{@base_url}/api/health/logs"
54
61
  headers = { params: params, authorization: "Bearer #{@access_token}" }
@@ -56,11 +63,38 @@ class Morpheus::HealthInterface < Morpheus::APIClient
56
63
  execute(opts)
57
64
  end
58
65
 
59
- def notifications(params={})
60
- url = "#{@base_url}/api/health/notifications"
66
+ def export_logs(outfile, params={})
67
+ url = "#{@base_url}/api/health/logs/export"
61
68
  headers = { params: params, authorization: "Bearer #{@access_token}" }
62
69
  opts = {method: :get, url: url, headers: headers}
63
- execute(opts)
70
+ # execute(opts, {parse_json: false})
71
+ if Dir.exists?(outfile)
72
+ raise "outfile is invalid. It is the name of an existing directory: #{outfile}"
73
+ end
74
+ # if @verify_ssl == false
75
+ # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
76
+ # end
77
+ if @dry_run
78
+ return opts
79
+ end
80
+ http_response = nil
81
+ bad_body = nil
82
+ File.open(outfile, 'w') {|f|
83
+ block = proc { |response|
84
+ if response.code.to_i == 200
85
+ response.read_body do |chunk|
86
+ #puts "writing to #{outfile} ..."
87
+ f.write chunk
88
+ end
89
+ else
90
+ # puts_error (#{response.inspect}) #{chunk} ..."
91
+ bad_body = response.body.to_s
92
+ end
93
+ }
94
+ opts[:block_response] = block
95
+ http_response = Morpheus::RestClient.execute(opts)
96
+ }
97
+ return http_response, bad_body
64
98
  end
65
99
 
66
100
  end
@@ -262,6 +262,34 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
262
262
  execute(opts)
263
263
  end
264
264
 
265
+ def revert_to_snapshot(id, snapshot_id, payload={})
266
+ url = "#{@base_url}/api/instances/#{id}/revert-snapshot/#{snapshot_id}"
267
+ headers = {:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
268
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
269
+ execute(opts)
270
+ end
271
+
272
+ def remove_all_container_snapshots(id, container_id, payload={})
273
+ url = "#{@base_url}/api/instances/#{id}/delete-container-snapshots/#{container_id}"
274
+ headers = {:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
275
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
276
+ execute(opts)
277
+ end
278
+
279
+ def remove_all_instance_snapshots(id, payload={})
280
+ url = "#{@base_url}/api/instances/#{id}/delete-all-snapshots"
281
+ headers = {:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
282
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
283
+ execute(opts)
284
+ end
285
+
286
+ def create_linked_clone(id, snapshot_id, payload={})
287
+ url = "#{@base_url}/api/instances/#{id}/linked-clone/#{snapshot_id}"
288
+ headers = {:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
289
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
290
+ execute(opts)
291
+ end
292
+
265
293
  def service_plans(params={})
266
294
  url = "#{@base_url}/api/instances/service-plans"
267
295
  headers = { params: params, authorization: "Bearer #{@access_token}" }
@@ -344,4 +372,25 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
344
372
  execute(method: :get, url: "/api/instances/#{id}/deploy", params: params)
345
373
  end
346
374
 
375
+ def refresh(id, params, payload)
376
+ url = "#{@base_url}/api/instances/#{id}/refresh"
377
+ headers = {:params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
378
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
379
+ execute(opts)
380
+ end
381
+
382
+ def apply(id, params, payload)
383
+ url = "#{@base_url}/api/instances/#{id}/apply"
384
+ headers = {:params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
385
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
386
+ execute(opts)
387
+ end
388
+
389
+ def state_summary(id, params={})
390
+ url = "#{@base_url}/api/instances/#{id}/state-summary"
391
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
392
+ opts = {method: :get, url: url, headers: headers}
393
+ execute(opts)
394
+ end
395
+
347
396
  end
@@ -0,0 +1,9 @@
1
+ require 'morpheus/api/secondary_rest_interface'
2
+
3
+ class Morpheus::LoadBalancerMonitorsInterface < Morpheus::SecondaryRestInterface
4
+
5
+ def base_path(load_balancer_id)
6
+ "/api/load-balancers/#{load_balancer_id}/monitors"
7
+ end
8
+
9
+ end
@@ -1,9 +1,9 @@
1
- require 'morpheus/api/rest_interface'
1
+ require 'morpheus/api/secondary_rest_interface'
2
2
 
3
- class Morpheus::LoadBalancerPoolsInterface < Morpheus::RestInterface
3
+ class Morpheus::LoadBalancerPoolsInterface < Morpheus::SecondaryRestInterface
4
4
 
5
- def base_path
6
- "/api/load-balancer-pools"
5
+ def base_path(load_balancer_id)
6
+ "/api/load-balancers/#{load_balancer_id}/pools"
7
7
  end
8
8
 
9
9
  end
@@ -1,10 +1,9 @@
1
- require 'morpheus/api/rest_interface'
1
+ require 'morpheus/api/secondary_rest_interface'
2
2
 
3
- class Morpheus::LoadBalancerProfilesInterface < Morpheus::RestInterface
3
+ class Morpheus::LoadBalancerProfilesInterface < Morpheus::SecondaryRestInterface
4
4
 
5
- def base_path
6
- "/api/load-balancer-profiles"
5
+ def base_path(load_balancer_id)
6
+ "/api/load-balancers/#{load_balancer_id}/profiles"
7
7
  end
8
8
 
9
9
  end
10
-
@@ -1,9 +1,18 @@
1
- require 'morpheus/api/rest_interface'
1
+ require 'morpheus/api/secondary_rest_interface'
2
2
 
3
- class Morpheus::LoadBalancerVirtualServersInterface < Morpheus::RestInterface
3
+ class Morpheus::LoadBalancerVirtualServersInterface < Morpheus::SecondaryRestInterface
4
4
 
5
- def base_path
6
- "/api/load-balancer-virtual-servers"
5
+ def base_path(load_balancer_id)
6
+ "/api/load-balancers/#{load_balancer_id}/virtual-servers"
7
+ end
8
+
9
+ def list(parent_id=nil, params={}, headers={})
10
+ if parent_id
11
+ validate_id!(parent_id)
12
+ execute(method: :get, url: "#{base_path(parent_id)}", params: params, headers: headers)
13
+ else
14
+ execute(method: :get, url: "/api/load-balancer-virtual-servers", params: params, headers: headers)
15
+ end
7
16
  end
8
17
 
9
18
  end
@@ -6,4 +6,9 @@ class Morpheus::LoadBalancersInterface < Morpheus::RestInterface
6
6
  "/api/load-balancers"
7
7
  end
8
8
 
9
+ def refresh(id, payload, params={}, headers={})
10
+ validate_id!(id)
11
+ execute(method: :put, url: "#{base_path}/#{CGI::escape(id.to_s)}/refresh", params: params, payload: payload, headers: headers)
12
+ end
13
+
9
14
  end
@@ -0,0 +1,36 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::NetworkDhcpRelaysInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/networks/servers"
7
+ end
8
+
9
+ def get_dhcp_relay(server_id, dhcp_relay_id, params={}, headers={})
10
+ validate_id!(server_id)
11
+ validate_id!(dhcp_relay_id)
12
+ execute(method: :get, url: "#{base_path}/#{server_id}/dhcp-relays/#{dhcp_relay_id}", params: params, headers: headers)
13
+ end
14
+
15
+ def list_dhcp_relays(server_id, params={}, headers={})
16
+ validate_id!(server_id)
17
+ execute(method: :get, url: "#{base_path}/#{server_id}/dhcp-relays", params: params, headers: headers)
18
+ end
19
+
20
+ def create_dhcp_relay(server_id, payload, params={}, headers={})
21
+ validate_id!(server_id)
22
+ execute(method: :post, url: "#{base_path}/#{server_id}/dhcp-relays", params: params, payload: payload, headers: headers)
23
+ end
24
+
25
+ def update_dhcp_relay(server_id, dhcp_relay_id, payload, params={}, headers={})
26
+ validate_id!(server_id)
27
+ validate_id!(dhcp_relay_id)
28
+ execute(method: :put, url: "#{base_path}/#{server_id}/dhcp-relays/#{dhcp_relay_id}", params: params, payload: payload, headers: headers)
29
+ end
30
+
31
+ def delete_dhcp_relay(server_id, dhcp_relay_id, params={}, headers={})
32
+ validate_id!(server_id)
33
+ validate_id!(dhcp_relay_id)
34
+ execute(method: :delete, url: "#{base_path}/#{server_id}/dhcp-relays/#{dhcp_relay_id}", params: params, headers: headers)
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::NetworkDhcpServersInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/networks/servers"
7
+ end
8
+
9
+ def get_dhcp_server(server_id, dhcp_server_id, params={}, headers={})
10
+ validate_id!(server_id)
11
+ validate_id!(dhcp_server_id)
12
+ execute(method: :get, url: "#{base_path}/#{server_id}/dhcp-servers/#{dhcp_server_id}", params: params, headers: headers)
13
+ end
14
+
15
+ def list_dhcp_servers(server_id, params={}, headers={})
16
+ validate_id!(server_id)
17
+ execute(method: :get, url: "#{base_path}/#{server_id}/dhcp-servers", params: params, headers: headers)
18
+ end
19
+
20
+ def create_dhcp_server(server_id, payload, params={}, headers={})
21
+ validate_id!(server_id)
22
+ execute(method: :post, url: "#{base_path}/#{server_id}/dhcp-servers", params: params, payload: payload, headers: headers)
23
+ end
24
+
25
+ def update_dhcp_server(server_id, dhcp_server_id, payload, params={}, headers={})
26
+ validate_id!(server_id)
27
+ validate_id!(dhcp_server_id)
28
+ execute(method: :put, url: "#{base_path}/#{server_id}/dhcp-servers/#{dhcp_server_id}", params: params, payload: payload, headers: headers)
29
+ end
30
+
31
+ def delete_dhcp_server(server_id, dhcp_server_id, params={}, headers={})
32
+ validate_id!(server_id)
33
+ validate_id!(dhcp_server_id)
34
+ execute(method: :delete, url: "#{base_path}/#{server_id}/dhcp-servers/#{dhcp_server_id}", params: params, headers: headers)
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::NetworkEdgeClustersInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/networks/servers"
7
+ end
8
+
9
+ def list_edge_clusters(server_id, params={}, headers={})
10
+ validate_id!(server_id)
11
+ execute(method: :get, url: "#{base_path}/#{server_id}/edge-clusters", params: params, headers: headers)
12
+ end
13
+
14
+ def get_edge_cluster(server_id, edge_cluster_id, params={}, headers={})
15
+ validate_id!(server_id)
16
+ validate_id!(edge_cluster_id)
17
+ execute(method: :get, url: "#{base_path}/#{server_id}/edge-clusters/#{edge_cluster_id}", params: params, headers: headers)
18
+ end
19
+
20
+ def update_edge_cluster(server_id, edge_cluster_id, payload, params={}, headers={})
21
+ validate_id!(server_id)
22
+ validate_id!(edge_cluster_id)
23
+ execute(method: :put, url: "#{base_path}/#{server_id}/edge-clusters/#{edge_cluster_id}", params: params, payload: payload, headers: headers)
24
+ end
25
+
26
+ end
@@ -66,6 +66,15 @@ class Morpheus::NetworkRoutersInterface < Morpheus::APIClient
66
66
  execute(opts)
67
67
  end
68
68
 
69
+ def get_firewall_rule_group(router_id, group_id, params={})
70
+ raise "#{self.class}.get() passed a blank router id!" if router_id.to_s == ''
71
+ raise "#{self.class}.get() passed a blank group id!" if group_id.to_s == ''
72
+ url = "#{@base_url}/api/networks/routers/#{router_id}/firewall-rule-groups/#{group_id}"
73
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
74
+ opts = {method: :get, url: url, headers: headers}
75
+ execute(opts)
76
+ end
77
+
69
78
  def create_firewall_rule_group(router_id, payload={})
70
79
  url = "#{@base_url}/api/networks/routers/#{router_id}/firewall-rule-groups"
71
80
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }