morpheus-cli 5.3.0.1 → 5.3.2

Sign up to get free protection for your applications and to get access to all the features.
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)