morpheus-cli 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65706da7190d81081637401fa308e8660c736c23
4
- data.tar.gz: e2fed380d8ad530ec634fffb8be5aa7b68935282
3
+ metadata.gz: 155f7945ae237b102b407e7e7f0558f390db806f
4
+ data.tar.gz: a42d7f42f2c04b8793ec463c5f54832ab8630138
5
5
  SHA512:
6
- metadata.gz: fd19b182093c82ab1db32af90a5d0cc59aed0e0acefdf797383a8d70a447036f018392659bf44027dd7408bd17d65d0231c774cabe54fd5da07ed6b6220911d3
7
- data.tar.gz: 38abfa8301a1dd15e080768277dc2cc4cbf886a437bb969ac8f99ee6e32360f77582994eea65c4d5b5e21e10fc92a7d891e759ba586f39941784f758a54b11ed
6
+ metadata.gz: 15b5d574772c270cd79ba16aca4b5474e1baefe66c508ac943811c1be61f5aef72fc7a1d309d568f5d5134b9436f6fd8583c37588a8331c49c5714cb7814e484
7
+ data.tar.gz: 834ee86b5021746dcd9fefa488e933434cc08b5ad8606894123281ffad98a98890cd992ace753d7afb6d552e4953ed2d612156dfd672d7ffaa5a2b8e6e0d4f64
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Morpheus::Cli
2
2
 
3
- TODO: Write a gem description
3
+ Provides a command line interface for interacting with the Morpheus Cloud Platform. Easily provision servers, containers, and manage deployments.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,7 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Please check out the [Wiki](https://github.com/gomorpheus/morpheus-cli/wiki) for usage instructions.
22
22
 
23
23
  ## Contributing
24
24
 
data/bin/morpheus CHANGED
@@ -1,28 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'morpheus/cli'
3
+ require 'morpheus/rest_client'
4
+ require 'morpheus/cli/cli_registry'
3
5
 
4
6
  remote_handler = Morpheus::Cli::Remote.new()
5
7
 
8
+ # parse args to handle global issues
9
+ if ARGV.find {|arg| arg == '--insecure'}
10
+ Morpheus::RestClient.enable_ssl_verification = false
11
+ end
12
+
13
+ filtered_args = ARGV.find_all {|arg| arg != '--insecure'}
14
+
15
+ if Morpheus::Cli::CliRegistry.has_command?(ARGV[0])
16
+ Morpheus::Cli::CliRegistry.exec(ARGV[0], filtered_args[1..-1])
17
+ exit 0
18
+ end
19
+
6
20
  case ARGV[0]
7
21
  when 'remote'
8
- remote_handler.handle(ARGV[1..-1])
22
+ remote_handler.handle(filtered_args[1..-1])
9
23
  when 'login'
10
24
  appliance_name, appliance_url = Morpheus::Cli::Remote.active_appliance
11
25
  Morpheus::Cli::Credentials.new(appliance_name,appliance_url).login()
12
- when 'groups'
13
- Morpheus::Cli::Groups.new().handle(ARGV[1..-1])
14
- when 'zones'
15
- Morpheus::Cli::Zones.new().handle(ARGV[1..-1])
16
- when 'servers'
17
- Morpheus::Cli::Servers.new().handle(ARGV[1..-1])
18
- when 'instances'
19
- Morpheus::Cli::Instances.new().handle(ARGV[1..-1])
20
- when 'instance-types'
21
- Morpheus::Cli::InstanceTypes.new().handle(ARGV[1..-1])
22
- when 'apps'
23
- Morpheus::Cli::Apps.new().handle(ARGV[1..-1])
24
- when 'deploy'
25
- Morpheus::Cli::Deploys.new().handle(ARGV[1..-1])
26
26
  when 'logout'
27
27
  appliance_name, appliance_url = Morpheus::Cli::Remote.active_appliance
28
28
  creds = Morpheus::Cli::Credentials.new(appliance_name,appliance_url).load_saved_credentials()
@@ -33,4 +33,12 @@ case ARGV[0]
33
33
  end
34
34
  else
35
35
  puts "\nUsage: morpheus [command] [options]\n"
36
- end
36
+ puts "\nCommands:\n"
37
+ puts "\tremote"
38
+ puts "\tlogin"
39
+ puts "\tlogout"
40
+ Morpheus::Cli::CliRegistry.all.each {|cmd,klass|
41
+ puts "\t#{cmd.to_s}"
42
+ }
43
+ puts ""
44
+ end
@@ -38,4 +38,12 @@ class Morpheus::APIClient
38
38
  def deploy
39
39
  Morpheus::DeployInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
40
40
  end
41
+
42
+ def security_groups
43
+ Morpheus::SecurityGroupsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
44
+ end
45
+
46
+ def security_group_rules
47
+ Morpheus::SecurityGroupRulesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
48
+ end
41
49
  end
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'rest-client'
2
+ require 'morpheus/rest_client'
3
3
 
4
4
  class Morpheus::AppsInterface < Morpheus::APIClient
5
5
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
@@ -21,7 +21,7 @@ class Morpheus::AppsInterface < Morpheus::APIClient
21
21
  elsif options.is_a?(String)
22
22
  headers[:params]['name'] = options
23
23
  end
24
- response = RestClient::Request.execute(method: :get, url: url,
24
+ response = Morpheus::RestClient.execute(method: :get, url: url,
25
25
  timeout: 10, headers: headers)
26
26
  JSON.parse(response.to_s)
27
27
  end
@@ -29,8 +29,8 @@ class Morpheus::AppsInterface < Morpheus::APIClient
29
29
  def get_envs(id, options=nil)
30
30
  url = "#{@base_url}/api/apps/#{id}/envs"
31
31
  headers = { params: {}, authorization: "Bearer #{@access_token}" }
32
- response = RestClient::Request.execute(method: :get, url: url,
33
- timeout: 10, headers: headers)
32
+ response = Morpheus::RestClient.execute(method: :get, url: url,
33
+ timeout: 10, headers: headers)
34
34
  JSON.parse(response.to_s)
35
35
  end
36
36
 
@@ -39,7 +39,7 @@ class Morpheus::AppsInterface < Morpheus::APIClient
39
39
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
40
40
 
41
41
  payload = {envs: options}
42
- response = RestClient::Request.execute(method: :post, url: url,
42
+ response = Morpheus::RestClient.execute(method: :post, url: url,
43
43
  timeout: 10, headers: headers, payload: payload.to_json)
44
44
  JSON.parse(response.to_s)
45
45
  end
@@ -48,8 +48,8 @@ class Morpheus::AppsInterface < Morpheus::APIClient
48
48
  url = "#{@base_url}/api/apps/#{id}/envs/#{name}"
49
49
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
50
50
 
51
- response = RestClient::Request.execute(method: :delete, url: url,
52
- timeout: 10, headers: headers)
51
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
52
+ timeout: 10, headers: headers)
53
53
  JSON.parse(response.to_s)
54
54
  end
55
55
 
@@ -59,40 +59,73 @@ class Morpheus::AppsInterface < Morpheus::APIClient
59
59
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
60
60
 
61
61
  payload = options
62
- response = RestClient::Request.execute(method: :post, url: url,
63
- timeout: 10, headers: headers, payload: payload.to_json)
62
+ response = Morpheus::RestClient.execute(method: :post, url: url,
63
+ timeout: 10, headers: headers, payload: payload.to_json)
64
64
  JSON.parse(response.to_s)
65
65
  end
66
66
 
67
67
  def destroy(id)
68
68
  url = "#{@base_url}/api/apps/#{id}"
69
69
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
70
- response = RestClient::Request.execute(method: :delete, url: url,
71
- timeout: 10, headers: headers)
70
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
71
+ timeout: 10, headers: headers)
72
72
  JSON.parse(response.to_s)
73
73
  end
74
74
 
75
75
  def stop(id)
76
76
  url = "#{@base_url}/api/apps/#{id}/stop"
77
77
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
78
- response = RestClient::Request.execute(method: :put, url: url,
79
- timeout: 10, headers: headers)
78
+ response = Morpheus::RestClient.execute(method: :put, url: url,
79
+ timeout: 10, headers: headers)
80
80
  JSON.parse(response.to_s)
81
81
  end
82
82
 
83
83
  def start(id)
84
84
  url = "#{@base_url}/api/apps/#{id}/start"
85
85
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
86
- response = RestClient::Request.execute(method: :put, url: url,
87
- timeout: 10, headers: headers)
86
+ response = Morpheus::RestClient.execute(method: :put, url: url,
87
+ timeout: 10, headers: headers)
88
88
  JSON.parse(response.to_s)
89
89
  end
90
90
 
91
91
  def restart(id)
92
92
  url = "#{@base_url}/api/apps/#{id}/restart"
93
93
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
94
- response = RestClient::Request.execute(method: :put, url: url,
94
+ response = Morpheus::RestClient.execute(method: :put, url: url,
95
+ timeout: 10, headers: headers)
96
+ JSON.parse(response.to_s)
97
+ end
98
+
99
+ def firewall_disable(id)
100
+ url = "#{@base_url}/api/apps/#{id}/security-groups/disable"
101
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
102
+ response = Morpheus::RestClient.execute(method: :put, url: url,
103
+ timeout: 10, headers: headers)
104
+ JSON.parse(response.to_s)
105
+ end
106
+
107
+ def firewall_enable(id)
108
+ url = "#{@base_url}/api/apps/#{id}/security-groups/enable"
109
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
110
+ response = Morpheus::RestClient.execute(method: :put, url: url,
111
+ timeout: 10, headers: headers)
112
+ JSON.parse(response.to_s)
113
+ end
114
+
115
+ def security_groups(id)
116
+ url = "#{@base_url}/api/apps/#{id}/security-groups"
117
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
118
+ response = Morpheus::RestClient.execute(method: :get, url: url,
95
119
  timeout: 10, headers: headers)
96
120
  JSON.parse(response.to_s)
97
121
  end
98
- end
122
+
123
+ def apply_security_groups(id, options)
124
+ url = "#{@base_url}/api/apps/#{id}/security-groups"
125
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
126
+ payload = options
127
+ response = Morpheus::RestClient.execute(method: :post, url: url,
128
+ timeout: 10, headers: headers, payload: payload.to_json)
129
+ JSON.parse(response.to_s)
130
+ end
131
+ end
@@ -1,7 +1,7 @@
1
1
  require 'json'
2
- require 'rest-client'
3
2
  require 'net/http/post/multipart'
4
3
  require 'mime/types'
4
+ require 'morpheus/rest_client'
5
5
 
6
6
  class Morpheus::DeployInterface < Morpheus::APIClient
7
7
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
@@ -21,7 +21,7 @@ class Morpheus::DeployInterface < Morpheus::APIClient
21
21
  elsif options.is_a?(String)
22
22
  headers[:params]['name'] = options
23
23
  end
24
- response = RestClient::Request.execute(method: :get, url: url,
24
+ response = Morpheus::RestClient.execute(method: :get, url: url,
25
25
  timeout: 10, headers: headers)
26
26
  JSON.parse(response.to_s)
27
27
  end
@@ -32,7 +32,7 @@ class Morpheus::DeployInterface < Morpheus::APIClient
32
32
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
33
33
 
34
34
  payload = options || {}
35
- response = RestClient::Request.execute(method: :post, url: url,
35
+ response = Morpheus::RestClient.execute(method: :post, url: url,
36
36
  timeout: 10, headers: headers, payload: payload.to_json)
37
37
  JSON.parse(response.to_s)
38
38
  end
@@ -42,7 +42,7 @@ class Morpheus::DeployInterface < Morpheus::APIClient
42
42
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
43
43
 
44
44
  payload = options
45
- response = RestClient::Request.execute(method: :get, url: url,
45
+ response = Morpheus::RestClient.execute(method: :get, url: url,
46
46
  timeout: 10, headers: headers)
47
47
  JSON.parse(response.to_s)
48
48
  end
@@ -68,7 +68,7 @@ class Morpheus::DeployInterface < Morpheus::APIClient
68
68
  def destroy(id)
69
69
  url = "#{@base_url}/api/deploy/#{id}"
70
70
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
71
- response = RestClient::Request.execute(method: :delete, url: url,
71
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
72
72
  timeout: 10, headers: headers)
73
73
  JSON.parse(response.to_s)
74
74
  end
@@ -82,7 +82,7 @@ class Morpheus::DeployInterface < Morpheus::APIClient
82
82
  end
83
83
  end
84
84
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
85
- response = RestClient::Request.execute(method: :post, url: url, headers: headers, timeout: nil, payload: payload.to_json)
85
+ response = Morpheus::RestClient.execute(method: :post, url: url, headers: headers, timeout: nil, payload: payload.to_json)
86
86
  JSON.parse(response.to_s)
87
87
  end
88
- end
88
+ end
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'rest-client'
2
+ require 'morpheus/rest_client'
3
3
 
4
4
  class Morpheus::GroupsInterface < Morpheus::APIClient
5
5
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
@@ -21,7 +21,7 @@ class Morpheus::GroupsInterface < Morpheus::APIClient
21
21
  elsif options.is_a?(String)
22
22
  headers[:params]['name'] = options
23
23
  end
24
- response = RestClient::Request.execute(method: :get, url: url,
24
+ response = Morpheus::RestClient.execute(method: :get, url: url,
25
25
  timeout: 10, headers: headers)
26
26
  JSON.parse(response.to_s)
27
27
  end
@@ -32,7 +32,7 @@ class Morpheus::GroupsInterface < Morpheus::APIClient
32
32
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
33
33
 
34
34
  payload = {group: options}
35
- response = RestClient::Request.execute(method: :post, url: url,
35
+ response = Morpheus::RestClient.execute(method: :post, url: url,
36
36
  timeout: 10, headers: headers, payload: payload.to_json)
37
37
  JSON.parse(response.to_s)
38
38
  end
@@ -40,8 +40,8 @@ class Morpheus::GroupsInterface < Morpheus::APIClient
40
40
  def destroy(id)
41
41
  url = "#{@base_url}/api/groups/#{id}"
42
42
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
43
- response = RestClient::Request.execute(method: :delete, url: url,
43
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
44
44
  timeout: 10, headers: headers)
45
45
  JSON.parse(response.to_s)
46
46
  end
47
- end
47
+ end
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'rest-client'
2
+ require 'morpheus/rest_client'
3
3
 
4
4
  class Morpheus::InstanceTypesInterface < Morpheus::APIClient
5
5
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
@@ -21,7 +21,7 @@ class Morpheus::InstanceTypesInterface < Morpheus::APIClient
21
21
  elsif options.is_a?(String)
22
22
  headers[:params]['name'] = options
23
23
  end
24
- response = RestClient::Request.execute(method: :get, url: url,
24
+ response = Morpheus::RestClient.execute(method: :get, url: url,
25
25
  timeout: 10, headers: headers)
26
26
  JSON.parse(response.to_s)
27
27
  end
@@ -33,10 +33,10 @@ class Morpheus::InstanceTypesInterface < Morpheus::APIClient
33
33
  if !name.nil?
34
34
  headers[:params][:name] = name
35
35
  end
36
- response = RestClient::Request.execute(method: :get, url: url,
36
+ response = Morpheus::RestClient.execute(method: :get, url: url,
37
37
  timeout: 10, headers: headers)
38
38
  JSON.parse(response.to_s)
39
39
  end
40
40
 
41
41
 
42
- end
42
+ end
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'rest-client'
2
+ require 'morpheus/rest_client'
3
3
 
4
4
  class Morpheus::InstancesInterface < Morpheus::APIClient
5
5
  def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
@@ -9,7 +9,6 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
9
9
  @expires_at = expires_at
10
10
  end
11
11
 
12
-
13
12
  def get(options=nil)
14
13
  url = "#{@base_url}/api/instances"
15
14
  headers = { params: {}, authorization: "Bearer #{@access_token}" }
@@ -21,7 +20,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
21
20
  elsif options.is_a?(String)
22
21
  headers[:params]['name'] = options
23
22
  end
24
- response = RestClient::Request.execute(method: :get, url: url,
23
+ response = Morpheus::RestClient.execute(method: :get, url: url,
25
24
  timeout: 10, headers: headers)
26
25
  JSON.parse(response.to_s)
27
26
  end
@@ -29,7 +28,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
29
28
  def get_envs(id, options=nil)
30
29
  url = "#{@base_url}/api/instances/#{id}/envs"
31
30
  headers = { params: {}, authorization: "Bearer #{@access_token}" }
32
- response = RestClient::Request.execute(method: :get, url: url,
31
+ response = Morpheus::RestClient.execute(method: :get, url: url,
33
32
  timeout: 10, headers: headers)
34
33
  JSON.parse(response.to_s)
35
34
  end
@@ -39,7 +38,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
39
38
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
40
39
 
41
40
  payload = {envs: options}
42
- response = RestClient::Request.execute(method: :post, url: url,
41
+ response = Morpheus::RestClient.execute(method: :post, url: url,
43
42
  timeout: 10, headers: headers, payload: payload.to_json)
44
43
  JSON.parse(response.to_s)
45
44
  end
@@ -48,7 +47,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
48
47
  url = "#{@base_url}/api/instances/#{id}/envs/#{name}"
49
48
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
50
49
 
51
- response = RestClient::Request.execute(method: :delete, url: url,
50
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
52
51
  timeout: 10, headers: headers)
53
52
  JSON.parse(response.to_s)
54
53
  end
@@ -59,7 +58,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
59
58
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
60
59
 
61
60
  payload = options
62
- response = RestClient::Request.execute(method: :post, url: url,
61
+ response = Morpheus::RestClient.execute(method: :post, url: url,
63
62
  timeout: 10, headers: headers, payload: payload.to_json)
64
63
  JSON.parse(response.to_s)
65
64
  end
@@ -67,7 +66,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
67
66
  def destroy(id)
68
67
  url = "#{@base_url}/api/instances/#{id}"
69
68
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
70
- response = RestClient::Request.execute(method: :delete, url: url,
69
+ response = Morpheus::RestClient.execute(method: :delete, url: url,
71
70
  timeout: 10, headers: headers)
72
71
  JSON.parse(response.to_s)
73
72
  end
@@ -75,7 +74,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
75
74
  def stop(id)
76
75
  url = "#{@base_url}/api/instances/#{id}/stop"
77
76
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
78
- response = RestClient::Request.execute(method: :put, url: url,
77
+ response = Morpheus::RestClient.execute(method: :put, url: url,
79
78
  timeout: 10, headers: headers)
80
79
  JSON.parse(response.to_s)
81
80
  end
@@ -83,7 +82,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
83
82
  def start(id)
84
83
  url = "#{@base_url}/api/instances/#{id}/start"
85
84
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
86
- response = RestClient::Request.execute(method: :put, url: url,
85
+ response = Morpheus::RestClient.execute(method: :put, url: url,
87
86
  timeout: 10, headers: headers)
88
87
  JSON.parse(response.to_s)
89
88
  end
@@ -91,8 +90,43 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
91
90
  def restart(id)
92
91
  url = "#{@base_url}/api/instances/#{id}/restart"
93
92
  headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
94
- response = RestClient::Request.execute(method: :put, url: url,
93
+ response = Morpheus::RestClient.execute(method: :put, url: url,
94
+ timeout: 10, headers: headers)
95
+ JSON.parse(response.to_s)
96
+ end
97
+
98
+ def firewall_disable(id)
99
+ url = "#{@base_url}/api/instances/#{id}/security-groups/disable"
100
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
101
+ response = Morpheus::RestClient.execute(method: :put, url: url,
102
+ timeout: 10, headers: headers)
103
+ JSON.parse(response.to_s)
104
+ end
105
+
106
+ def firewall_enable(id)
107
+ url = "#{@base_url}/api/instances/#{id}/security-groups/enable"
108
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
109
+ response = Morpheus::RestClient.execute(method: :put, url: url,
95
110
  timeout: 10, headers: headers)
96
111
  JSON.parse(response.to_s)
97
112
  end
98
- end
113
+
114
+ def security_groups(id)
115
+ url = "#{@base_url}/api/instances/#{id}/security-groups"
116
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
117
+ response = Morpheus::RestClient.execute(method: :get, url: url,
118
+ timeout: 10, headers: headers)
119
+ JSON.parse(response.to_s)
120
+ end
121
+
122
+ def apply_security_groups(id, options)
123
+ url = "#{@base_url}/api/instances/#{id}/security-groups"
124
+ headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
125
+ payload = options
126
+ puts "payload #{payload}"
127
+ response = Morpheus::RestClient.execute(method: :post, url: url,
128
+ timeout: 10, headers: headers, payload: payload.to_json)
129
+ JSON.parse(response.to_s)
130
+ end
131
+
132
+ end