morpheus-cli 0.1.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/accounts_interface.rb +55 -0
  3. data/lib/morpheus/api/api_client.rb +48 -3
  4. data/lib/morpheus/api/apps_interface.rb +13 -13
  5. data/lib/morpheus/api/{zones_interface.rb → clouds_interface.rb} +10 -10
  6. data/lib/morpheus/api/deploy_interface.rb +4 -4
  7. data/lib/morpheus/api/groups_interface.rb +3 -3
  8. data/lib/morpheus/api/instance_types_interface.rb +2 -2
  9. data/lib/morpheus/api/instances_interface.rb +35 -19
  10. data/lib/morpheus/api/key_pairs_interface.rb +60 -0
  11. data/lib/morpheus/api/license_interface.rb +29 -0
  12. data/lib/morpheus/api/load_balancers_interface.rb +72 -0
  13. data/lib/morpheus/api/logs_interface.rb +37 -0
  14. data/lib/morpheus/api/options_interface.rb +20 -0
  15. data/lib/morpheus/api/provision_types_interface.rb +27 -0
  16. data/lib/morpheus/api/roles_interface.rb +73 -0
  17. data/lib/morpheus/api/security_group_rules_interface.rb +3 -3
  18. data/lib/morpheus/api/security_groups_interface.rb +5 -5
  19. data/lib/morpheus/api/servers_interface.rb +67 -3
  20. data/lib/morpheus/api/task_sets_interface.rb +46 -0
  21. data/lib/morpheus/api/tasks_interface.rb +72 -0
  22. data/lib/morpheus/api/users_interface.rb +72 -0
  23. data/lib/morpheus/cli.rb +27 -4
  24. data/lib/morpheus/cli/accounts.rb +306 -0
  25. data/lib/morpheus/cli/apps.rb +58 -1
  26. data/lib/morpheus/cli/cli_command.rb +87 -0
  27. data/lib/morpheus/cli/cli_registry.rb +6 -1
  28. data/lib/morpheus/cli/{zones.rb → clouds.rb} +99 -70
  29. data/lib/morpheus/cli/credentials.rb +23 -11
  30. data/lib/morpheus/cli/error_handler.rb +31 -11
  31. data/lib/morpheus/cli/groups.rb +1 -0
  32. data/lib/morpheus/cli/hosts.rb +567 -0
  33. data/lib/morpheus/cli/instances.rb +588 -292
  34. data/lib/morpheus/cli/key_pairs.rb +393 -0
  35. data/lib/morpheus/cli/license.rb +118 -0
  36. data/lib/morpheus/cli/load_balancers.rb +366 -0
  37. data/lib/morpheus/cli/mixins/accounts_helper.rb +193 -0
  38. data/lib/morpheus/cli/option_types.rb +260 -0
  39. data/lib/morpheus/cli/roles.rb +164 -0
  40. data/lib/morpheus/cli/security_group_rules.rb +4 -9
  41. data/lib/morpheus/cli/shell.rb +108 -0
  42. data/lib/morpheus/cli/tasks.rb +370 -0
  43. data/lib/morpheus/cli/users.rb +325 -0
  44. data/lib/morpheus/cli/version.rb +1 -1
  45. data/lib/morpheus/cli/workflows.rb +100 -0
  46. data/lib/morpheus/formatters.rb +43 -0
  47. data/morpheus-cli.gemspec +1 -1
  48. metadata +33 -10
  49. data/lib/morpheus/cli/servers.rb +0 -265
@@ -158,6 +158,54 @@ class Morpheus::Cli::Apps
158
158
  list([])
159
159
  end
160
160
 
161
+ def logs(args)
162
+ options = {}
163
+ optparse = OptionParser.new do|opts|
164
+ opts.banner = "Usage: morpheus apps logs [name] [options]"
165
+ Morpheus::Cli::CliCommand.genericOptions(opts,options)
166
+ end
167
+ if args.count < 1
168
+ puts "\n#{optparse.banner}\n\n"
169
+ return
170
+ end
171
+ optparse.parse(args)
172
+ connect(options)
173
+ begin
174
+ app = find_app_by_name(args[0])
175
+ containers = []
176
+ app['appTiers'].each do |app_tier|
177
+ app_tier['appInstances'].each do |app_instance|
178
+ containers += app_instance['instance']['containers']
179
+ end
180
+ end
181
+ logs = @logs_interface.container_logs(containers, { max: options[:max] || 100, offset: options[:offset] || 0, query: options[:phrase]})
182
+ if options[:json]
183
+ puts logs
184
+ else
185
+ logs['data'].reverse.each do |log_entry|
186
+ log_level = ''
187
+ case log_entry['level']
188
+ when 'INFO'
189
+ log_level = "#{blue}#{bold}INFO#{reset}"
190
+ when 'DEBUG'
191
+ log_level = "#{white}#{bold}DEBUG#{reset}"
192
+ when 'WARN'
193
+ log_level = "#{yellow}#{bold}WARN#{reset}"
194
+ when 'ERROR'
195
+ log_level = "#{red}#{bold}ERROR#{reset}"
196
+ when 'FATAL'
197
+ log_level = "#{red}#{bold}FATAL#{reset}"
198
+ end
199
+ puts "[#{log_entry['ts']}] #{log_level} - #{log_entry['message']}"
200
+ end
201
+ print reset,"\n"
202
+ end
203
+ rescue RestClient::Exception => e
204
+ ::Morpheus::Cli::ErrorHandler.new.print_rest_exception(e)
205
+ exit 1
206
+ end
207
+ end
208
+
161
209
  def stats(args)
162
210
  if args.count < 1
163
211
  puts "\nUsage: morpheus apps stats [name]\n\n"
@@ -400,7 +448,7 @@ class Morpheus::Cli::Apps
400
448
 
401
449
  json_response = @apps_interface.get(params)
402
450
  apps = json_response['apps']
403
- print "\n" ,cyan, bold, "Morpheus Instances\n","==================", reset, "\n\n"
451
+ print "\n" ,cyan, bold, "Morpheus Apps\n","==================", reset, "\n\n"
404
452
  if apps.empty?
405
453
  puts yellow,"No apps currently configured.",reset
406
454
  else
@@ -580,6 +628,15 @@ EOF
580
628
  end
581
629
 
582
630
  private
631
+
632
+ def find_app_by_name(name)
633
+ app_results = @apps_interface.get({name: name})
634
+ if app_results['apps'].empty?
635
+ puts "Instance not found by name #{name}"
636
+ exit 1
637
+ end
638
+ return app_results['apps'][0]
639
+ end
583
640
  def find_group_by_name(name)
584
641
  group_results = @groups_interface.get(name)
585
642
  if group_results['groups'].empty?
@@ -10,10 +10,97 @@ module Morpheus
10
10
  klass.extend ClassMethods
11
11
  end
12
12
 
13
+ def self.accountScopeOptions(opts,options)
14
+ opts.on('-a','--account ACCOUNT', "Account Name") do |val|
15
+ options[:account_name] = val
16
+ end
17
+ opts.on('-A','--account-id ID', "Account ID") do |val|
18
+ options[:account_id] = val
19
+ end
20
+ end
21
+
22
+ def self.genericOptions(opts,options)
23
+ opts.on( '-O', '--option OPTION', "Option" ) do |option|
24
+ custom_option_args = option.split('=')
25
+ custom_options = options[:options] || {}
26
+ option_name_args = custom_option_args[0].split('.')
27
+ if option_name_args.count > 1
28
+ nested_options = custom_options
29
+ option_name_args.each_with_index do |name_element,index|
30
+ if index < option_name_args.count - 1
31
+ nested_options[name_element] = nested_options[name_element] || {}
32
+ nested_options = nested_options[name_element]
33
+ else
34
+ nested_options[name_element] = custom_option_args[1]
35
+ end
36
+ end
37
+ else
38
+ custom_options[custom_option_args[0]] = custom_option_args[1]
39
+ end
40
+
41
+ options[:options] = custom_options
42
+ end
43
+ opts.on('-C','--nocolor', "ANSI") do
44
+ Term::ANSIColor::coloring = false
45
+ end
46
+ opts.on( '-h', '--help', "Prints this help" ) do
47
+ puts opts
48
+ exit
49
+ end
50
+ opts.on('-j','--json', "JSON Output") do |json|
51
+ options[:json] = true
52
+ end
53
+ opts.on( '-y', '--yes', "Auto Confirm" ) do
54
+ options[:yes] = true
55
+ end
56
+ opts.on( '-m', '--max MAX', "Max Results" ) do |max|
57
+ options[:max] = max.to_i
58
+ end
59
+
60
+ opts.on( '-o', '--offset OFFSET', "Offset Results" ) do |offset|
61
+ options[:offset] = offset.to_i
62
+ end
63
+
64
+ opts.on( '-r', '--remote REMOTE', "Remote Appliance" ) do |remote|
65
+ options[:remote] = remote
66
+ end
67
+
68
+ opts.on( '-U', '--url REMOTE', "API Url" ) do |remote|
69
+ options[:remote_url] = remote
70
+ end
71
+
72
+ opts.on( '-u', '--username USERNAME', "Username" ) do |remote|
73
+ options[:remote_username] = remote
74
+ end
75
+
76
+ opts.on( '-p', '--password PASSWORD', "Password" ) do |remote|
77
+ options[:remote_password] = remote
78
+ end
79
+
80
+ opts.on( '-T', '--token ACCESS_TOKEN', "Access Token" ) do |remote|
81
+ options[:remote_token] = remote
82
+ end
83
+
84
+ opts.on( '-s', '--search PHRASE', "Search Phrase" ) do |phrase|
85
+ options[:phrase] = phrase
86
+ end
87
+
88
+ opts.on( '', '--sort ORDER', "Sort Order" ) do |v|
89
+ options[:sort] = v
90
+ end
91
+
92
+ opts.on( '', '--desc', "Reverse Sort Order" ) do |v|
93
+ options[:direction] = "desc"
94
+ end
95
+ end
96
+
97
+
13
98
  module ClassMethods
14
99
  def cli_command_name(cmd_name)
15
100
  Morpheus::Cli::CliRegistry.add(self, cmd_name)
16
101
  end
102
+
103
+
17
104
  end
18
105
  end
19
106
  end
@@ -14,7 +14,12 @@ module Morpheus
14
14
  end
15
15
 
16
16
  def exec(command_name, args)
17
- instance.get(command_name).new.handle(args)
17
+ # begin
18
+ Term::ANSIColor::coloring = STDOUT.isatty
19
+ instance.get(command_name).new.handle(args)
20
+ # rescue SystemExit, Interrupt
21
+ # puts "Interrupted..."
22
+ # end
18
23
  end
19
24
 
20
25
  def add(klass, command_name=nil)
@@ -4,25 +4,40 @@ require 'rest_client'
4
4
  require 'term/ansicolor'
5
5
  require 'optparse'
6
6
  require 'morpheus/cli/cli_command'
7
+ require 'morpheus/cli/option_types'
8
+ require 'json'
7
9
 
8
- class Morpheus::Cli::Zones
9
- include Morpheus::Cli::CliCommand
10
+ class Morpheus::Cli::Clouds
11
+ include Morpheus::Cli::CliCommand
10
12
  include Term::ANSIColor
11
13
  def initialize()
12
14
  @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
13
- @access_token = Morpheus::Cli::Credentials.new(@appliance_name,@appliance_url).request_credentials()
14
- @zones_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).zones
15
- @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
16
- @zone_types = @zones_interface.zone_types['zoneTypes']
15
+
17
16
  end
18
17
 
19
- def handle(args)
18
+
19
+ def connect(opts)
20
+ if opts[:remote]
21
+ @appliance_url = opts[:remote]
22
+ @appliance_name = opts[:remote]
23
+ @access_token = Morpheus::Cli::Credentials.new(@appliance_name,@appliance_url).request_credentials(opts)
24
+ else
25
+ @access_token = Morpheus::Cli::Credentials.new(@appliance_name,@appliance_url).request_credentials(opts)
26
+ end
27
+ @api_client = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url)
28
+ @clouds_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).clouds
29
+ @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
30
+ @cloud_types = @clouds_interface.cloud_types['zoneTypes']
20
31
  if @access_token.empty?
21
32
  print red,bold, "\nInvalid Credentials. Unable to acquire access token. Please verify your credentials and try again.\n\n",reset
22
33
  return 1
23
34
  end
35
+ end
36
+
37
+ def handle(args)
38
+
24
39
  if args.empty?
25
- puts "\nUsage: morpheus zones [list,add,remove,firewall_disable,firewall_enable,security_groups,apply_security_groups] [name]\n\n"
40
+ puts "\nUsage: morpheus clouds [list,add,remove,firewall_disable,firewall_enable,security_groups,apply_security_groups] [name]\n\n"
26
41
  return
27
42
  end
28
43
 
@@ -42,28 +57,32 @@ class Morpheus::Cli::Zones
42
57
  when 'apply_security_groups'
43
58
  apply_security_groups(args[1..-1])
44
59
  else
45
- puts "\nUsage: morpheus zones [list,add,remove,firewall_disable,firewall_enable,security_groups,apply_security_groups] [name]\n\n"
60
+ puts "\nUsage: morpheus clouds [list,add,remove,firewall_disable,firewall_enable,security_groups,apply_security_groups] [name]\n\n"
61
+ exit 127 #Command now foud exit code
46
62
  end
47
63
  end
48
64
 
49
65
  def add(args)
50
66
  if args.count < 1
51
- puts "\nUsage: morpheus zones add [name] --group GROUP --type TYPE\n\n"
52
- return
67
+ puts "\nUsage: morpheus clouds add [name] --group GROUP --type TYPE\n\n"
68
+ exit 1
53
69
  end
70
+ options = {}
54
71
  params = {zone_type: 'standard'}
55
72
  optparse = OptionParser.new do|opts|
56
73
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
57
74
  params[:group] = group
58
75
  end
59
- opts.on( '-t', '--type TYPE', "Zone Type" ) do |zone_type|
76
+ opts.on( '-t', '--type TYPE', "Cloud Type" ) do |zone_type|
60
77
  params[:zone_type] = zone_type
61
78
  end
62
79
  opts.on( '-d', '--description DESCRIPTION', "Description (optional)" ) do |desc|
63
80
  params[:description] = desc
64
81
  end
82
+ Morpheus::Cli::CliCommand.genericOptions(opts,options)
65
83
  end
66
- optparse.parse(args)
84
+ optparse.parse!(args)
85
+ connect(options)
67
86
  zone = {name: args[0], description: params[:description]}
68
87
  if !params[:group].nil?
69
88
  group = find_group_by_name(params[:group])
@@ -73,26 +92,32 @@ class Morpheus::Cli::Zones
73
92
  end
74
93
 
75
94
  if !params[:zone_type].nil?
76
- zone['zoneType'] = {code:zone_type_code_for_name(params[:zone_type])}
95
+ cloud_type = cloud_type_for_name(params[:zone_type])
96
+ zone['zoneType'] = {code: cloud_type['code']}
77
97
  end
78
98
 
79
99
  begin
80
- @zones_interface.create(zone)
100
+ zone.merge!(Morpheus::Cli::OptionTypes.prompt(cloud_type['optionTypes'],options[:options],@api_client))
101
+ @clouds_interface.create(zone)
81
102
  rescue => e
82
- if e.response.code == 400
103
+ if e.response and e.response.code == 400
83
104
  error = JSON.parse(e.response.to_s)
84
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
105
+ if options[:json]
106
+ print JSON.pretty_generate(error)
107
+ else
108
+ ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
109
+ end
85
110
  else
86
111
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
87
112
  end
88
- return nil
113
+ exit 1
89
114
  end
90
115
  list([])
91
116
  end
92
117
 
93
118
  def remove(args)
94
119
  if args.count < 2
95
- puts "\nUsage: morpheus zones remove [name] --group GROUP\n\n"
120
+ puts "\nUsage: morpheus clouds remove [name] --group GROUP\n\n"
96
121
  return
97
122
  end
98
123
 
@@ -101,50 +126,50 @@ class Morpheus::Cli::Zones
101
126
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
102
127
  params[:group] = group
103
128
  end
129
+ Morpheus::Cli::CliCommand.genericOptions(opts,params)
104
130
  end
105
131
  optparse.parse(args)
106
-
132
+ connect(params)
107
133
  if !params[:group].nil?
108
134
  group = find_group_by_name(params[:group])
109
135
  if !group.nil?
110
136
  params[:groupId] = group['id']
111
137
  else
112
138
  puts "\nGroup #{params[:group]} not found!"
113
- return
139
+ exit 1
114
140
  end
115
- else params[:group].nil?
116
- puts "\nUsage: morpheus zones remove [name] --group GROUP"
117
- return
118
141
  end
119
142
 
120
143
 
121
144
  begin
122
- zone_results = @zones_interface.get({name: args[0], groupId: params[:groupId]})
145
+ zone_results = @clouds_interface.get({name: args[0]})
123
146
  if zone_results['zones'].empty?
124
147
  puts "Zone not found by name #{args[0]}"
125
- return
148
+ exit 1
126
149
  end
127
- @zones_interface.destroy(zone_results['zones'][0]['id'])
150
+ @clouds_interface.destroy(zone_results['zones'][0]['id'])
128
151
  list([])
129
152
  rescue RestClient::Exception => e
130
- if e.response.code == 400
153
+ if e.response.code == 400 or e.response.code == 500
131
154
  error = JSON.parse(e.response.to_s)
132
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
155
+ ::Morpheus::Cli::ErrorHandler.new.print_errors(error,params)
133
156
  else
134
157
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
135
158
  end
136
- return nil
159
+ exit 1
137
160
  end
138
161
  end
139
162
 
140
163
  def list(args)
141
- options = {}
164
+ options={}
142
165
  optparse = OptionParser.new do|opts|
143
166
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
144
167
  options[:group] = group
145
168
  end
169
+ Morpheus::Cli::CliCommand.genericOptions(opts,options)
146
170
  end
147
171
  optparse.parse(args)
172
+ connect(options)
148
173
  begin
149
174
  params = {}
150
175
  if !options[:group].nil?
@@ -154,36 +179,40 @@ class Morpheus::Cli::Zones
154
179
  end
155
180
  end
156
181
 
157
- json_response = @zones_interface.get(params)
158
- zones = json_response['zones']
159
- print "\n" ,cyan, bold, "Morpheus Zones\n","==================", reset, "\n\n"
160
- if zones.empty?
161
- puts yellow,"No zones currently configured.",reset
182
+ json_response = @clouds_interface.get(params)
183
+ clouds = json_response['zones']
184
+ if options[:json]
185
+ print JSON.pretty_generate(json_response)
186
+ print "\n"
162
187
  else
163
- zones.each do |zone|
164
- print cyan, "= #{zone['name']} (#{zone_type_for_id(zone['zoneTypeId'])}) - #{zone['description']}\n"
188
+ print "\n" ,cyan, bold, "Morpheus Clouds\n","==================", reset, "\n\n"
189
+ if clouds.empty?
190
+ puts yellow,"No clouds currently configured.",reset
191
+ else
192
+ clouds.each do |zone|
193
+ print cyan, "= #{zone['name']} (#{cloud_type_for_id(zone['zoneTypeId'])}) - #{zone['description']}\n"
194
+ end
165
195
  end
196
+ print reset,"\n\n"
166
197
  end
167
- print reset,"\n\n"
168
-
169
198
  rescue => e
170
199
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
171
- return nil
200
+ exit 1
172
201
  end
173
202
  end
174
203
 
175
204
  def firewall_disable(args)
176
205
  if args.count < 1
177
- puts "\nUsage: morpheus zones firewall_disable [name]\n\n"
206
+ puts "\nUsage: morpheus clouds firewall_disable [name]\n\n"
178
207
  return
179
208
  end
180
209
  begin
181
- zone_results = @zones_interface.get({name: args[0]})
210
+ zone_results = @clouds_interface.get({name: args[0]})
182
211
  if zone_results['zones'].empty?
183
212
  puts "Zone not found by name #{args[0]}"
184
- return
213
+ exit 1
185
214
  end
186
- @zones_interface.firewall_disable(zone_results['zones'][0]['id'])
215
+ @clouds_interface.firewall_disable(zone_results['zones'][0]['id'])
187
216
  security_groups([args[0]])
188
217
  rescue RestClient::Exception => e
189
218
  if e.response.code == 400
@@ -192,22 +221,22 @@ class Morpheus::Cli::Zones
192
221
  else
193
222
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
194
223
  end
195
- return nil
224
+ exit 1
196
225
  end
197
226
  end
198
227
 
199
228
  def firewall_enable(args)
200
229
  if args.count < 1
201
- puts "\nUsage: morpheus zones firewall_enable [name]\n\n"
230
+ puts "\nUsage: morpheus clouds firewall_enable [name]\n\n"
202
231
  return
203
232
  end
204
233
  begin
205
- zone_results = @zones_interface.get({name: args[0]})
234
+ zone_results = @clouds_interface.get({name: args[0]})
206
235
  if zone_results['zones'].empty?
207
236
  puts "Zone not found by name #{args[0]}"
208
- return
237
+ exit 1
209
238
  end
210
- @zones_interface.firewall_enable(zone_results['zones'][0]['id'])
239
+ @clouds_interface.firewall_enable(zone_results['zones'][0]['id'])
211
240
  security_groups([args[0]])
212
241
  rescue RestClient::Exception => e
213
242
  if e.response.code == 400
@@ -216,24 +245,24 @@ class Morpheus::Cli::Zones
216
245
  else
217
246
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
218
247
  end
219
- return nil
248
+ exit 1
220
249
  end
221
250
  end
222
251
 
223
252
  def security_groups(args)
224
253
  if args.count < 1
225
- puts "\nUsage: morpheus zones security_groups [name]\n\n"
254
+ puts "\nUsage: morpheus clouds security_groups [name]\n\n"
226
255
  return
227
256
  end
228
257
  begin
229
- zone_results = @zones_interface.get({name: args[0]})
258
+ zone_results = @clouds_interface.get({name: args[0]})
230
259
  if zone_results['zones'].empty?
231
260
  puts "Zone not found by name #{args[0]}"
232
- return
261
+ exit 1
233
262
  end
234
263
 
235
264
  zone_id = zone_results['zones'][0]['id']
236
- json_response = @zones_interface.security_groups(zone_id)
265
+ json_response = @clouds_interface.security_groups(zone_id)
237
266
 
238
267
  securityGroups = json_response['securityGroups']
239
268
  print "\n" ,cyan, bold, "Morpheus Security Groups for Zone:#{zone_id}\n","==================", reset, "\n\n"
@@ -254,17 +283,17 @@ class Morpheus::Cli::Zones
254
283
  else
255
284
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
256
285
  end
257
- return nil
286
+ exit 1
258
287
  end
259
288
  end
260
289
 
261
290
  def apply_security_groups(args)
262
291
  usage = <<-EOF
263
- Usage: morpheus zones apply_security_groups [name] [options]
292
+ Usage: morpheus clouds apply_security_groups [name] [options]
264
293
  EOF
265
294
  if args.count < 1
266
295
  puts usage
267
- return
296
+ exit 1
268
297
  end
269
298
 
270
299
  options = {}
@@ -292,13 +321,13 @@ EOF
292
321
  end
293
322
 
294
323
  begin
295
- zone_results = @zones_interface.get({name: args[0]})
324
+ zone_results = @clouds_interface.get({name: args[0]})
296
325
  if zone_results['zones'].empty?
297
326
  puts "Zone not found by name #{args[0]}"
298
- return
327
+ exit 1
299
328
  end
300
329
 
301
- @zones_interface.apply_security_groups(zone_results['zones'][0]['id'], options)
330
+ @clouds_interface.apply_security_groups(zone_results['zones'][0]['id'], options)
302
331
  security_groups([args[0]])
303
332
  rescue RestClient::Exception => e
304
333
  if e.response.code == 400
@@ -307,15 +336,15 @@ EOF
307
336
  else
308
337
  puts "Error Communicating with the Appliance. Please try again later. #{e}"
309
338
  end
310
- return nil
339
+ exit 1
311
340
  end
312
341
  end
313
342
 
314
- private
343
+ private
315
344
 
316
- def zone_type_for_id(id)
317
- if !@zone_types.empty?
318
- zone_type = @zone_types.find { |z| z['id'].to_i == id.to_i}
345
+ def cloud_type_for_id(id)
346
+ if !@cloud_types.empty?
347
+ zone_type = @cloud_types.find { |z| z['id'].to_i == id.to_i}
319
348
  if !zone_type.nil?
320
349
  return zone_type['name']
321
350
  end
@@ -323,11 +352,11 @@ EOF
323
352
  return nil
324
353
  end
325
354
 
326
- def zone_type_code_for_name(name)
327
- if !@zone_types.empty?
328
- zone_type = @zone_types.find { |z| z['name'].downcase == name.downcase}
355
+ def cloud_type_for_name(name)
356
+ if !@cloud_types.empty?
357
+ zone_type = @cloud_types.find { |z| z['name'].downcase == name.downcase || z['code'].downcase == name.downcase}
329
358
  if !zone_type.nil?
330
- return zone_type['code']
359
+ return zone_type
331
360
  end
332
361
  end
333
362
  return nil