morpheus-cli 3.3.1.4 → 3.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/api_client.rb +28 -0
  3. data/lib/morpheus/api/instance_types_interface.rb +12 -10
  4. data/lib/morpheus/api/instances_interface.rb +4 -0
  5. data/lib/morpheus/api/library_container_scripts_interface.rb +49 -0
  6. data/lib/morpheus/api/library_container_templates_interface.rb +49 -0
  7. data/lib/morpheus/api/library_container_types_interface.rb +65 -0
  8. data/lib/morpheus/api/library_container_upgrades_interface.rb +66 -0
  9. data/lib/morpheus/api/library_instance_types_interface.rb +59 -0
  10. data/lib/morpheus/api/library_layouts_interface.rb +65 -0
  11. data/lib/morpheus/api/servers_interface.rb +4 -0
  12. data/lib/morpheus/api/user_sources_interface.rb +120 -0
  13. data/lib/morpheus/api/virtual_images_interface.rb +7 -0
  14. data/lib/morpheus/cli.rb +12 -1
  15. data/lib/morpheus/cli/accounts.rb +35 -9
  16. data/lib/morpheus/cli/cli_command.rb +82 -2
  17. data/lib/morpheus/cli/curl_command.rb +1 -1
  18. data/lib/morpheus/cli/echo_command.rb +1 -1
  19. data/lib/morpheus/cli/hosts.rb +40 -14
  20. data/lib/morpheus/cli/instance_types.rb +106 -64
  21. data/lib/morpheus/cli/instances.rb +39 -15
  22. data/lib/morpheus/cli/library.rb +1 -1184
  23. data/lib/morpheus/cli/library_container_scripts_command.rb +437 -0
  24. data/lib/morpheus/cli/library_container_templates_command.rb +397 -0
  25. data/lib/morpheus/cli/library_container_types_command.rb +653 -0
  26. data/lib/morpheus/cli/library_instance_types_command.rb +491 -0
  27. data/lib/morpheus/cli/library_layouts_command.rb +650 -0
  28. data/lib/morpheus/cli/library_option_lists_command.rb +476 -0
  29. data/lib/morpheus/cli/library_option_types_command.rb +549 -0
  30. data/lib/morpheus/cli/library_upgrades_command.rb +604 -0
  31. data/lib/morpheus/cli/mixins/library_helper.rb +123 -0
  32. data/lib/morpheus/cli/mixins/print_helper.rb +21 -22
  33. data/lib/morpheus/cli/mixins/provisioning_helper.rb +56 -11
  34. data/lib/morpheus/cli/network_services_command.rb +1 -1
  35. data/lib/morpheus/cli/option_types.rb +12 -2
  36. data/lib/morpheus/cli/power_scheduling_command.rb +1 -1
  37. data/lib/morpheus/cli/shell.rb +120 -22
  38. data/lib/morpheus/cli/sleep_command.rb +45 -0
  39. data/lib/morpheus/cli/user_sources_command.rb +963 -0
  40. data/lib/morpheus/cli/users.rb +33 -2
  41. data/lib/morpheus/cli/version.rb +1 -1
  42. data/lib/morpheus/cli/version_command.rb +1 -1
  43. data/lib/morpheus/cli/virtual_images.rb +93 -39
  44. data/lib/morpheus/formatters.rb +37 -27
  45. data/lib/morpheus/terminal.rb +1 -1
  46. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a23c45d977fafe0f6d89214d6785de7c9a94718e
4
- data.tar.gz: 33fea09ecb5ac3b197cbe3794e785b15e610c214
3
+ metadata.gz: da10aefff03990b69fce2466166982e4018e2e8e
4
+ data.tar.gz: 2777267312f2d3a994c3c1715fde9cd0b24d9efe
5
5
  SHA512:
6
- metadata.gz: 1e20f8ab9732cebfaf83f7ac06d52cb9baf95e979c2efe4cde68cf6e50a3d97371c23bab1c97eb2096d6dcf82b33919be8c8854113f84d9b82cac97ab7953f2e
7
- data.tar.gz: a04eba1bc86c24b88f144e272ba3d0bf6182296460a093097ab39a66b3924bed03e1bd3964909678db2238e357c840f553628b767c3cc652c01ad36a5d833e96
6
+ metadata.gz: 3e3873db99a5e116b9420fde355e1f194a65abef24df3be5b9d4eb3efde4502217ea1bbeef54240a1bbd7d2523c3b4bb9418bae8ef1a78d1373ca5de4a3bf5b4
7
+ data.tar.gz: 64e4fb938211bdf9c305e1f74dfc21669ea57b40d30dea8c4479efc1158cf0b170816f437458fddde7d1d2bd1355ccc8fafbb9020d0d9c87c9944b7d19060f04
@@ -145,6 +145,10 @@ class Morpheus::APIClient
145
145
  Morpheus::UserGroupsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
146
146
  end
147
147
 
148
+ def user_sources
149
+ Morpheus::UserSourcesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
150
+ end
151
+
148
152
  def logs
149
153
  Morpheus::LogsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
150
154
  end
@@ -255,4 +259,28 @@ class Morpheus::APIClient
255
259
  Morpheus::StorageProvidersInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
256
260
  end
257
261
 
262
+ def library_instance_types
263
+ Morpheus::LibraryInstanceTypesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
264
+ end
265
+
266
+ def library_layouts
267
+ Morpheus::LibraryLayoutsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
268
+ end
269
+
270
+ def library_container_upgrades
271
+ Morpheus::LibraryContainerUpgradesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
272
+ end
273
+
274
+ def library_container_types
275
+ Morpheus::LibraryContainerTypesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
276
+ end
277
+
278
+ def library_container_scripts
279
+ Morpheus::LibraryContainerScriptsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
280
+ end
281
+
282
+ def library_container_templates
283
+ Morpheus::LibraryContainerTemplatesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
284
+ end
285
+
258
286
  end
@@ -9,17 +9,19 @@ class Morpheus::InstanceTypesInterface < Morpheus::APIClient
9
9
  end
10
10
 
11
11
 
12
- def get(options=nil)
12
+ def get(id, params={})
13
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
14
+ url = "#{@base_url}/api/instance-types/#{id}"
15
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
16
+ opts = {method: :get, url: url, headers: headers}
17
+ execute(opts)
18
+ end
19
+
20
+ def list(params={})
13
21
  url = "#{@base_url}/api/instance-types"
14
- headers = { params: {}, authorization: "Bearer #{@access_token}" }
15
- if options.is_a?(Hash)
16
- headers[:params].merge!(options)
17
- elsif options.is_a?(Numeric)
18
- url = "#{@base_url}/api/instance-types/#{options}"
19
- elsif options.is_a?(String)
20
- headers[:params]['name'] = options
21
- end
22
- execute(method: :get, url: url, headers: headers)
22
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
23
+ opts = {method: :get, url: url, headers: headers}
24
+ execute(opts)
23
25
  end
24
26
 
25
27
  end
@@ -23,6 +23,10 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
23
23
  execute(opts)
24
24
  end
25
25
 
26
+ def list(options={})
27
+ get(options)
28
+ end
29
+
26
30
  def get_envs(id, options=nil)
27
31
  url = "#{@base_url}/api/instances/#{id}/envs"
28
32
  headers = { params: {}, authorization: "Bearer #{@access_token}" }
@@ -0,0 +1,49 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryContainerScriptsInterface < 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(id, params={})
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = "#{@base_url}/api/library/container-scripts/#{id}"
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(params={})
20
+ url = "#{@base_url}/api/library/container-scripts"
21
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
22
+ opts = {method: :get, url: url, headers: headers}
23
+ execute(opts)
24
+ end
25
+
26
+ def create(options)
27
+ url = "#{@base_url}/api/library/container-scripts"
28
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
29
+ payload = options
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(id, options)
35
+ url = "#{@base_url}/api/library/container-scripts/#{id}"
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ payload = options
38
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
39
+ execute(opts)
40
+ end
41
+
42
+ def destroy(id, payload={})
43
+ url = "#{@base_url}/api/library/container-scripts/#{id}"
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
49
+ end
@@ -0,0 +1,49 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryContainerTemplatesInterface < 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(id, params={})
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = "#{@base_url}/api/library/container-templates/#{id}"
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(params={})
20
+ url = "#{@base_url}/api/library/container-templates"
21
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
22
+ opts = {method: :get, url: url, headers: headers}
23
+ execute(opts)
24
+ end
25
+
26
+ def create(options)
27
+ url = "#{@base_url}/api/library/container-templates"
28
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
29
+ payload = options
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(id, options)
35
+ url = "#{@base_url}/api/library/container-templates/#{id}"
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ payload = options
38
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
39
+ execute(opts)
40
+ end
41
+
42
+ def destroy(id, payload={})
43
+ url = "#{@base_url}/api/library/container-templates/#{id}"
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
49
+ end
@@ -0,0 +1,65 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryContainerTypesInterface < 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(layout_id, id, params={})
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = build_url(layout_id, id)
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(layout_id, params={})
20
+ url = build_url(layout_id)
21
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
22
+ opts = {method: :get, url: url, headers: headers}
23
+ execute(opts)
24
+ end
25
+
26
+ def create(layout_id, options)
27
+ url = build_url(layout_id)
28
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
29
+ payload = options
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(layout_id, id, options)
35
+ url = build_url(layout_id, id)
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ payload = options
38
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
39
+ execute(opts)
40
+ end
41
+
42
+ def destroy(layout_id, id, payload={})
43
+ url = build_url(layout_id, id)
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
49
+ private
50
+
51
+ def build_url(layout_id=nil, id=nil)
52
+ url = "#{@base_url}/api"
53
+ if layout_id
54
+ url += "/library/#{layout_id}/container-types"
55
+ else
56
+ url += "/library/container-types"
57
+ end
58
+ if id
59
+ url += "/#{id}"
60
+ end
61
+ url
62
+ end
63
+
64
+
65
+ end
@@ -0,0 +1,66 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryContainerUpgradesInterface < 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(instance_type_id, id, params={})
12
+ #raise "#{self.class}.get() passed a blank instance_type_id!" if instance_type_id.to_s == ''
13
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
14
+ url = build_url(instance_type_id, id)
15
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
16
+ opts = {method: :get, url: url, headers: headers}
17
+ execute(opts)
18
+ end
19
+
20
+ def list(instance_type_id, params={})
21
+ url = build_url(instance_type_id)
22
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
23
+ opts = {method: :get, url: url, headers: headers}
24
+ execute(opts)
25
+ end
26
+
27
+ def create(instance_type_id, options)
28
+ url = build_url(instance_type_id)
29
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
30
+ payload = options
31
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
32
+ execute(opts)
33
+ end
34
+
35
+ def update(instance_type_id, id, options)
36
+ url = build_url(instance_type_id, id)
37
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
38
+ payload = options
39
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
40
+ execute(opts)
41
+ end
42
+
43
+ def destroy(instance_type_id, id, payload={})
44
+ url = build_url(instance_type_id, id)
45
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
46
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
47
+ execute(opts)
48
+ end
49
+
50
+ private
51
+
52
+ def build_url(instance_type_id=nil, id=nil)
53
+ url = "#{@base_url}/api"
54
+ if instance_type_id
55
+ url += "/library/#{instance_type_id}/upgrades"
56
+ else
57
+ url += "/library/upgrades" # this api route does not exist yet
58
+ end
59
+ if id
60
+ url += "/#{id}"
61
+ end
62
+ url
63
+ end
64
+
65
+
66
+ end
@@ -0,0 +1,59 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryInstanceTypesInterface < 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(id, params={})
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = "#{@base_url}/api/library/#{id}"
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(params={})
20
+ url = "#{@base_url}/api/library"
21
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
22
+ opts = {method: :get, url: url, headers: headers}
23
+ execute(opts)
24
+ end
25
+
26
+ def create(options)
27
+ url = "#{@base_url}/api/library"
28
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
29
+ payload = options
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(id, options)
35
+ url = "#{@base_url}/api/library/#{id}"
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ payload = options
38
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
39
+ execute(opts)
40
+ end
41
+
42
+ def destroy(id, payload={})
43
+ url = "#{@base_url}/api/library/#{id}"
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
49
+ # NOT json, multipart file upload
50
+ def update_logo(id, logo_file)
51
+ url = "#{@base_url}/api/library/#{id}/update-logo"
52
+ headers = { :params => {}, :authorization => "Bearer #{@access_token}"}
53
+ payload = {}
54
+ payload[:logo] = logo_file
55
+ payload[:multipart] = true
56
+ execute(method: :post, url: url, headers: headers, payload: payload)
57
+ end
58
+
59
+ end
@@ -0,0 +1,65 @@
1
+ require 'morpheus/api/api_client'
2
+
3
+ class Morpheus::LibraryLayoutsInterface < 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(instance_type_id, id, params={})
12
+ raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
13
+ url = build_url(instance_type_id, id)
14
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
15
+ opts = {method: :get, url: url, headers: headers}
16
+ execute(opts)
17
+ end
18
+
19
+ def list(instance_type_id, params={})
20
+ url = build_url(instance_type_id)
21
+ headers = { params: params, authorization: "Bearer #{@access_token}" }
22
+ opts = {method: :get, url: url, headers: headers}
23
+ execute(opts)
24
+ end
25
+
26
+ def create(instance_type_id, options)
27
+ url = build_url(instance_type_id)
28
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
29
+ payload = options
30
+ opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
31
+ execute(opts)
32
+ end
33
+
34
+ def update(instance_type_id, id, options)
35
+ url = build_url(instance_type_id, id)
36
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
37
+ payload = options
38
+ opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
39
+ execute(opts)
40
+ end
41
+
42
+ def destroy(instance_type_id, id, payload={})
43
+ url = build_url(instance_type_id, id)
44
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
45
+ opts = {method: :delete, url: url, headers: headers, payload: payload.to_json}
46
+ execute(opts)
47
+ end
48
+
49
+ private
50
+
51
+ def build_url(instance_type_id=nil, id=nil)
52
+ url = "#{@base_url}/api"
53
+ if instance_type_id
54
+ url += "/library/#{instance_type_id}/layouts"
55
+ else
56
+ url += "/library/layouts"
57
+ end
58
+ if id
59
+ url += "/#{id}"
60
+ end
61
+ url
62
+ end
63
+
64
+
65
+ end