morpheus-cli 4.1.8 → 4.1.9

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/api_client.rb +24 -0
  4. data/lib/morpheus/api/{old_cypher_interface.rb → budgets_interface.rb} +10 -11
  5. data/lib/morpheus/api/cloud_datastores_interface.rb +7 -0
  6. data/lib/morpheus/api/cloud_resource_pools_interface.rb +2 -2
  7. data/lib/morpheus/api/cypher_interface.rb +18 -12
  8. data/lib/morpheus/api/health_interface.rb +72 -0
  9. data/lib/morpheus/api/instances_interface.rb +1 -1
  10. data/lib/morpheus/api/library_instance_types_interface.rb +7 -0
  11. data/lib/morpheus/api/log_settings_interface.rb +6 -0
  12. data/lib/morpheus/api/network_security_servers_interface.rb +30 -0
  13. data/lib/morpheus/api/price_sets_interface.rb +42 -0
  14. data/lib/morpheus/api/prices_interface.rb +68 -0
  15. data/lib/morpheus/api/provisioning_settings_interface.rb +29 -0
  16. data/lib/morpheus/api/servers_interface.rb +1 -1
  17. data/lib/morpheus/api/service_plans_interface.rb +34 -11
  18. data/lib/morpheus/api/task_sets_interface.rb +8 -0
  19. data/lib/morpheus/api/tasks_interface.rb +8 -0
  20. data/lib/morpheus/cli.rb +6 -3
  21. data/lib/morpheus/cli/appliance_settings_command.rb +13 -5
  22. data/lib/morpheus/cli/approvals_command.rb +1 -1
  23. data/lib/morpheus/cli/apps.rb +88 -28
  24. data/lib/morpheus/cli/backup_settings_command.rb +1 -1
  25. data/lib/morpheus/cli/blueprints_command.rb +2 -0
  26. data/lib/morpheus/cli/budgets_command.rb +672 -0
  27. data/lib/morpheus/cli/cli_command.rb +13 -2
  28. data/lib/morpheus/cli/cli_registry.rb +1 -0
  29. data/lib/morpheus/cli/clusters.rb +40 -274
  30. data/lib/morpheus/cli/commands/standard/benchmark_command.rb +114 -66
  31. data/lib/morpheus/cli/commands/standard/coloring_command.rb +12 -0
  32. data/lib/morpheus/cli/commands/standard/curl_command.rb +31 -6
  33. data/lib/morpheus/cli/commands/standard/echo_command.rb +8 -3
  34. data/lib/morpheus/cli/commands/standard/set_prompt_command.rb +1 -1
  35. data/lib/morpheus/cli/containers_command.rb +37 -24
  36. data/lib/morpheus/cli/cypher_command.rb +191 -150
  37. data/lib/morpheus/cli/health_command.rb +903 -0
  38. data/lib/morpheus/cli/hosts.rb +43 -32
  39. data/lib/morpheus/cli/instances.rb +119 -68
  40. data/lib/morpheus/cli/jobs_command.rb +1 -1
  41. data/lib/morpheus/cli/library_instance_types_command.rb +61 -11
  42. data/lib/morpheus/cli/library_option_types_command.rb +2 -2
  43. data/lib/morpheus/cli/log_settings_command.rb +46 -3
  44. data/lib/morpheus/cli/logs_command.rb +24 -17
  45. data/lib/morpheus/cli/mixins/accounts_helper.rb +2 -0
  46. data/lib/morpheus/cli/mixins/logs_helper.rb +73 -19
  47. data/lib/morpheus/cli/mixins/print_helper.rb +29 -1
  48. data/lib/morpheus/cli/mixins/provisioning_helper.rb +554 -96
  49. data/lib/morpheus/cli/mixins/whoami_helper.rb +13 -1
  50. data/lib/morpheus/cli/networks_command.rb +3 -0
  51. data/lib/morpheus/cli/option_types.rb +83 -53
  52. data/lib/morpheus/cli/price_sets_command.rb +543 -0
  53. data/lib/morpheus/cli/prices_command.rb +669 -0
  54. data/lib/morpheus/cli/processes_command.rb +0 -2
  55. data/lib/morpheus/cli/provisioning_settings_command.rb +237 -0
  56. data/lib/morpheus/cli/remote.rb +9 -4
  57. data/lib/morpheus/cli/reports_command.rb +10 -4
  58. data/lib/morpheus/cli/roles.rb +93 -38
  59. data/lib/morpheus/cli/security_groups.rb +10 -0
  60. data/lib/morpheus/cli/service_plans_command.rb +736 -0
  61. data/lib/morpheus/cli/tasks.rb +220 -8
  62. data/lib/morpheus/cli/tenants_command.rb +3 -16
  63. data/lib/morpheus/cli/users.rb +2 -25
  64. data/lib/morpheus/cli/version.rb +1 -1
  65. data/lib/morpheus/cli/whitelabel_settings_command.rb +18 -18
  66. data/lib/morpheus/cli/whoami.rb +28 -10
  67. data/lib/morpheus/cli/workflows.rb +488 -36
  68. data/lib/morpheus/formatters.rb +22 -0
  69. data/morpheus-cli.gemspec +1 -0
  70. metadata +28 -5
  71. data/lib/morpheus/cli/accounts.rb +0 -335
  72. data/lib/morpheus/cli/old_cypher_command.rb +0 -412
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cd6e1f9ac938239cda4d222bb5f48a1a6567203d030e65a2efa6a5ed4742918
4
- data.tar.gz: '09548881659c074b1d2d37219f5d13a3d94d9320672c2cca07803da1311dcac9'
3
+ metadata.gz: 07e484ff3233511b2a51a42df7cba277b96ac9f838166225b1b94af3229cba37
4
+ data.tar.gz: 63af8a86ea3e86102a7270f7e6187a26750787a86c0fbf5345c8652271543883
5
5
  SHA512:
6
- metadata.gz: 8bd9c56fdeaf03e419cd48780afaea7d645ef07ab0c898b86a2ec3ca33e381fab349d4b79f7f260890be0ef0d9a579d32949c6834419597862ba380a27672762
7
- data.tar.gz: 2675aed77287c61387bdb1c3d1484d0a2eaa96d6fafff21ffca64cc0a2a12be3a4e0745906fd90f6f432524b6f87e7d7cb93da58f84e6dcca620662c0e7d99a4
6
+ metadata.gz: 7b9f0413f96cdc1da166407a814ca0d6de85554907e246f0f565b5b5b29b826b44785edab03056fd35b2751a02c4936033bc9de1b571d926509e4c489f38ef04
7
+ data.tar.gz: 02e0b0c3a999fc1e2d1340df9bf2933e45897b41aa5bcc7b0c82146bc2f8d685548363f8ddb9aa6b0bf91dea35bd380a2cde144f02efda2c75bf8c777aae50f3
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
1
  FROM ruby:2.5.1
2
2
 
3
- RUN gem install morpheus-cli -v 4.1.8
3
+ RUN gem install morpheus-cli -v 4.1.9
4
4
 
5
5
  ENTRYPOINT ["morpheus"]
@@ -331,6 +331,10 @@ class Morpheus::APIClient
331
331
  Morpheus::ApplianceSettingsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
332
332
  end
333
333
 
334
+ def provisioning_settings
335
+ Morpheus::ProvisioningSettingsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
336
+ end
337
+
334
338
  def containers
335
339
  Morpheus::ContainersInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
336
340
  end
@@ -359,6 +363,14 @@ class Morpheus::APIClient
359
363
  Morpheus::ServicePlansInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
360
364
  end
361
365
 
366
+ def price_sets
367
+ Morpheus::PriceSetsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
368
+ end
369
+
370
+ def prices
371
+ Morpheus::PricesInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
372
+ end
373
+
362
374
  def load_balancers
363
375
  Morpheus::LoadBalancersInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
364
376
  end
@@ -526,6 +538,10 @@ class Morpheus::APIClient
526
538
  Morpheus::NetworkServicesInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
527
539
  end
528
540
 
541
+ def network_security_servers
542
+ Morpheus::NetworkSecurityServersInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
543
+ end
544
+
529
545
  def network_pool_servers
530
546
  Morpheus::NetworkPoolServersInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
531
547
  end
@@ -635,6 +651,14 @@ class Morpheus::APIClient
635
651
  Morpheus::WikiInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
636
652
  end
637
653
 
654
+ def budgets
655
+ Morpheus::BudgetsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
656
+ end
657
+
658
+ def health
659
+ Morpheus::HealthInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
660
+ end
661
+
638
662
  # new interfaces get added here
639
663
 
640
664
  end
@@ -1,7 +1,6 @@
1
1
  require 'morpheus/api/api_client'
2
- require 'uri'
3
2
 
4
- class Morpheus::OldCypherInterface < Morpheus::APIClient
3
+ class Morpheus::BudgetsInterface < Morpheus::APIClient
5
4
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
6
5
  @access_token = access_token
7
6
  @refresh_token = refresh_token
@@ -10,43 +9,43 @@ class Morpheus::OldCypherInterface < Morpheus::APIClient
10
9
  end
11
10
 
12
11
  def get(id, params={})
13
- raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
14
- url = "#{@base_url}/api/cypher/#{id}"
12
+ raise "#{self.class}.get() passed a blank name!" if id.to_s == ''
13
+ url = "#{@base_url}/api/budgets/#{id}"
15
14
  headers = { params: params, authorization: "Bearer #{@access_token}" }
16
15
  opts = {method: :get, url: url, headers: headers}
17
16
  execute(opts)
18
17
  end
19
18
 
20
19
  def list(params={})
21
- url = "#{@base_url}/api/cypher"
20
+ url = "#{@base_url}/api/budgets"
22
21
  headers = { params: params, authorization: "Bearer #{@access_token}" }
23
22
  opts = {method: :get, url: url, headers: headers}
24
23
  execute(opts)
25
24
  end
26
25
 
27
26
  def create(payload)
28
- url = "#{@base_url}/api/cypher"
27
+ url = "#{@base_url}/api/budgets"
29
28
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
30
29
  opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
30
  execute(opts)
32
31
  end
33
32
 
34
33
  def update(id, payload)
35
- url = "#{@base_url}/api/cypher/#{id}"
34
+ url = "#{@base_url}/api/budgets/#{id}"
36
35
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
36
  opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
38
37
  execute(opts)
39
38
  end
40
39
 
41
40
  def destroy(id, params={})
42
- url = "#{@base_url}/api/cypher/#{id}"
43
- headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
41
+ url = "#{@base_url}/api/budgets/#{id}"
42
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
44
43
  opts = {method: :delete, url: url, headers: headers}
45
44
  execute(opts)
46
45
  end
47
46
 
48
- def decrypt(id, params={})
49
- url = "#{@base_url}/api/cypher/#{id}/decrypt"
47
+ def list_types(params={})
48
+ url = "#{@base_url}/api/budget-types"
50
49
  headers = { params: params, authorization: "Bearer #{@access_token}" }
51
50
  opts = {method: :get, url: url, headers: headers}
52
51
  execute(opts)
@@ -44,4 +44,11 @@ class Morpheus::CloudDatastoresInterface < Morpheus::APIClient
44
44
  execute(opts)
45
45
  end
46
46
 
47
+ def selectable(cloud_id, params={})
48
+ url = "#{@base_url}/api/zones/#{cloud_id}/data-stores/selectable"
49
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
50
+ opts = {method: :get, url: url, headers: headers}
51
+ execute(opts)
52
+ end
53
+
47
54
  end
@@ -10,14 +10,14 @@ class Morpheus::CloudResourcePoolsInterface < Morpheus::APIClient
10
10
 
11
11
  def get(cloud_id, id, params={})
12
12
  raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
- url = "#{@base_url}/api/zones/#{cloud_id}/resource-pools/#{id}"
13
+ url = cloud_id.nil? ? "#{@base_url}/api/zones/resource-pools/#{id}" : "#{@base_url}/api/zones/#{cloud_id}/resource-pools/#{id}"
14
14
  headers = { params: params, authorization: "Bearer #{@access_token}" }
15
15
  opts = {method: :get, url: url, headers: headers}
16
16
  execute(opts)
17
17
  end
18
18
 
19
19
  def list(cloud_id, params={})
20
- url = "#{@base_url}/api/zones/#{cloud_id}/resource-pools"
20
+ url = cloud_id.nil? ? "#{@base_url}/api/zones/resource-pools" : "#{@base_url}/api/zones/#{cloud_id}/resource-pools"
21
21
  headers = { params: params, authorization: "Bearer #{@access_token}" }
22
22
  opts = {method: :get, url: url, headers: headers}
23
23
  execute(opts)
@@ -9,36 +9,42 @@ class Morpheus::CypherInterface < Morpheus::APIClient
9
9
  @expires_at = expires_at
10
10
  end
11
11
 
12
+ def base_path
13
+ # can use just "/api/cypher" in 4.1.2
14
+ "/api/cypher/v1"
15
+ end
16
+
12
17
  def get(item_key, params={})
13
18
  raise "#{self.class}.get() passed a blank item_key!" if item_key.to_s == ''
14
- url = "#{@base_url}/api/cypher/v1/#{item_key}"
15
- headers = { params: params, authorization: "Bearer #{@access_token}" }
19
+ url = "#{@base_url}#{base_path}/#{item_key}"
20
+ headers = { :params => params, :authorization => "Bearer #{@access_token}" }
16
21
  execute({method: :get, url: url, headers: headers})
17
22
  end
18
23
 
19
24
  # list url is the same as get but uses $itemKey/?list=true
20
25
  # method: 'LIST' would be neat though
21
26
  def list(item_key=nil, params={})
22
- url = item_key ? "#{@base_url}/api/cypher/v1/#{item_key}" : "#{@base_url}/api/cypher/v1"
23
- params.merge!({list:'true'})
24
- headers = { params: params, authorization: "Bearer #{@access_token}" }
27
+ url = item_key ? "#{@base_url}#{base_path}/#{item_key}" : "#{@base_url}#{base_path}"
28
+ params.merge!({list:'true'}) # ditch this probably
29
+ headers = { :params => params, :authorization => "Bearer #{@access_token}" }
25
30
  execute({method: :get, url: url, headers: headers})
26
31
  end
27
32
 
28
- def create(item_key, payload)
29
- url = "#{@base_url}/api/cypher/v1/#{item_key}"
30
- headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
33
+ def create(item_key, params={}, payload={})
34
+ url = "#{@base_url}#{base_path}/#{item_key}"
35
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
31
36
  execute({method: :post, url: url, headers: headers, payload: payload.to_json})
32
37
  end
33
38
 
34
- def update(item_key, payload)
35
- url = "#{@base_url}/api/cypher/v1/#{item_key}"
36
- headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
39
+ # update is not even needed I don't think, same as POST
40
+ def update(item_key, params={}, payload={})
41
+ url = "#{@base_url}#{base_path}/#{item_key}"
42
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
43
  execute({method: :put, url: url, headers: headers, payload: payload.to_json})
38
44
  end
39
45
 
40
46
  def destroy(item_key, params={})
41
- url = "#{@base_url}/api/cypher/v1/#{item_key}"
47
+ url = "#{@base_url}#{base_path}/#{item_key}"
42
48
  headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
43
49
  execute({method: :delete, url: url, headers: headers})
44
50
  end
@@ -0,0 +1,72 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::HealthInterface < 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
+
11
+ def get(params={})
12
+ url = "#{@base_url}/api/health"
13
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
14
+ opts = {method: :get, url: url, headers: headers}
15
+ execute(opts)
16
+ end
17
+
18
+ def live(params={})
19
+ url = "#{@base_url}/api/health/live"
20
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
21
+ opts = {method: :get, url: url, headers: headers}
22
+ execute(opts)
23
+ end
24
+
25
+ def alarms(params={})
26
+ list_alarms(params)
27
+ end
28
+
29
+ def list_alarms(params={})
30
+ url = "#{@base_url}/api/health/alarms"
31
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
32
+ opts = {method: :get, url: url, headers: headers}
33
+ execute(opts)
34
+ end
35
+
36
+ def get_alarm(id, params={})
37
+ raise "#{self.class}.get() passed a blank name!" if id.to_s == ''
38
+ url = "#{@base_url}/api/health/alarms/#{id}"
39
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
40
+ opts = {method: :get, url: url, headers: headers}
41
+ execute(opts)
42
+ end
43
+
44
+ def acknowledge_alarm(id, params={}, payload={})
45
+ url = "#{@base_url}/api/health/alarms/#{id}/acknowledge"
46
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
47
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
48
+ execute(opts)
49
+ end
50
+
51
+ def acknowledge_alarms(params, payload={})
52
+ url = "#{@base_url}/api/health/alarms/acknowledge"
53
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
54
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
55
+ execute(opts)
56
+ end
57
+
58
+ def logs(params={})
59
+ url = "#{@base_url}/api/health/logs"
60
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
61
+ opts = {method: :get, url: url, headers: headers}
62
+ execute(opts)
63
+ end
64
+
65
+ def notifications(params={})
66
+ url = "#{@base_url}/api/health/notifications"
67
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
68
+ opts = {method: :get, url: url, headers: headers}
69
+ execute(opts)
70
+ end
71
+
72
+ end
@@ -157,7 +157,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
157
157
 
158
158
  def workflow(id,task_set_id,payload)
159
159
  url = "#{@base_url}/api/instances/#{id}/workflow"
160
- headers = { :params => {:taskSetId => task_set_id},:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
160
+ headers = { :params => {:workflowId => task_set_id},:authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
161
161
  opts = {method: :put, url: url, headers: headers,payload: payload.to_json}
162
162
  execute(opts)
163
163
  end
@@ -39,6 +39,13 @@ class Morpheus::LibraryInstanceTypesInterface < Morpheus::APIClient
39
39
  execute(opts)
40
40
  end
41
41
 
42
+ def toggle_featured(id, params={}, payload={})
43
+ url = "#{@base_url}/api/library/#{id}/toggle-featured"
44
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
42
49
  def destroy(id, payload={})
43
50
  url = "#{@base_url}/api/library/#{id}"
44
51
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
@@ -27,6 +27,12 @@ class Morpheus::LogSettingsInterface < Morpheus::APIClient
27
27
  execute(method: :put, url: url, headers: headers, payload: payload.to_json)
28
28
  end
29
29
 
30
+ def destroy_integration(name, params={})
31
+ url = "#{@api_url}/integrations/#{name}"
32
+ headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
33
+ execute(method: :delete, url: url, headers: headers)
34
+ end
35
+
30
36
  def add_syslog_rule(payload, params={})
31
37
  url = "#{@api_url}/syslog-rules"
32
38
  headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
@@ -0,0 +1,30 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::NetworkSecurityServersInterface < Morpheus::APIClient
4
+ def initialize(access_token, refresh_token,expires_at = nil, base_url=nil, api='network-security-servers')
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
10
+ end
11
+
12
+ def list(params={})
13
+ url = @api_url
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ execute(method: :get, url: url, headers: headers)
16
+ end
17
+
18
+ def get(id, params={})
19
+ url = "#{@api_url}/#{id}"
20
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
21
+ if params.is_a?(Hash)
22
+ headers[:params].merge!(params)
23
+ elsif params.is_a?(Numeric)
24
+ url = "#{@api_url}/#{params}"
25
+ elsif params.is_a?(String)
26
+ headers[:params]['name'] = params
27
+ end
28
+ execute(method: :get, url: url, headers: headers)
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::PriceSetsInterface < 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
+ @api_url = "#{@base_url}/api/price-sets"
9
+ @expires_at = expires_at
10
+ end
11
+
12
+ def list(params={})
13
+ url = @api_url
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ execute(method: :get, url: url, headers: headers)
16
+ end
17
+
18
+ def get(id, params={})
19
+ url = "#{@api_url}/#{id}"
20
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
21
+ execute(method: :get, url: url, headers: headers)
22
+ end
23
+
24
+ def create(payload)
25
+ url = @api_url
26
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
27
+ execute(method: :post, url: url, headers: headers, payload: payload.to_json)
28
+ end
29
+
30
+ def update(id, payload)
31
+ url = "#{@api_url}/#{id}"
32
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
33
+ execute(method: :put, url: url, headers: headers, payload: payload.to_json)
34
+ end
35
+
36
+ def deactivate(id, params={})
37
+ url = "#{@api_url}/#{id}/deactivate"
38
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
39
+ execute(method: :put, url: url, headers: headers)
40
+ end
41
+
42
+ end
@@ -0,0 +1,68 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::PricesInterface < 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
+ @api_url = "#{@base_url}/api/prices"
9
+ @expires_at = expires_at
10
+ end
11
+
12
+ def list(params={})
13
+ url = @api_url
14
+ if params['ids']
15
+ url = "#{url}?#{params.delete('ids').collect {|id| "id=#{id}"}.join('&')}"
16
+ end
17
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
18
+ execute(method: :get, url: url, headers: headers)
19
+ end
20
+
21
+ def get(id, params={})
22
+ url = "#{@api_url}/#{id}"
23
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
24
+ execute(method: :get, url: url, headers: headers)
25
+ end
26
+
27
+ def create(payload)
28
+ url = @api_url
29
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
30
+ execute(method: :post, url: url, headers: headers, payload: payload.to_json)
31
+ end
32
+
33
+ def update(id, payload)
34
+ url = "#{@api_url}/#{id}"
35
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
36
+ execute(method: :put, url: url, headers: headers, payload: payload.to_json)
37
+ end
38
+
39
+ def deactivate(id, params={})
40
+ url = "#{@api_url}/#{id}/deactivate"
41
+ headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
42
+ execute(method: :put, url: url, headers: headers)
43
+ end
44
+
45
+ def list_datastores(params={})
46
+ url = "#{@api_url}/datastores"
47
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
48
+ execute(method: :get, url: url, headers: headers)
49
+ end
50
+
51
+ def get_datastore(id, params={})
52
+ url = "#{@api_url}/datastores/#{id}"
53
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
54
+ execute(method: :get, url: url, headers: headers)
55
+ end
56
+
57
+ def list_volume_types(params={})
58
+ url = "#{@api_url}/volume-types"
59
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
60
+ execute(method: :get, url: url, headers: headers)
61
+ end
62
+
63
+ def get_volume_type(id, params={})
64
+ url = "#{@api_url}/volume-types/#{id}"
65
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
66
+ execute(method: :get, url: url, headers: headers)
67
+ end
68
+ end