morpheus-cli 5.4.0 → 5.4.1
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.
- checksums.yaml +4 -4
- data/Dockerfile +1 -1
- data/lib/morpheus/api/account_users_interface.rb +68 -0
- data/lib/morpheus/api/api_client.rb +51 -9
- data/lib/morpheus/api/audit_interface.rb +9 -0
- data/lib/morpheus/api/instances_interface.rb +21 -0
- data/lib/morpheus/api/load_balancer_monitors_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_pools_interface.rb +4 -4
- data/lib/morpheus/api/load_balancer_profiles_interface.rb +4 -5
- data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +13 -4
- data/lib/morpheus/api/load_balancers_interface.rb +5 -0
- data/lib/morpheus/api/network_routers_interface.rb +9 -0
- data/lib/morpheus/api/network_static_routes_interface.rb +36 -0
- data/lib/morpheus/api/read_interface.rb +4 -3
- data/lib/morpheus/api/rest_interface.rb +3 -3
- data/lib/morpheus/api/secondary_read_interface.rb +1 -1
- data/lib/morpheus/api/secondary_rest_interface.rb +19 -19
- data/lib/morpheus/api/storage_server_types_interface.rb +14 -0
- data/lib/morpheus/api/storage_servers_interface.rb +9 -0
- data/lib/morpheus/api/storage_volume_types_interface.rb +9 -0
- data/lib/morpheus/api/storage_volumes_interface.rb +9 -0
- data/lib/morpheus/api/users_interface.rb +16 -63
- data/lib/morpheus/cli/cli_command.rb +253 -5
- data/lib/morpheus/cli/cli_registry.rb +1 -1
- data/lib/morpheus/cli/commands/alias_command.rb +1 -1
- data/lib/morpheus/cli/commands/apps.rb +14 -78
- data/lib/morpheus/cli/commands/audit.rb +188 -0
- data/lib/morpheus/cli/commands/blueprints_command.rb +1 -1
- data/lib/morpheus/cli/commands/change_password_command.rb +4 -4
- data/lib/morpheus/cli/commands/clusters.rb +37 -12
- data/lib/morpheus/cli/commands/hosts.rb +15 -15
- data/lib/morpheus/cli/commands/instances.rb +109 -2
- data/lib/morpheus/cli/commands/load_balancer_monitors.rb +71 -0
- data/lib/morpheus/cli/commands/load_balancer_pools.rb +30 -50
- data/lib/morpheus/cli/commands/load_balancer_profiles.rb +65 -0
- data/lib/morpheus/cli/commands/load_balancer_types.rb +9 -4
- data/lib/morpheus/cli/commands/load_balancer_virtual_servers.rb +77 -57
- data/lib/morpheus/cli/commands/load_balancers.rb +93 -6
- data/lib/morpheus/cli/commands/network_firewalls_command.rb +22 -5
- data/lib/morpheus/cli/commands/network_routers_command.rb +96 -45
- data/lib/morpheus/cli/commands/network_static_routes_command.rb +446 -0
- data/lib/morpheus/cli/commands/network_transport_zones_command.rb +4 -4
- data/lib/morpheus/cli/commands/open_command.rb +30 -0
- data/lib/morpheus/cli/commands/options.rb +98 -0
- data/lib/morpheus/cli/commands/policies_command.rb +1 -1
- data/lib/morpheus/cli/commands/prices_command.rb +7 -7
- data/lib/morpheus/cli/commands/remote.rb +4 -2
- data/lib/morpheus/cli/commands/roles.rb +1 -1
- data/lib/morpheus/cli/commands/shell.rb +2 -2
- data/lib/morpheus/cli/commands/storage_server_types.rb +50 -0
- data/lib/morpheus/cli/commands/storage_servers.rb +122 -0
- data/lib/morpheus/cli/commands/storage_volume_types.rb +50 -0
- data/lib/morpheus/cli/commands/storage_volumes.rb +103 -0
- data/lib/morpheus/cli/commands/tenants_command.rb +1 -1
- data/lib/morpheus/cli/commands/user_groups_command.rb +1 -1
- data/lib/morpheus/cli/commands/user_settings_command.rb +2 -1
- data/lib/morpheus/cli/commands/user_sources_command.rb +1 -1
- data/lib/morpheus/cli/commands/users.rb +28 -28
- data/lib/morpheus/cli/commands/view.rb +102 -0
- data/lib/morpheus/cli/mixins/accounts_helper.rb +5 -5
- data/lib/morpheus/cli/mixins/load_balancers_helper.rb +24 -4
- data/lib/morpheus/cli/mixins/print_helper.rb +50 -18
- data/lib/morpheus/cli/mixins/processes_helper.rb +1 -2
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +15 -5
- data/lib/morpheus/cli/mixins/rest_command.rb +145 -73
- data/lib/morpheus/cli/mixins/secondary_rest_command.rb +174 -81
- data/lib/morpheus/cli/mixins/storage_servers_helper.rb +156 -0
- data/lib/morpheus/cli/mixins/storage_volumes_helper.rb +119 -0
- data/lib/morpheus/cli/option_types.rb +45 -24
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli.rb +1 -0
- data/lib/morpheus/ext/string.rb +29 -6
- data/lib/morpheus/routes.rb +238 -0
- data/lib/morpheus/util.rb +6 -1
- metadata +29 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cb700dea3828e709872e3cbdd2273b369aeee43bc7f451a305101ee3e0d7385
|
4
|
+
data.tar.gz: 19414673dc1b1631b4221f6c280228cbc14f49b2a4356bc45a3a98a67bdfa9a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1cc0cd19da8b84cff01f68e92ad8f82261bb399beff06b99461b4e9fc4fa76b5e1553e3f7a2aacf0dff746f858b9ef805f9d5a2c058da3af7d71fbd2bf616cc
|
7
|
+
data.tar.gz: dc86c29c0192b1b82b5f449f6c1803f7476164c4444f7ee285d3db5397d7778ae0e45438b14ca27feab8d14269222cc59a17dd7a329c6962aeb8bd8cf2bb6962
|
data/Dockerfile
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'morpheus/api/rest_interface'
|
2
|
+
|
3
|
+
class Morpheus::AccountUsersInterface < Morpheus::RestInterface
|
4
|
+
|
5
|
+
def base_path(account_id)
|
6
|
+
if account_id
|
7
|
+
"/api/accounts/#{account_id}/users"
|
8
|
+
else
|
9
|
+
"/api/users"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def list(account_id, params={}, headers={})
|
14
|
+
#validate_id!(account_id, "account_id")
|
15
|
+
execute(method: :get, url: "#{build_url(account_id)}", params: params, headers: headers)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get(account_id, id, params={}, headers={})
|
19
|
+
#validate_id!(account_id, "account_id")
|
20
|
+
validate_id!(id)
|
21
|
+
execute(method: :get, url: "#{build_url(account_id, id)}", params: params, headers: headers)
|
22
|
+
end
|
23
|
+
|
24
|
+
def create(account_id, payload, params={}, headers={})
|
25
|
+
#validate_id!(account_id, "account_id")
|
26
|
+
execute(method: :post, url: "#{build_url(account_id)}", params: params, payload: payload, headers: headers)
|
27
|
+
end
|
28
|
+
|
29
|
+
def update(account_id, id, payload, params={}, headers={})
|
30
|
+
#validate_id!(account_id, "account_id")
|
31
|
+
validate_id!(id)
|
32
|
+
execute(method: :put, url: "#{build_url(account_id, id)}", params: params, payload: payload, headers: headers)
|
33
|
+
end
|
34
|
+
|
35
|
+
def destroy(account_id, id, params = {}, headers={})
|
36
|
+
#validate_id!(account_id, "account_id")
|
37
|
+
validate_id!(id)
|
38
|
+
execute(method: :delete, url: "#{build_url(account_id, id)}", params: params, headers: headers)
|
39
|
+
end
|
40
|
+
|
41
|
+
def feature_permissions(account_id, id, params={}, headers={})
|
42
|
+
#validate_id!(account_id, "account_id")
|
43
|
+
validate_id!(id)
|
44
|
+
execute(method: :get, url: "#{build_url(account_id, id)}/feature-permissions", params: params, headers: headers)
|
45
|
+
end
|
46
|
+
|
47
|
+
def permissions(account_id, id, params={}, headers={})
|
48
|
+
#validate_id!(account_id, "account_id")
|
49
|
+
validate_id!(id)
|
50
|
+
execute(method: :get, url: "#{build_url(account_id, id)}/permissions", params: params, headers: headers)
|
51
|
+
end
|
52
|
+
|
53
|
+
def available_roles(account_id, id=nil, params={}, headers={})
|
54
|
+
#validate_id!(account_id, "account_id")
|
55
|
+
execute(method: :get, url: "#{build_url(account_id, id)}/available-roles", params: params, headers: headers)
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def build_url(account_id, id=nil)
|
61
|
+
url = base_path(account_id)
|
62
|
+
if id
|
63
|
+
url += "/#{CGI::escape(id.to_s)}"
|
64
|
+
end
|
65
|
+
url
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -242,7 +242,7 @@ class Morpheus::APIClient
|
|
242
242
|
# @verify_ssl is not used atm
|
243
243
|
# todo: finish this and use it instead of the global variable RestClient.ssl_verification_enabled?
|
244
244
|
# gotta clean up all APIClient subclasses new() methods to support this
|
245
|
-
# the CliCommand subclasses should be changed to @
|
245
|
+
# the CliCommand subclasses should be changed to @foos_interface = @api_client.foos
|
246
246
|
# also.. Credentials.new()
|
247
247
|
if @verify_ssl == false
|
248
248
|
opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
|
@@ -487,8 +487,12 @@ class Morpheus::APIClient
|
|
487
487
|
Morpheus::LoadBalancerPoolsInterface.new(common_interface_options).setopts(@options)
|
488
488
|
end
|
489
489
|
|
490
|
-
def
|
491
|
-
Morpheus::
|
490
|
+
def load_balancer_profiles
|
491
|
+
Morpheus::LoadBalancerProfilesInterface.new(common_interface_options).setopts(@options)
|
492
|
+
end
|
493
|
+
|
494
|
+
def load_balancer_monitors
|
495
|
+
Morpheus::LoadBalancerMonitorsInterface.new(common_interface_options).setopts(@options)
|
492
496
|
end
|
493
497
|
|
494
498
|
def tasks
|
@@ -543,6 +547,10 @@ class Morpheus::APIClient
|
|
543
547
|
Morpheus::UsersInterface.new(common_interface_options).setopts(@options)
|
544
548
|
end
|
545
549
|
|
550
|
+
def account_users
|
551
|
+
Morpheus::AccountUsersInterface.new(common_interface_options).setopts(@options)
|
552
|
+
end
|
553
|
+
|
546
554
|
def user_groups
|
547
555
|
Morpheus::UserGroupsInterface.new(common_interface_options).setopts(@options)
|
548
556
|
end
|
@@ -689,6 +697,22 @@ class Morpheus::APIClient
|
|
689
697
|
Morpheus::StorageProvidersInterface.new(common_interface_options).setopts(@options)
|
690
698
|
end
|
691
699
|
|
700
|
+
def storage_servers
|
701
|
+
Morpheus::StorageServersInterface.new(common_interface_options).setopts(@options)
|
702
|
+
end
|
703
|
+
|
704
|
+
def storage_server_types
|
705
|
+
Morpheus::StorageServerTypesInterface.new(common_interface_options).setopts(@options)
|
706
|
+
end
|
707
|
+
|
708
|
+
def storage_volumes
|
709
|
+
Morpheus::StorageVolumesInterface.new(common_interface_options).setopts(@options)
|
710
|
+
end
|
711
|
+
|
712
|
+
def storage_volume_types
|
713
|
+
Morpheus::StorageVolumeTypesInterface.new(common_interface_options).setopts(@options)
|
714
|
+
end
|
715
|
+
|
692
716
|
def library_instance_types
|
693
717
|
Morpheus::LibraryInstanceTypesInterface.new(common_interface_options).setopts(@options)
|
694
718
|
end
|
@@ -773,14 +797,18 @@ class Morpheus::APIClient
|
|
773
797
|
Morpheus::WikiInterface.new(common_interface_options).setopts(@options)
|
774
798
|
end
|
775
799
|
|
776
|
-
def budgets
|
777
|
-
Morpheus::BudgetsInterface.new(common_interface_options).setopts(@options)
|
778
|
-
end
|
779
|
-
|
780
800
|
def health
|
781
801
|
Morpheus::HealthInterface.new(common_interface_options).setopts(@options)
|
782
802
|
end
|
783
803
|
|
804
|
+
def audit
|
805
|
+
Morpheus::AuditInterface.new(common_interface_options).setopts(@options)
|
806
|
+
end
|
807
|
+
|
808
|
+
def budgets
|
809
|
+
Morpheus::BudgetsInterface.new(common_interface_options).setopts(@options)
|
810
|
+
end
|
811
|
+
|
784
812
|
def invoices
|
785
813
|
Morpheus::InvoicesInterface.new(common_interface_options).setopts(@options)
|
786
814
|
end
|
@@ -856,17 +884,31 @@ class Morpheus::APIClient
|
|
856
884
|
def network_dhcp_relays
|
857
885
|
Morpheus::NetworkDhcpRelaysInterface.new(common_interface_options).setopts(@options)
|
858
886
|
end
|
887
|
+
|
888
|
+
def network_static_routes
|
889
|
+
Morpheus::NetworkStaticRoutesInterface.new(common_interface_options).setopts(@options)
|
890
|
+
end
|
859
891
|
|
860
892
|
def rest(endpoint)
|
861
893
|
Morpheus::RestInterface.new(common_interface_options).setopts(@options.merge({base_path: "#{@base_url}/api/#{endpoint}"}))
|
862
894
|
end
|
863
895
|
|
896
|
+
def interface(type)
|
897
|
+
type = type.to_s.singularize.underscore
|
898
|
+
interface_name = type.pluralize
|
899
|
+
if !respond_to?(interface_name)
|
900
|
+
raise "#{self.class} has not defined an interface method named '#{interface_name}'"
|
901
|
+
end
|
902
|
+
return send(interface_name)
|
903
|
+
end
|
904
|
+
alias :get_interface :interface
|
905
|
+
|
864
906
|
# add new interfaces here
|
865
907
|
|
866
908
|
protected
|
867
909
|
|
868
|
-
def validate_id!(id)
|
869
|
-
raise "#{self.class} passed a blank
|
910
|
+
def validate_id!(id, param_name='id')
|
911
|
+
raise "#{self.class} passed a blank #{param_name}!" if id.to_s.strip.empty?
|
870
912
|
end
|
871
913
|
|
872
914
|
end
|
@@ -344,4 +344,25 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
|
|
344
344
|
execute(method: :get, url: "/api/instances/#{id}/deploy", params: params)
|
345
345
|
end
|
346
346
|
|
347
|
+
def refresh(id, params, payload)
|
348
|
+
url = "#{@base_url}/api/instances/#{id}/refresh"
|
349
|
+
headers = {:params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
350
|
+
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
351
|
+
execute(opts)
|
352
|
+
end
|
353
|
+
|
354
|
+
def apply(id, params, payload)
|
355
|
+
url = "#{@base_url}/api/instances/#{id}/apply"
|
356
|
+
headers = {:params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
357
|
+
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
358
|
+
execute(opts)
|
359
|
+
end
|
360
|
+
|
361
|
+
def state_summary(id, params={})
|
362
|
+
url = "#{@base_url}/api/instances/#{id}/state-summary"
|
363
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
364
|
+
opts = {method: :get, url: url, headers: headers}
|
365
|
+
execute(opts)
|
366
|
+
end
|
367
|
+
|
347
368
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require 'morpheus/api/
|
1
|
+
require 'morpheus/api/secondary_rest_interface'
|
2
2
|
|
3
|
-
class Morpheus::LoadBalancerPoolsInterface < Morpheus::
|
3
|
+
class Morpheus::LoadBalancerPoolsInterface < Morpheus::SecondaryRestInterface
|
4
4
|
|
5
|
-
def base_path
|
6
|
-
"/api/load-
|
5
|
+
def base_path(load_balancer_id)
|
6
|
+
"/api/load-balancers/#{load_balancer_id}/pools"
|
7
7
|
end
|
8
8
|
|
9
9
|
end
|
@@ -1,10 +1,9 @@
|
|
1
|
-
require 'morpheus/api/
|
1
|
+
require 'morpheus/api/secondary_rest_interface'
|
2
2
|
|
3
|
-
class Morpheus::LoadBalancerProfilesInterface < Morpheus::
|
3
|
+
class Morpheus::LoadBalancerProfilesInterface < Morpheus::SecondaryRestInterface
|
4
4
|
|
5
|
-
def base_path
|
6
|
-
"/api/load-
|
5
|
+
def base_path(load_balancer_id)
|
6
|
+
"/api/load-balancers/#{load_balancer_id}/profiles"
|
7
7
|
end
|
8
8
|
|
9
9
|
end
|
10
|
-
|
@@ -1,9 +1,18 @@
|
|
1
|
-
require 'morpheus/api/
|
1
|
+
require 'morpheus/api/secondary_rest_interface'
|
2
2
|
|
3
|
-
class Morpheus::LoadBalancerVirtualServersInterface < Morpheus::
|
3
|
+
class Morpheus::LoadBalancerVirtualServersInterface < Morpheus::SecondaryRestInterface
|
4
4
|
|
5
|
-
def base_path
|
6
|
-
"/api/load-
|
5
|
+
def base_path(load_balancer_id)
|
6
|
+
"/api/load-balancers/#{load_balancer_id}/virtual-servers"
|
7
|
+
end
|
8
|
+
|
9
|
+
def list(parent_id=nil, params={}, headers={})
|
10
|
+
if parent_id
|
11
|
+
validate_id!(parent_id)
|
12
|
+
execute(method: :get, url: "#{base_path(parent_id)}", params: params, headers: headers)
|
13
|
+
else
|
14
|
+
execute(method: :get, url: "/api/load-balancer-virtual-servers", params: params, headers: headers)
|
15
|
+
end
|
7
16
|
end
|
8
17
|
|
9
18
|
end
|
@@ -6,4 +6,9 @@ class Morpheus::LoadBalancersInterface < Morpheus::RestInterface
|
|
6
6
|
"/api/load-balancers"
|
7
7
|
end
|
8
8
|
|
9
|
+
def refresh(id, payload, params={}, headers={})
|
10
|
+
validate_id!(id)
|
11
|
+
execute(method: :put, url: "#{base_path}/#{CGI::escape(id.to_s)}/refresh", params: params, payload: payload, headers: headers)
|
12
|
+
end
|
13
|
+
|
9
14
|
end
|
@@ -66,6 +66,15 @@ class Morpheus::NetworkRoutersInterface < Morpheus::APIClient
|
|
66
66
|
execute(opts)
|
67
67
|
end
|
68
68
|
|
69
|
+
def get_firewall_rule_group(router_id, group_id, params={})
|
70
|
+
raise "#{self.class}.get() passed a blank router id!" if router_id.to_s == ''
|
71
|
+
raise "#{self.class}.get() passed a blank group id!" if group_id.to_s == ''
|
72
|
+
url = "#{@base_url}/api/networks/routers/#{router_id}/firewall-rule-groups/#{group_id}"
|
73
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
74
|
+
opts = {method: :get, url: url, headers: headers}
|
75
|
+
execute(opts)
|
76
|
+
end
|
77
|
+
|
69
78
|
def create_firewall_rule_group(router_id, payload={})
|
70
79
|
url = "#{@base_url}/api/networks/routers/#{router_id}/firewall-rule-groups"
|
71
80
|
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::NetworkStaticRoutesInterface < Morpheus::RestInterface
|
4
|
+
|
5
|
+
def base_path
|
6
|
+
"/api/networks"
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_static_route(network_id, route_id, params={}, headers={})
|
10
|
+
validate_id!(network_id)
|
11
|
+
validate_id!(route_id)
|
12
|
+
execute(method: :get, url: "#{base_path}/#{network_id}/routes/#{route_id}", params: params, headers: headers)
|
13
|
+
end
|
14
|
+
|
15
|
+
def list_static_routes(network_id, params={}, headers={})
|
16
|
+
validate_id!(network_id)
|
17
|
+
execute(method: :get, url: "#{base_path}/#{network_id}/routes", params: params, headers: headers)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_static_route(network_id, payload, params={}, headers={})
|
21
|
+
validate_id!(network_id)
|
22
|
+
execute(method: :post, url: "#{base_path}/#{network_id}/routes", params: params, payload: payload, headers: headers)
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_static_route(network_id, route_id, payload, params={}, headers={})
|
26
|
+
validate_id!(network_id)
|
27
|
+
validate_id!(route_id)
|
28
|
+
execute(method: :put, url: "#{base_path}/#{network_id}/routes/#{route_id}", params: params, payload: payload, headers: headers)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_static_route(network_id, route_id, params={}, headers={})
|
32
|
+
validate_id!(network_id)
|
33
|
+
validate_id!(route_id)
|
34
|
+
execute(method: :delete, url: "#{base_path}/#{network_id}/routes/#{route_id}", params: params, headers: headers)
|
35
|
+
end
|
36
|
+
end
|
@@ -6,9 +6,10 @@ require 'morpheus/api/api_client'
|
|
6
6
|
class Morpheus::ReadInterface < Morpheus::APIClient
|
7
7
|
|
8
8
|
# subclasses should override in your interface
|
9
|
-
# Example: "/api/
|
9
|
+
# Example: "/api/things"
|
10
10
|
def base_path
|
11
|
-
raise "#{self.class} has not defined base_path!"
|
11
|
+
raise "#{self.class} has not defined base_path!" if @options[:base_path].nil?
|
12
|
+
@options[:base_path]
|
12
13
|
end
|
13
14
|
|
14
15
|
def list(params={}, headers={})
|
@@ -17,7 +18,7 @@ class Morpheus::ReadInterface < Morpheus::APIClient
|
|
17
18
|
|
18
19
|
def get(id, params={}, headers={})
|
19
20
|
validate_id!(id)
|
20
|
-
execute(method: :get, url: "#{base_path}/#{id}", params: params, headers: headers)
|
21
|
+
execute(method: :get, url: "#{base_path}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
21
22
|
end
|
22
23
|
|
23
24
|
end
|
@@ -17,7 +17,7 @@ class Morpheus::RestInterface < Morpheus::APIClient
|
|
17
17
|
|
18
18
|
def get(id, params={}, headers={})
|
19
19
|
validate_id!(id)
|
20
|
-
execute(method: :get, url: "#{base_path}/#{id}", params: params, headers: headers)
|
20
|
+
execute(method: :get, url: "#{base_path}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
21
21
|
end
|
22
22
|
|
23
23
|
def create(payload, params={}, headers={})
|
@@ -26,12 +26,12 @@ class Morpheus::RestInterface < Morpheus::APIClient
|
|
26
26
|
|
27
27
|
def update(id, payload, params={}, headers={})
|
28
28
|
validate_id!(id)
|
29
|
-
execute(method: :put, url: "#{base_path}/#{id}", params: params, payload: payload, headers: headers)
|
29
|
+
execute(method: :put, url: "#{base_path}/#{CGI::escape(id.to_s)}", params: params, payload: payload, headers: headers)
|
30
30
|
end
|
31
31
|
|
32
32
|
def destroy(id, params = {}, headers={})
|
33
33
|
validate_id!(id)
|
34
|
-
execute(method: :delete, url: "#{base_path}/#{id}", params: params, headers: headers)
|
34
|
+
execute(method: :delete, url: "#{base_path}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
35
35
|
end
|
36
36
|
|
37
37
|
end
|
@@ -19,7 +19,7 @@ class Morpheus::SecondaryReadInterface < Morpheus::APIClient
|
|
19
19
|
def get(resource_id, id, params={}, headers={})
|
20
20
|
validate_id!(resource_id)
|
21
21
|
validate_id!(id)
|
22
|
-
execute(method: :get, url: "#{base_path(resource_id)}/#{id}", params: params, headers: headers)
|
22
|
+
execute(method: :get, url: "#{base_path(resource_id)}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
@@ -2,41 +2,41 @@ require 'morpheus/api/api_client'
|
|
2
2
|
|
3
3
|
# Interface class to be subclassed by interfaces that provide CRUD endpoints
|
4
4
|
# for objects underneath another resource
|
5
|
-
# Subclasses must override the base_path(
|
5
|
+
# Subclasses must override the base_path(parent_id) method
|
6
6
|
class Morpheus::SecondaryRestInterface < Morpheus::APIClient
|
7
7
|
|
8
8
|
# subclasses should override in your interface
|
9
|
-
# Example: "/api/things/#{
|
10
|
-
def base_path(
|
11
|
-
raise "#{self.class} has not defined base_path(
|
9
|
+
# Example: "/api/things/#{parent_id}/widgets"
|
10
|
+
def base_path(parent_id)
|
11
|
+
raise "#{self.class} has not defined base_path(parent_id)!"
|
12
12
|
end
|
13
13
|
|
14
|
-
def list(
|
15
|
-
validate_id!(
|
16
|
-
execute(method: :get, url: "#{base_path(
|
14
|
+
def list(parent_id, params={}, headers={})
|
15
|
+
validate_id!(parent_id)
|
16
|
+
execute(method: :get, url: "#{base_path(parent_id)}", params: params, headers: headers)
|
17
17
|
end
|
18
18
|
|
19
|
-
def get(
|
20
|
-
validate_id!(
|
19
|
+
def get(parent_id, id, params={}, headers={})
|
20
|
+
validate_id!(parent_id)
|
21
21
|
validate_id!(id)
|
22
|
-
execute(method: :get, url: "#{base_path(
|
22
|
+
execute(method: :get, url: "#{base_path(parent_id)}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
23
23
|
end
|
24
24
|
|
25
|
-
def create(
|
26
|
-
validate_id!(
|
27
|
-
execute(method: :post, url: "#{base_path(
|
25
|
+
def create(parent_id, payload, params={}, headers={})
|
26
|
+
validate_id!(parent_id)
|
27
|
+
execute(method: :post, url: "#{base_path(parent_id)}", params: params, payload: payload, headers: headers)
|
28
28
|
end
|
29
29
|
|
30
|
-
def update(
|
31
|
-
validate_id!(
|
30
|
+
def update(parent_id, id, payload, params={}, headers={})
|
31
|
+
validate_id!(parent_id)
|
32
32
|
validate_id!(id)
|
33
|
-
execute(method: :put, url: "#{base_path(
|
33
|
+
execute(method: :put, url: "#{base_path(parent_id)}/#{CGI::escape(id.to_s)}", params: params, payload: payload, headers: headers)
|
34
34
|
end
|
35
35
|
|
36
|
-
def destroy(
|
37
|
-
validate_id!(
|
36
|
+
def destroy(parent_id, id, params = {}, headers={})
|
37
|
+
validate_id!(parent_id)
|
38
38
|
validate_id!(id)
|
39
|
-
execute(method: :delete, url: "#{base_path(
|
39
|
+
execute(method: :delete, url: "#{base_path(parent_id)}/#{CGI::escape(id.to_s)}", params: params, headers: headers)
|
40
40
|
end
|
41
41
|
|
42
42
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'morpheus/api/read_interface'
|
2
|
+
|
3
|
+
class Morpheus::StorageServerTypesInterface < Morpheus::ReadInterface
|
4
|
+
|
5
|
+
def base_path
|
6
|
+
"/api/storage-server-types"
|
7
|
+
end
|
8
|
+
|
9
|
+
# def option_types(id, params={}, headers={})
|
10
|
+
# validate_id!(id)
|
11
|
+
# execute(method: :get, url: "#{base_path}/#{id}/option-types", params: params, headers: headers)
|
12
|
+
# end
|
13
|
+
|
14
|
+
end
|
@@ -1,78 +1,31 @@
|
|
1
|
-
require 'morpheus/api/
|
1
|
+
require 'morpheus/api/rest_interface'
|
2
2
|
|
3
|
-
class Morpheus::UsersInterface < Morpheus::
|
3
|
+
class Morpheus::UsersInterface < Morpheus::RestInterface
|
4
4
|
|
5
|
-
def
|
6
|
-
|
7
|
-
url = build_url(account_id, id)
|
8
|
-
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
9
|
-
opts = {method: :get, url: url, timeout: 10, headers: headers}
|
10
|
-
execute(opts)
|
5
|
+
def base_path
|
6
|
+
"/api/users"
|
11
7
|
end
|
12
8
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
opts = {method: :get, url: url, timeout: 10, headers: headers}
|
17
|
-
execute(opts)
|
9
|
+
def feature_permissions(id, params={}, headers={})
|
10
|
+
validate_id!(id)
|
11
|
+
execute(method: :get, url: "#{base_path}/#{id}/feature-permissions", params: params, headers: headers)
|
18
12
|
end
|
19
13
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
opts = {method: :get, url: url, timeout: 10, headers: headers}
|
24
|
-
execute(opts)
|
14
|
+
def permissions(id, params={}, headers={})
|
15
|
+
validate_id!(id)
|
16
|
+
execute(method: :get, url: "#{base_path}/#{id}/permissions", params: params, headers: headers)
|
25
17
|
end
|
26
18
|
|
27
|
-
def
|
28
|
-
url
|
29
|
-
headers = { params: {}, authorization: "Bearer #{@access_token}" }
|
30
|
-
opts = {method: :get, url: url, timeout: 10, headers: headers}
|
31
|
-
execute(opts)
|
32
|
-
end
|
33
|
-
|
34
|
-
def available_roles(account_id, id=nil, options={})
|
35
|
-
url = build_url(account_id, id) + "/available-roles"
|
36
|
-
headers = { params: {}, authorization: "Bearer #{@access_token}" }
|
37
|
-
headers[:params].merge!(options)
|
38
|
-
opts = {method: :get, url: url, timeout: 10, headers: headers}
|
39
|
-
execute(opts)
|
40
|
-
end
|
41
|
-
|
42
|
-
def create(account_id, options)
|
43
|
-
url = build_url(account_id)
|
44
|
-
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
45
|
-
payload = options
|
46
|
-
opts = {method: :post, url: url, timeout: 10, headers: headers, payload: payload.to_json}
|
47
|
-
execute(opts)
|
48
|
-
end
|
49
|
-
|
50
|
-
def update(account_id, id, options)
|
51
|
-
url = build_url(account_id, id)
|
52
|
-
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
53
|
-
payload = options
|
54
|
-
opts = {method: :put, url: url, timeout: 10, headers: headers, payload: payload.to_json}
|
55
|
-
execute(opts)
|
56
|
-
end
|
57
|
-
|
58
|
-
def destroy(account_id, id)
|
59
|
-
url = build_url(account_id, id)
|
60
|
-
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
61
|
-
opts = {method: :delete, url: url, timeout: 10, headers: headers}
|
62
|
-
execute(opts)
|
19
|
+
def available_roles(id=nil, params={}, headers={})
|
20
|
+
execute(method: :get, url: "#{build_url(id)}/available-roles", params: params, headers: headers)
|
63
21
|
end
|
64
22
|
|
65
23
|
private
|
66
24
|
|
67
|
-
def build_url(
|
68
|
-
url =
|
69
|
-
if
|
70
|
-
url += "
|
71
|
-
else
|
72
|
-
url += "/users"
|
73
|
-
end
|
74
|
-
if user_id
|
75
|
-
url += "/#{user_id}"
|
25
|
+
def build_url(id=nil)
|
26
|
+
url = base_path
|
27
|
+
if id
|
28
|
+
url += "/#{id}"
|
76
29
|
end
|
77
30
|
url
|
78
31
|
end
|