morpheus-cli 5.3.0.1 → 5.3.2

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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/README.md +1 -3
  4. data/lib/morpheus/api/account_groups_interface.rb +0 -6
  5. data/lib/morpheus/api/accounts_interface.rb +1 -7
  6. data/lib/morpheus/api/api_client.rb +155 -119
  7. data/lib/morpheus/api/appliance_settings_interface.rb +6 -9
  8. data/lib/morpheus/api/approvals_interface.rb +5 -8
  9. data/lib/morpheus/api/apps_interface.rb +0 -7
  10. data/lib/morpheus/api/archive_buckets_interface.rb +9 -16
  11. data/lib/morpheus/api/archive_files_interface.rb +0 -6
  12. data/lib/morpheus/api/auth_interface.rb +4 -4
  13. data/lib/morpheus/api/backup_settings_interface.rb +5 -8
  14. data/lib/morpheus/api/blueprints_interface.rb +1 -7
  15. data/lib/morpheus/api/budgets_interface.rb +0 -6
  16. data/lib/morpheus/api/certificate_types_interface.rb +14 -0
  17. data/lib/morpheus/api/certificates_interface.rb +9 -0
  18. data/lib/morpheus/api/cloud_datastores_interface.rb +0 -6
  19. data/lib/morpheus/api/cloud_folders_interface.rb +1 -7
  20. data/lib/morpheus/api/cloud_policies_interface.rb +0 -6
  21. data/lib/morpheus/api/cloud_resource_pools_interface.rb +0 -6
  22. data/lib/morpheus/api/clouds_interface.rb +0 -6
  23. data/lib/morpheus/api/clusters_interface.rb +39 -42
  24. data/lib/morpheus/api/containers_interface.rb +0 -6
  25. data/lib/morpheus/api/custom_instance_types_interface.rb +0 -6
  26. data/lib/morpheus/api/cypher_interface.rb +0 -6
  27. data/lib/morpheus/api/datastores_interface.rb +4 -7
  28. data/lib/morpheus/api/deploy_interface.rb +1 -6
  29. data/lib/morpheus/api/environments_interface.rb +0 -6
  30. data/lib/morpheus/api/execute_schedules_interface.rb +0 -6
  31. data/lib/morpheus/api/execution_request_interface.rb +0 -6
  32. data/lib/morpheus/api/file_copy_request_interface.rb +2 -9
  33. data/lib/morpheus/api/group_policies_interface.rb +0 -6
  34. data/lib/morpheus/api/groups_interface.rb +0 -7
  35. data/lib/morpheus/api/guidance_interface.rb +9 -12
  36. data/lib/morpheus/api/health_interface.rb +0 -6
  37. data/lib/morpheus/api/image_builder_boot_scripts_interface.rb +0 -6
  38. data/lib/morpheus/api/image_builder_image_builds_interface.rb +0 -6
  39. data/lib/morpheus/api/image_builder_interface.rb +3 -9
  40. data/lib/morpheus/api/image_builder_preseed_scripts_interface.rb +0 -6
  41. data/lib/morpheus/api/instance_types_interface.rb +0 -7
  42. data/lib/morpheus/api/instances_interface.rb +8 -19
  43. data/lib/morpheus/api/integration_types_interface.rb +14 -0
  44. data/lib/morpheus/api/integrations_interface.rb +36 -21
  45. data/lib/morpheus/api/invoice_line_items_interface.rb +4 -9
  46. data/lib/morpheus/api/jobs_interface.rb +11 -14
  47. data/lib/morpheus/api/key_pairs_interface.rb +0 -6
  48. data/lib/morpheus/api/library_cluster_layouts_interface.rb +0 -6
  49. data/lib/morpheus/api/library_container_scripts_interface.rb +0 -6
  50. data/lib/morpheus/api/library_container_templates_interface.rb +0 -6
  51. data/lib/morpheus/api/library_container_types_interface.rb +0 -6
  52. data/lib/morpheus/api/library_container_upgrades_interface.rb +0 -6
  53. data/lib/morpheus/api/library_instance_types_interface.rb +0 -6
  54. data/lib/morpheus/api/library_layouts_interface.rb +0 -6
  55. data/lib/morpheus/api/library_spec_template_types_interface.rb +0 -6
  56. data/lib/morpheus/api/library_spec_templates_interface.rb +0 -6
  57. data/lib/morpheus/api/license_interface.rb +0 -6
  58. data/lib/morpheus/api/load_balancers_interface.rb +0 -6
  59. data/lib/morpheus/api/log_settings_interface.rb +9 -12
  60. data/lib/morpheus/api/logs_interface.rb +0 -6
  61. data/lib/morpheus/api/monitoring_alerts_interface.rb +0 -6
  62. data/lib/morpheus/api/monitoring_apps_interface.rb +0 -6
  63. data/lib/morpheus/api/monitoring_checks_interface.rb +0 -6
  64. data/lib/morpheus/api/monitoring_contacts_interface.rb +0 -6
  65. data/lib/morpheus/api/monitoring_groups_interface.rb +0 -6
  66. data/lib/morpheus/api/monitoring_incidents_interface.rb +0 -6
  67. data/lib/morpheus/api/monitoring_interface.rb +6 -12
  68. data/lib/morpheus/api/network_domain_records_interface.rb +0 -6
  69. data/lib/morpheus/api/network_domains_interface.rb +0 -6
  70. data/lib/morpheus/api/network_groups_interface.rb +0 -6
  71. data/lib/morpheus/api/network_pool_ips_interface.rb +0 -6
  72. data/lib/morpheus/api/network_pool_servers_interface.rb +0 -6
  73. data/lib/morpheus/api/network_pools_interface.rb +0 -6
  74. data/lib/morpheus/api/network_proxies_interface.rb +0 -6
  75. data/lib/morpheus/api/network_routers_interface.rb +0 -6
  76. data/lib/morpheus/api/network_security_servers_interface.rb +6 -9
  77. data/lib/morpheus/api/network_services_interface.rb +14 -14
  78. data/lib/morpheus/api/network_subnets_interface.rb +0 -6
  79. data/lib/morpheus/api/network_types_interface.rb +1 -7
  80. data/lib/morpheus/api/networks_interface.rb +0 -6
  81. data/lib/morpheus/api/option_type_lists_interface.rb +18 -12
  82. data/lib/morpheus/api/option_types_interface.rb +0 -6
  83. data/lib/morpheus/api/options_interface.rb +0 -6
  84. data/lib/morpheus/api/packages_interface.rb +0 -6
  85. data/lib/morpheus/api/policies_interface.rb +1 -8
  86. data/lib/morpheus/api/power_schedules_interface.rb +0 -6
  87. data/lib/morpheus/api/price_sets_interface.rb +8 -11
  88. data/lib/morpheus/api/prices_interface.rb +12 -15
  89. data/lib/morpheus/api/processes_interface.rb +0 -6
  90. data/lib/morpheus/api/provision_types_interface.rb +0 -6
  91. data/lib/morpheus/api/provisioning_license_types_interface.rb +0 -6
  92. data/lib/morpheus/api/provisioning_licenses_interface.rb +0 -6
  93. data/lib/morpheus/api/provisioning_settings_interface.rb +6 -9
  94. data/lib/morpheus/api/read_interface.rb +23 -0
  95. data/lib/morpheus/api/reports_interface.rb +0 -6
  96. data/lib/morpheus/api/rest_interface.rb +12 -10
  97. data/lib/morpheus/api/roles_interface.rb +7 -6
  98. data/lib/morpheus/api/security_group_rules_interface.rb +0 -7
  99. data/lib/morpheus/api/security_groups_interface.rb +0 -6
  100. data/lib/morpheus/api/server_types_interface.rb +0 -6
  101. data/lib/morpheus/api/servers_interface.rb +7 -6
  102. data/lib/morpheus/api/service_plans_interface.rb +11 -14
  103. data/lib/morpheus/api/storage_providers_interface.rb +9 -16
  104. data/lib/morpheus/api/subnet_types_interface.rb +1 -7
  105. data/lib/morpheus/api/subnets_interface.rb +0 -6
  106. data/lib/morpheus/api/task_sets_interface.rb +0 -6
  107. data/lib/morpheus/api/tasks_interface.rb +0 -6
  108. data/lib/morpheus/api/user_groups_interface.rb +0 -6
  109. data/lib/morpheus/api/user_settings_interface.rb +38 -18
  110. data/lib/morpheus/api/user_sources_interface.rb +0 -6
  111. data/lib/morpheus/api/users_interface.rb +0 -6
  112. data/lib/morpheus/api/vdi_allocations_interface.rb +9 -0
  113. data/lib/morpheus/api/vdi_apps_interface.rb +9 -0
  114. data/lib/morpheus/api/vdi_gateways_interface.rb +9 -0
  115. data/lib/morpheus/api/vdi_interface.rb +28 -0
  116. data/lib/morpheus/api/vdi_pools_interface.rb +19 -0
  117. data/lib/morpheus/api/virtual_images_interface.rb +0 -6
  118. data/lib/morpheus/api/whitelabel_settings_interface.rb +8 -11
  119. data/lib/morpheus/api/wiki_interface.rb +0 -6
  120. data/lib/morpheus/cli.rb +9 -2
  121. data/lib/morpheus/cli/access_token_command.rb +1 -1
  122. data/lib/morpheus/cli/account_groups_command.rb +4 -4
  123. data/lib/morpheus/cli/apps.rb +68 -84
  124. data/lib/morpheus/cli/archives_command.rb +5 -5
  125. data/lib/morpheus/cli/blueprints_command.rb +5 -5
  126. data/lib/morpheus/cli/boot_scripts_command.rb +1 -1
  127. data/lib/morpheus/cli/catalog_item_types_command.rb +13 -13
  128. data/lib/morpheus/cli/certificates_command.rb +575 -0
  129. data/lib/morpheus/cli/change_password_command.rb +4 -4
  130. data/lib/morpheus/cli/cli_command.rb +63 -7
  131. data/lib/morpheus/cli/clouds.rb +3 -2
  132. data/lib/morpheus/cli/clusters.rb +3 -3
  133. data/lib/morpheus/cli/commands/standard/man_command.rb +4 -5
  134. data/lib/morpheus/cli/credentials.rb +4 -11
  135. data/lib/morpheus/cli/environments_command.rb +1 -1
  136. data/lib/morpheus/cli/execute_schedules_command.rb +3 -3
  137. data/lib/morpheus/cli/hosts.rb +253 -232
  138. data/lib/morpheus/cli/image_builder_command.rb +6 -6
  139. data/lib/morpheus/cli/instance_types.rb +1 -1
  140. data/lib/morpheus/cli/instances.rb +196 -186
  141. data/lib/morpheus/cli/integrations_command.rb +1155 -42
  142. data/lib/morpheus/cli/invoices_command.rb +75 -67
  143. data/lib/morpheus/cli/key_pairs.rb +2 -2
  144. data/lib/morpheus/cli/library_cluster_layouts_command.rb +2 -3
  145. data/lib/morpheus/cli/library_container_scripts_command.rb +4 -5
  146. data/lib/morpheus/cli/library_container_templates_command.rb +5 -1
  147. data/lib/morpheus/cli/library_container_types_command.rb +8 -9
  148. data/lib/morpheus/cli/library_instance_types_command.rb +6 -7
  149. data/lib/morpheus/cli/library_layouts_command.rb +9 -5
  150. data/lib/morpheus/cli/library_option_lists_command.rb +72 -20
  151. data/lib/morpheus/cli/library_option_types_command.rb +8 -4
  152. data/lib/morpheus/cli/library_spec_templates_command.rb +3 -4
  153. data/lib/morpheus/cli/library_upgrades_command.rb +6 -6
  154. data/lib/morpheus/cli/license.rb +2 -2
  155. data/lib/morpheus/cli/load_balancers.rb +1 -1
  156. data/lib/morpheus/cli/login.rb +10 -1
  157. data/lib/morpheus/cli/mixins/option_source_helper.rb +15 -16
  158. data/lib/morpheus/cli/mixins/print_helper.rb +33 -18
  159. data/lib/morpheus/cli/mixins/provisioning_helper.rb +4 -4
  160. data/lib/morpheus/cli/mixins/vdi_helper.rb +246 -0
  161. data/lib/morpheus/cli/network_domains_command.rb +2 -2
  162. data/lib/morpheus/cli/network_routers_command.rb +22 -9
  163. data/lib/morpheus/cli/networks_command.rb +2 -2
  164. data/lib/morpheus/cli/option_types.rb +39 -34
  165. data/lib/morpheus/cli/policies_command.rb +0 -1
  166. data/lib/morpheus/cli/power_schedules_command.rb +3 -3
  167. data/lib/morpheus/cli/preseed_scripts_command.rb +1 -1
  168. data/lib/morpheus/cli/remote.rb +2 -2
  169. data/lib/morpheus/cli/reports_command.rb +5 -2
  170. data/lib/morpheus/cli/roles.rb +224 -64
  171. data/lib/morpheus/cli/security_group_rules.rb +1 -1
  172. data/lib/morpheus/cli/setup.rb +0 -1
  173. data/lib/morpheus/cli/subnets_command.rb +11 -2
  174. data/lib/morpheus/cli/tenants_command.rb +3 -3
  175. data/lib/morpheus/cli/user_groups_command.rb +3 -3
  176. data/lib/morpheus/cli/user_settings_command.rb +268 -57
  177. data/lib/morpheus/cli/user_sources_command.rb +3 -3
  178. data/lib/morpheus/cli/users.rb +3 -3
  179. data/lib/morpheus/cli/vdi_allocations_command.rb +159 -0
  180. data/lib/morpheus/cli/vdi_apps_command.rb +317 -0
  181. data/lib/morpheus/cli/vdi_command.rb +359 -0
  182. data/lib/morpheus/cli/vdi_gateways_command.rb +290 -0
  183. data/lib/morpheus/cli/vdi_pools_command.rb +571 -0
  184. data/lib/morpheus/cli/version.rb +1 -1
  185. data/lib/morpheus/cli/virtual_images.rb +1 -1
  186. data/lib/morpheus/cli/whoami.rb +0 -15
  187. data/lib/morpheus/cli/wiki_command.rb +1 -1
  188. data/lib/morpheus/rest_client.rb +30 -0
  189. data/lib/morpheus/terminal.rb +15 -7
  190. metadata +18 -2
@@ -1,12 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::TasksInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @expires_at = expires_at
9
- end
10
4
 
11
5
  def list(params={})
12
6
  url = "#{@base_url}/api/tasks"
@@ -1,12 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::UserGroupsInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token, expires_at = nil, base_url=nil)
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @expires_at = expires_at
9
- end
10
4
 
11
5
  def get(account_id, id)
12
6
  raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
@@ -2,31 +2,29 @@ require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::UserSettingsInterface < Morpheus::APIClient
4
4
 
5
- def get(params={})
6
- url = "#{@base_url}/api/user-settings"
7
- headers = { :params => params, authorization: "Bearer #{@access_token}"}
8
- opts = {method: :get, url: url, headers: headers}
9
- execute(opts)
5
+ def base_path
6
+ "/api/user-settings"
10
7
  end
11
8
 
12
- def update(params, payload)
13
- url = "#{@base_url}/api/user-settings"
14
- headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json'}
15
- opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
16
- execute(opts)
9
+ def get(params={}, headers={})
10
+ execute(method: :get, url: "#{base_path}", params: params, headers: headers)
17
11
  end
18
12
 
19
- # NOT json, download file as attachment
13
+ def update(payload, params={}, headers={})
14
+ execute(method: :put, url: "#{base_path}", params: params, payload: payload, headers: headers)
15
+ end
16
+
17
+ # download file as attachment
20
18
  def download_avatar(params, outfile)
21
- url = "#{@base_url}/api/user-settings/avatar"
19
+ url = "#{base_path}/avatar"
22
20
  headers = { :params => params, :authorization => "Bearer #{@access_token}"}
23
21
  opts = {method: :get, url: url, headers: headers, payload: payload}
24
22
  execute(opts)
25
23
  end
26
24
 
27
- # NOT json, multipart file upload
25
+ # multipart file upload
28
26
  def update_avatar(avatar_file, params={})
29
- url = "#{@base_url}/api/user-settings/avatar"
27
+ url = "#{base_path}/avatar"
30
28
  headers = { :params => params, :authorization => "Bearer #{@access_token}"}
31
29
  payload = {}
32
30
  #payload['user'] ||= {}
@@ -38,7 +36,29 @@ class Morpheus::UserSettingsInterface < Morpheus::APIClient
38
36
  end
39
37
 
40
38
  def remove_avatar(params={})
41
- url = "#{@base_url}/api/user-settings/avatar"
39
+ url = "#{base_path}/avatar"
40
+ headers = { :params => params, :authorization => "Bearer #{@access_token}"}
41
+ # POST empty payload will do
42
+ payload = {}
43
+ opts = {method: :delete, url: url, headers: headers, payload: payload}
44
+ execute(opts)
45
+ end
46
+
47
+ # multipart file upload
48
+ def update_desktop_background(desktop_background_file, params={})
49
+ url = "#{base_path}/desktop-background"
50
+ headers = { :params => params, :authorization => "Bearer #{@access_token}"}
51
+ payload = {}
52
+ #payload['user'] ||= {}
53
+ #payload['user']['desktopBackground'] = desktop_background_file
54
+ payload['user.desktopBackground'] = desktop_background_file
55
+ payload[:multipart] = true
56
+ opts = {method: :post, url: url, headers: headers, payload: payload}
57
+ execute(opts)
58
+ end
59
+
60
+ def remove_desktop_background(params={})
61
+ url = "#{base_path}/desktop-background"
42
62
  headers = { :params => params, :authorization => "Bearer #{@access_token}"}
43
63
  # POST empty payload will do
44
64
  payload = {}
@@ -47,21 +67,21 @@ class Morpheus::UserSettingsInterface < Morpheus::APIClient
47
67
  end
48
68
 
49
69
  def regenerate_access_token(params, payload={})
50
- url = "#{@base_url}/api/user-settings/regenerate-access-token"
70
+ url = "#{base_path}/regenerate-access-token"
51
71
  headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json'}
52
72
  opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
53
73
  execute(opts)
54
74
  end
55
75
 
56
76
  def clear_access_token(params, payload={})
57
- url = "#{@base_url}/api/user-settings/clear-access-token"
77
+ url = "#{base_path}/clear-access-token"
58
78
  headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json'}
59
79
  opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
60
80
  execute(opts)
61
81
  end
62
82
 
63
83
  def available_clients(params={})
64
- url = "#{@base_url}/api/user-settings/api-clients"
84
+ url = "#{base_path}/api-clients"
65
85
  headers = { :params => params, authorization: "Bearer #{@access_token}"}
66
86
  opts = {method: :get, url: url, headers: headers}
67
87
  execute(opts)
@@ -1,12 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::UserSourcesInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token, expires_at = nil, base_url=nil)
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @expires_at = expires_at
9
- end
10
4
 
11
5
  def get(account_id, id)
12
6
  raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
@@ -1,12 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::UsersInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token, expires_at = nil, base_url=nil)
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @expires_at = expires_at
9
- end
10
4
 
11
5
  def get(account_id, id, params={})
12
6
  raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
@@ -0,0 +1,9 @@
1
+ require 'morpheus/api/read_interface'
2
+
3
+ class Morpheus::VdiAllocationsInterface < Morpheus::ReadInterface
4
+
5
+ def base_path
6
+ "/api/vdi-allocations"
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'morpheus/api/rest_interface'
2
+
3
+ class Morpheus::VdiAppsInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/vdi-apps"
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'morpheus/api/rest_interface'
2
+
3
+ class Morpheus::VdiGatewaysInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/vdi-gateways"
7
+ end
8
+
9
+ end
@@ -0,0 +1,28 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ # Interface for VDI Persona that provides viewing and allocating virtual desktops (VDI pools)
4
+ class Morpheus::VdiInterface < Morpheus::APIClient
5
+
6
+ def base_path
7
+ "/api/vdi"
8
+ end
9
+
10
+ # def dashboard(params={})
11
+ # execute(method: :get, url: "#{base_path}/dashboard", params: params)
12
+ # end
13
+
14
+ def list(params={})
15
+ execute(method: :get, url: "#{base_path}", params: params)
16
+ end
17
+
18
+ def get(id, params={})
19
+ validate_id!(id)
20
+ execute(method: :get, url: "#{base_path}/#{id}", params: params)
21
+ end
22
+
23
+ def allocate(id, payload, params={})
24
+ validate_id!(id)
25
+ execute(method: :post, url: "#{base_path}/#{id}/allocate", params: params, payload: payload.to_json)
26
+ end
27
+
28
+ end
@@ -0,0 +1,19 @@
1
+ require 'morpheus/api/rest_interface'
2
+
3
+ class Morpheus::VdiPoolsInterface < Morpheus::RestInterface
4
+
5
+ def base_path
6
+ "/api/vdi-pools"
7
+ end
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
+ end
@@ -4,12 +4,6 @@ require 'zlib'
4
4
  require 'forwardable'
5
5
 
6
6
  class Morpheus::VirtualImagesInterface < Morpheus::APIClient
7
- def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
8
- @access_token = access_token
9
- @refresh_token = refresh_token
10
- @base_url = base_url
11
- @expires_at = expires_at
12
- end
13
7
 
14
8
  def virtual_image_types(options={})
15
9
  url = "#{@base_url}/api/virtual-image-types"
@@ -1,41 +1,38 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::WhitelabelSettingsInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token,expires_at = nil, base_url=nil, api='whitelabel-settings')
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @api_url = "#{base_url}/api/#{api}"
9
- @expires_at = expires_at
4
+
5
+ def base_path
6
+ "/api/whitelabel-settings"
10
7
  end
11
8
 
12
9
  def get(params={})
13
- url = @api_url
10
+ url = base_path
14
11
  headers = { params: params, authorization: "Bearer #{@access_token}" }
15
12
  execute(method: :get, url: url, headers: headers)
16
13
  end
17
14
 
18
15
  def update(payload, params={})
19
- url = @api_url
16
+ url = base_path
20
17
  headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
21
18
  execute(method: :put, url: url, headers: headers, payload: payload.to_json)
22
19
  end
23
20
 
24
21
  def update_images(payload, params={})
25
- url = "#{@api_url}/images"
22
+ url = "#{base_path}/images"
26
23
  headers = { params: params, :authorization => "Bearer #{@access_token}" }
27
24
  payload[:multipart] = true
28
25
  execute(method: :post, url: url, headers: headers, payload: payload)
29
26
  end
30
27
 
31
28
  def reset_image(image_type, params={})
32
- url = "#{@api_url}/images/#{image_type}"
29
+ url = "#{base_path}/images/#{image_type}"
33
30
  headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
34
31
  execute(method: :delete, url: url, headers: headers)
35
32
  end
36
33
 
37
34
  def download_image(image_type, outfile, params={})
38
- url = "#{@api_url}/images/#{image_type}"
35
+ url = "#{base_path}/images/#{image_type}"
39
36
  headers = { params: params, :authorization => "Bearer #{@access_token}" }
40
37
  opts = {method: :get, url: url, headers: headers, timeout: 172800}
41
38
 
@@ -1,12 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::WikiInterface < Morpheus::APIClient
4
- def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
5
- @access_token = access_token
6
- @refresh_token = refresh_token
7
- @base_url = base_url
8
- @expires_at = expires_at
9
- end
10
4
 
11
5
  def get(id, params={})
12
6
  raise "#{self.class}.get() passed a blank name!" if id.to_s == ''
data/lib/morpheus/cli.rb CHANGED
@@ -46,6 +46,7 @@ module Morpheus
46
46
  # load interfaces
47
47
  require 'morpheus/api/api_client.rb'
48
48
  require 'morpheus/api/rest_interface.rb'
49
+ require 'morpheus/api/read_interface.rb'
49
50
  Dir[File.dirname(__FILE__) + "/api/**/*.rb"].each {|file| load file }
50
51
 
51
52
  # load mixins
@@ -175,9 +176,15 @@ module Morpheus
175
176
  load 'morpheus/cli/projects_command.rb'
176
177
  load 'morpheus/cli/backups_command.rb'
177
178
  load 'morpheus/cli/backup_jobs_command.rb'
178
- load 'morpheus/cli/catalog_item_types_command.rb' # catalog-types
179
- load 'morpheus/cli/service_catalog_command.rb' # catalog
179
+ load 'morpheus/cli/catalog_item_types_command.rb' # self-service
180
+ load 'morpheus/cli/service_catalog_command.rb' # catalog (Service Catalog persona)
180
181
  load 'morpheus/cli/usage_command.rb'
182
+ load 'morpheus/cli/vdi_pools_command.rb'
183
+ load 'morpheus/cli/vdi_allocations_command.rb'
184
+ load 'morpheus/cli/vdi_apps_command.rb'
185
+ load 'morpheus/cli/vdi_gateways_command.rb'
186
+ load 'morpheus/cli/vdi_command.rb' # (VDI persona)
187
+ load 'morpheus/cli/certificates_command.rb' # (VDI persona)
181
188
  # add new commands here...
182
189
 
183
190
  end
@@ -156,7 +156,7 @@ class Morpheus::Cli::AccessTokenCommand
156
156
  end
157
157
  end
158
158
  if options[:dry_run]
159
- print_dry_run Morpheus::AuthInterface.new({url:@appliance_url}).setopts(options).use_refresh_token(refresh_token_value)
159
+ print_dry_run @api_client.auth.dry.use_refresh_token(refresh_token_value)
160
160
  return 0
161
161
  end
162
162
  unless options[:quiet]
@@ -28,11 +28,11 @@ class Morpheus::Cli::AccountGroupsCommand
28
28
 
29
29
  def connect(opts)
30
30
  @api_client = establish_remote_appliance_connection(opts)
31
- @account_groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).account_groups
32
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
31
+ @account_groups_interface = @api_client.account_groups
32
+ @accounts_interface = @api_client.accounts
33
33
 
34
- @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
35
- @clouds_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).clouds
34
+ @groups_interface = @api_client.groups
35
+ @clouds_interface = @api_client.clouds
36
36
  end
37
37
 
38
38
  def handle(args)
@@ -37,15 +37,15 @@ class Morpheus::Cli::Apps
37
37
  @api_client = establish_remote_appliance_connection(opts)
38
38
  @accounts_interface = @api_client.accounts
39
39
  @users_interface = @api_client.users
40
- @apps_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).apps
41
- @blueprints_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).blueprints
42
- @instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instance_types
43
- @library_layouts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_layouts
44
- @instances_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instances
45
- @options_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).options
46
- @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
47
- @clouds_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).clouds
48
- @logs_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).logs
40
+ @apps_interface = @api_client.apps
41
+ @blueprints_interface = @api_client.blueprints
42
+ @instance_types_interface = @api_client.instance_types
43
+ @library_layouts_interface = @api_client.library_layouts
44
+ @instances_interface = @api_client.instances
45
+ @options_interface = @api_client.options
46
+ @groups_interface = @api_client.groups
47
+ @clouds_interface = @api_client.clouds
48
+ @logs_interface = @api_client.logs
49
49
  @processes_interface = @api_client.processes
50
50
  @active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
51
51
  end
@@ -88,7 +88,7 @@ class Morpheus::Cli::Apps
88
88
  opts.on('-a', '--details', "Display all details: memory and storage usage used / max values." ) do
89
89
  options[:details] = true
90
90
  end
91
- build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
91
+ build_standard_list_options(opts, options)
92
92
  opts.footer = "List apps."
93
93
  end
94
94
  optparse.parse!(args)
@@ -97,64 +97,53 @@ class Morpheus::Cli::Apps
97
97
  options[:phrase] = args.join(" ")
98
98
  end
99
99
  connect(options)
100
- begin
101
- if options[:type]
102
- params['type'] = [options[:type]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
103
- end
104
- if options[:blueprint]
105
- blueprint_ids = [options[:blueprint]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
106
- params['blueprintId'] = blueprint_ids.collect do |blueprint_id|
107
- if blueprint_id.to_s =~ /\A\d{1,}\Z/
108
- return blueprint_id
109
- else
110
- blueprint = find_blueprint_by_name_or_id(blueprint_id)
111
- return 1 if blueprint.nil?
112
- blueprint['id']
113
- end
100
+
101
+ if options[:type]
102
+ params['type'] = [options[:type]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
103
+ end
104
+ if options[:blueprint]
105
+ blueprint_ids = [options[:blueprint]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
106
+ params['blueprintId'] = blueprint_ids.collect do |blueprint_id|
107
+ if blueprint_id.to_s =~ /\A\d{1,}\Z/
108
+ return blueprint_id
109
+ else
110
+ blueprint = find_blueprint_by_name_or_id(blueprint_id)
111
+ return 1 if blueprint.nil?
112
+ blueprint['id']
114
113
  end
115
114
  end
116
- if options[:owner]
117
- owner_ids = [options[:owner]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
118
- params['ownerId'] = owner_ids.collect do |owner_id|
119
- if owner_id.to_s =~ /\A\d{1,}\Z/
120
- return owner_id
121
- else
122
- user = find_available_user_option(owner_id)
123
- return 1 if user.nil?
124
- user['id']
125
- end
115
+ end
116
+ if options[:owner]
117
+ owner_ids = [options[:owner]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
118
+ params['ownerId'] = owner_ids.collect do |owner_id|
119
+ if owner_id.to_s =~ /\A\d{1,}\Z/
120
+ return owner_id
121
+ else
122
+ user = find_available_user_option(owner_id)
123
+ return 1 if user.nil?
124
+ user['id']
126
125
  end
127
126
  end
128
- params.merge!(parse_list_options(options))
129
- account = nil
130
- if options[:owner]
131
- created_by_ids = find_all_user_ids(account ? account['id'] : nil, options[:owner])
132
- return if created_by_ids.nil?
133
- params['createdBy'] = created_by_ids
134
- # params['ownerId'] = created_by_ids # 4.2.1+
135
- end
136
-
137
- params['showDeleted'] = options[:showDeleted] if options.key?(:showDeleted)
138
- params['deleted'] = options[:deleted] if options.key?(:deleted)
127
+ end
128
+ params.merge!(parse_list_options(options))
129
+ account = nil
130
+ if options[:owner]
131
+ created_by_ids = find_all_user_ids(account ? account['id'] : nil, options[:owner])
132
+ return if created_by_ids.nil?
133
+ params['createdBy'] = created_by_ids
134
+ # params['ownerId'] = created_by_ids # 4.2.1+
135
+ end
139
136
 
140
- @apps_interface.setopts(options)
141
- if options[:dry_run]
142
- print_dry_run @apps_interface.dry.list(params)
143
- return
144
- end
137
+ params['showDeleted'] = options[:showDeleted] if options.key?(:showDeleted)
138
+ params['deleted'] = options[:deleted] if options.key?(:deleted)
145
139
 
146
- json_response = @apps_interface.list(params)
147
- if options[:json]
148
- puts as_json(json_response, options, "apps")
149
- return 0
150
- elsif options[:yaml]
151
- puts as_yaml(json_response, options, "apps")
152
- return 0
153
- elsif options[:csv]
154
- puts records_as_csv(json_response['apps'], options)
155
- return 0
156
- end
157
-
140
+ @apps_interface.setopts(options)
141
+ if options[:dry_run]
142
+ print_dry_run @apps_interface.dry.list(params)
143
+ return
144
+ end
145
+ json_response = @apps_interface.list(params)
146
+ render_response(json_response, options, "apps") do
158
147
  apps = json_response['apps']
159
148
  title = "Morpheus Apps"
160
149
  subtitles = []
@@ -167,10 +156,8 @@ class Morpheus::Cli::Apps
167
156
  print_results_pagination(json_response)
168
157
  end
169
158
  print reset,"\n"
170
- rescue RestClient::Exception => e
171
- print_rest_exception(e, options)
172
- exit 1
173
159
  end
160
+ return 0, nil
174
161
  end
175
162
 
176
163
  def count(args)
@@ -645,7 +632,7 @@ class Morpheus::Cli::Apps
645
632
  opts.on('--refresh-until STATUS', String, "Refresh until a specified status is reached.") do |val|
646
633
  options[:refresh_until_status] = val.to_s.downcase
647
634
  end
648
- build_common_options(opts, options, [:json, :yaml, :csv, :fields, :outfile, :dry_run, :remote])
635
+ build_standard_get_options(opts, options)
649
636
  opts.footer = "Get details about an app.\n" +
650
637
  "[app] is required. This is the name or id of an app. Supports 1-N [app] arguments."
651
638
  end
@@ -665,19 +652,19 @@ class Morpheus::Cli::Apps
665
652
 
666
653
  end
667
654
 
668
- def _get(arg, options={})
669
- begin
670
- app = find_app_by_name_or_id(arg)
671
- @apps_interface.setopts(options)
672
- if options[:dry_run]
673
- print_dry_run @apps_interface.dry.get(app['id'])
674
- return
675
- end
676
- json_response = @apps_interface.get(app['id'])
677
-
678
- render_result = render_with_format(json_response, options, 'blueprint')
679
- return 0 if render_result
680
-
655
+ def _get(id, options={})
656
+ app = nil
657
+ if id.to_s !~ /\A\d{1,}\Z/
658
+ app = find_app_by_name_or_id(id)
659
+ id = app['id']
660
+ end
661
+ @apps_interface.setopts(options)
662
+ if options[:dry_run]
663
+ print_dry_run @apps_interface.dry.get(id)
664
+ return
665
+ end
666
+ json_response = @apps_interface.get(id.to_i)
667
+ render_response(json_response, options, 'app') do
681
668
  app = json_response['app']
682
669
  app_tiers = app['appTiers']
683
670
  print_h1 "App Details", [], options
@@ -799,14 +786,11 @@ class Morpheus::Cli::Apps
799
786
  print cyan, "Refreshing in #{options[:refresh_interval] > 1 ? options[:refresh_interval].to_i : options[:refresh_interval]} seconds"
800
787
  sleep_with_dots(options[:refresh_interval])
801
788
  print "\n"
802
- _get(arg, options)
789
+ _get(app['id'], options)
803
790
  end
804
791
  end
805
-
806
- rescue RestClient::Exception => e
807
- print_rest_exception(e, options)
808
- exit 1
809
792
  end
793
+ return 0, nil
810
794
  end
811
795
 
812
796
  def update(args)