morpheus-cli 4.1.8 → 4.1.9

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