morpheus-cli 0.9.9 → 0.9.10

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/api_client.rb +4 -0
  3. data/lib/morpheus/api/app_templates_interface.rb +74 -0
  4. data/lib/morpheus/api/instance_types_interface.rb +9 -0
  5. data/lib/morpheus/api/instances_interface.rb +16 -0
  6. data/lib/morpheus/api/roles_interface.rb +37 -1
  7. data/lib/morpheus/cli.rb +4 -1
  8. data/lib/morpheus/cli/accounts.rb +82 -58
  9. data/lib/morpheus/cli/app_templates.rb +908 -0
  10. data/lib/morpheus/cli/apps.rb +226 -187
  11. data/lib/morpheus/cli/cli_command.rb +57 -30
  12. data/lib/morpheus/cli/clouds.rb +50 -65
  13. data/lib/morpheus/cli/deployments.rb +18 -33
  14. data/lib/morpheus/cli/deploys.rb +1 -3
  15. data/lib/morpheus/cli/groups.rb +54 -38
  16. data/lib/morpheus/cli/hosts.rb +86 -80
  17. data/lib/morpheus/cli/instance_types.rb +42 -29
  18. data/lib/morpheus/cli/instances.rb +192 -69
  19. data/lib/morpheus/cli/key_pairs.rb +70 -87
  20. data/lib/morpheus/cli/license.rb +7 -9
  21. data/lib/morpheus/cli/load_balancers.rb +23 -53
  22. data/lib/morpheus/cli/mixins/accounts_helper.rb +7 -8
  23. data/lib/morpheus/cli/mixins/print_helper.rb +67 -0
  24. data/lib/morpheus/cli/mixins/provisioning_helper.rb +461 -0
  25. data/lib/morpheus/cli/option_types.rb +71 -18
  26. data/lib/morpheus/cli/roles.rb +725 -34
  27. data/lib/morpheus/cli/security_group_rules.rb +50 -70
  28. data/lib/morpheus/cli/security_groups.rb +61 -48
  29. data/lib/morpheus/cli/shell.rb +123 -14
  30. data/lib/morpheus/cli/tasks.rb +24 -59
  31. data/lib/morpheus/cli/users.rb +86 -71
  32. data/lib/morpheus/cli/version.rb +1 -1
  33. data/lib/morpheus/cli/virtual_images.rb +21 -51
  34. data/lib/morpheus/cli/workflows.rb +14 -29
  35. data/lib/morpheus/ext/nil_class.rb +5 -0
  36. data/lib/morpheus/formatters.rb +1 -0
  37. metadata +7 -3
  38. data/lib/morpheus/cli/error_handler.rb +0 -44
@@ -1,4 +1,5 @@
1
1
  require 'morpheus/cli/cli_registry'
2
+ require 'morpheus/cli/mixins/print_helper'
2
3
 
3
4
  module Morpheus
4
5
  module Cli
@@ -7,19 +8,24 @@ module Morpheus
7
8
 
8
9
  def self.included(klass)
9
10
  Morpheus::Cli::CliRegistry.add(klass)
11
+ klass.include Morpheus::Cli::PrintHelper
10
12
  klass.extend ClassMethods
11
13
  end
12
14
 
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
15
+ def build_common_options(opts, options, includes=[])
16
+ includes = includes.clone
17
+ while (option_key = includes.shift) do
18
+ case option_key.to_sym
19
+
20
+ when :account
21
+ opts.on('-a','--account ACCOUNT', "Account Name") do |val|
22
+ options[:account_name] = val
23
+ end
24
+ opts.on('-A','--account-id ID', "Account ID") do |val|
25
+ options[:account_id] = val
26
+ end
21
27
 
22
- def self.genericOptions(opts,options)
28
+ when :options
23
29
  opts.on( '-O', '--option OPTION', "Option" ) do |option|
24
30
  custom_option_args = option.split('=')
25
31
  custom_options = options[:options] || {}
@@ -40,19 +46,14 @@ module Morpheus
40
46
 
41
47
  options[:options] = custom_options
42
48
  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
49
+ opts.on('-N','--no-prompt', "Skip prompts. Use default values for all optional fields.") do |val|
50
+ options[:no_prompt] = true
51
+ # ew, stored in here for now because options[:options] is what is passed into OptionTypes.prompt() everywhere!
52
+ options[:options] ||= {}
53
+ options[:options][:no_prompt] = true
55
54
  end
55
+ when :list
56
+
56
57
  opts.on( '-m', '--max MAX', "Max Results" ) do |max|
57
58
  options[:max] = max.to_i
58
59
  end
@@ -61,6 +62,19 @@ module Morpheus
61
62
  options[:offset] = offset.to_i
62
63
  end
63
64
 
65
+ opts.on( '-s', '--search PHRASE', "Search Phrase" ) do |phrase|
66
+ options[:phrase] = phrase
67
+ end
68
+
69
+ opts.on( '-S', '--sort ORDER', "Sort Order" ) do |v|
70
+ options[:sort] = v
71
+ end
72
+
73
+ opts.on( '-D', '--desc', "Reverse Sort Order" ) do |v|
74
+ options[:direction] = "desc"
75
+ end
76
+
77
+ when :remote
64
78
  opts.on( '-r', '--remote REMOTE', "Remote Appliance" ) do |remote|
65
79
  options[:remote] = remote
66
80
  end
@@ -80,18 +94,31 @@ module Morpheus
80
94
  opts.on( '-T', '--token ACCESS_TOKEN', "Access Token" ) do |remote|
81
95
  options[:remote_token] = remote
82
96
  end
83
-
84
- opts.on( '-s', '--search PHRASE', "Search Phrase" ) do |phrase|
85
- options[:phrase] = phrase
97
+
98
+ when :auto_confirm
99
+ opts.on( '-y', '--yes', "Auto Confirm" ) do
100
+ options[:yes] = true
86
101
  end
87
-
88
- opts.on( '', '--sort ORDER', "Sort Order" ) do |v|
89
- options[:sort] = v
102
+
103
+ when :json
104
+ opts.on('-j','--json', "JSON Output") do |json|
105
+ options[:json] = true
90
106
  end
107
+
108
+ else
109
+ raise "Unknown common_option key: #{option_key}"
110
+ end
111
+ end
112
+
113
+ # options that are always included
114
+ opts.on('-C','--nocolor', "ANSI") do
115
+ Term::ANSIColor::coloring = false
116
+ end
117
+ opts.on('-h', '--help', "Prints this help" ) do
118
+ puts opts
119
+ exit
120
+ end
91
121
 
92
- opts.on( '', '--desc', "Reverse Sort Order" ) do |v|
93
- options[:direction] = "desc"
94
- end
95
122
  end
96
123
 
97
124
 
@@ -1,7 +1,6 @@
1
1
  # require 'yaml'
2
2
  require 'io/console'
3
3
  require 'rest_client'
4
- require 'term/ansicolor'
5
4
  require 'optparse'
6
5
  require 'morpheus/cli/cli_command'
7
6
  require 'morpheus/cli/option_types'
@@ -9,7 +8,7 @@ require 'json'
9
8
 
10
9
  class Morpheus::Cli::Clouds
11
10
  include Morpheus::Cli::CliCommand
12
- include Term::ANSIColor
11
+
13
12
  def initialize()
14
13
  @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
15
14
 
@@ -29,7 +28,7 @@ class Morpheus::Cli::Clouds
29
28
  @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
30
29
  @cloud_types = @clouds_interface.cloud_types['zoneTypes']
31
30
  if @access_token.empty?
32
- print red,bold, "\nInvalid Credentials. Unable to acquire access token. Please verify your credentials and try again.\n\n",reset
31
+ print_red_alert "Invalid Credentials. Unable to acquire access token. Please verify your credentials and try again."
33
32
  return 1
34
33
  end
35
34
  end
@@ -63,13 +62,10 @@ class Morpheus::Cli::Clouds
63
62
  end
64
63
 
65
64
  def add(args)
66
- if args.count < 1
67
- puts "\nUsage: morpheus clouds add [name] --group GROUP --type TYPE\n\n"
68
- exit 1
69
- end
70
65
  options = {}
71
66
  params = {zone_type: 'standard'}
72
67
  optparse = OptionParser.new do|opts|
68
+ opts.banner = "Usage: morpheus clouds add [name] --group GROUP --type TYPE"
73
69
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
74
70
  params[:group] = group
75
71
  end
@@ -79,9 +75,15 @@ class Morpheus::Cli::Clouds
79
75
  opts.on( '-d', '--description DESCRIPTION', "Description (optional)" ) do |desc|
80
76
  params[:description] = desc
81
77
  end
82
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
78
+ build_common_options(opts, options, [:options, :json, :remote])
83
79
  end
84
80
  optparse.parse!(args)
81
+
82
+ if args.count < 1
83
+ puts "\n#{optparse.banner}\n\n"
84
+ exit 1
85
+ end
86
+
85
87
  connect(options)
86
88
  zone = {name: args[0], description: params[:description]}
87
89
  if !params[:group].nil?
@@ -98,44 +100,42 @@ class Morpheus::Cli::Clouds
98
100
 
99
101
  begin
100
102
  zone.merge!(Morpheus::Cli::OptionTypes.prompt(cloud_type['optionTypes'],options[:options],@api_client))
101
- @clouds_interface.create(zone)
102
- rescue => e
103
- if e.response and e.response.code == 400
104
- error = JSON.parse(e.response.to_s)
105
- if options[:json]
106
- print JSON.pretty_generate(error)
107
- else
108
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
109
- end
103
+ json_response = @clouds_interface.create(zone)
104
+ if options[:json]
105
+ print JSON.pretty_generate(json_response)
106
+ print "\n"
110
107
  else
111
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
108
+ list([])
112
109
  end
110
+ rescue RestClient::Exception => e
111
+ print_rest_exception(e, options)
113
112
  exit 1
114
113
  end
115
- list([])
116
114
  end
117
115
 
118
116
  def remove(args)
119
- if args.count < 2
120
- puts "\nUsage: morpheus clouds remove [name] --group GROUP\n\n"
121
- return
122
- end
123
-
124
- params = {}
117
+ options = {}
125
118
  optparse = OptionParser.new do|opts|
119
+ opts.banner = "Usage: morpheus clouds remove [name] --group GROUP"
126
120
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
127
- params[:group] = group
121
+ options[:group] = group
128
122
  end
129
- Morpheus::Cli::CliCommand.genericOptions(opts,params)
123
+ build_common_options(opts, options, [:auto_confirm, :json, :remote])
130
124
  end
131
125
  optparse.parse(args)
132
- connect(params)
133
- if !params[:group].nil?
134
- group = find_group_by_name(params[:group])
126
+
127
+ if args.count < 2
128
+ puts "\n#{optparse.banner}\n\n"
129
+ return
130
+ end
131
+
132
+ connect(options)
133
+ if !options[:group].nil?
134
+ group = find_group_by_name(options[:group])
135
135
  if !group.nil?
136
- params[:groupId] = group['id']
136
+ options[:groupId] = group['id']
137
137
  else
138
- puts "\nGroup #{params[:group]} not found!"
138
+ puts "\nGroup #{options[:group]} not found!"
139
139
  exit 1
140
140
  end
141
141
  end
@@ -147,15 +147,19 @@ class Morpheus::Cli::Clouds
147
147
  puts "Zone not found by name #{args[0]}"
148
148
  exit 1
149
149
  end
150
- @clouds_interface.destroy(zone_results['zones'][0]['id'])
151
- list([])
152
- rescue RestClient::Exception => e
153
- if e.response.code == 400 or e.response.code == 500
154
- error = JSON.parse(e.response.to_s)
155
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error,params)
150
+ cloud = zone_results['zones'][0]
151
+ unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the cloud #{cloud['name']}?")
152
+ exit
153
+ end
154
+ json_response = @clouds_interface.destroy(cloud['id'])
155
+ if options[:json]
156
+ print JSON.pretty_generate(json_response)
157
+ print "\n"
156
158
  else
157
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
159
+ list([])
158
160
  end
161
+ rescue RestClient::Exception => e
162
+ print_rest_exception(e, options)
159
163
  exit 1
160
164
  end
161
165
  end
@@ -163,10 +167,11 @@ class Morpheus::Cli::Clouds
163
167
  def list(args)
164
168
  options={}
165
169
  optparse = OptionParser.new do|opts|
170
+ opts.banner = "Usage: morpheus clouds list"
166
171
  opts.on( '-g', '--group GROUP', "Group Name" ) do |group|
167
172
  options[:group] = group
168
173
  end
169
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
174
+ build_common_options(opts, options, [:list, :json, :remote])
170
175
  end
171
176
  optparse.parse(args)
172
177
  connect(options)
@@ -199,7 +204,7 @@ class Morpheus::Cli::Clouds
199
204
  status = "#{red}#{cloud['status'] ? cloud['status'].upcase : 'N/A'}#{cloud['statusMessage'] ? "#{cyan} - #{cloud['statusMessage']}" : ''}#{cyan}"
200
205
  end
201
206
  {id: cloud['id'], name: cloud['name'], type: cloud_type_for_id(cloud['zoneTypeId']), location: cloud['location'], status: status}
202
- # print red, "= [#{server['id']}] #{server['name']} - #{server['computeServerType'] ? server['computeServerType']['name'] : 'unmanaged'} (#{server['status']}) Power: ", power_state, "\n"
207
+ # print cyan, "= [#{server['id']}] #{server['name']} - #{server['computeServerType'] ? server['computeServerType']['name'] : 'unmanaged'} (#{server['status']}) Power: ", power_state, "\n"
203
208
  end
204
209
  print cyan
205
210
  tp clouds_table, :id, :name, :type, :location, :status
@@ -229,12 +234,7 @@ class Morpheus::Cli::Clouds
229
234
  @clouds_interface.firewall_disable(zone_results['zones'][0]['id'])
230
235
  security_groups([args[0]])
231
236
  rescue RestClient::Exception => e
232
- if e.response.code == 400
233
- error = JSON.parse(e.response.to_s)
234
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
235
- else
236
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
237
- end
237
+ print_rest_exception(e, options)
238
238
  exit 1
239
239
  end
240
240
  end
@@ -253,12 +253,7 @@ class Morpheus::Cli::Clouds
253
253
  @clouds_interface.firewall_enable(zone_results['zones'][0]['id'])
254
254
  security_groups([args[0]])
255
255
  rescue RestClient::Exception => e
256
- if e.response.code == 400
257
- error = JSON.parse(e.response.to_s)
258
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
259
- else
260
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
261
- end
256
+ print_rest_exception(e, options)
262
257
  exit 1
263
258
  end
264
259
  end
@@ -291,12 +286,7 @@ class Morpheus::Cli::Clouds
291
286
  print reset,"\n\n"
292
287
 
293
288
  rescue RestClient::Exception => e
294
- if e.response.code == 400
295
- error = JSON.parse(e.response.to_s)
296
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
297
- else
298
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
299
- end
289
+ print_rest_exception(e, options)
300
290
  exit 1
301
291
  end
302
292
  end
@@ -344,12 +334,7 @@ EOF
344
334
  @clouds_interface.apply_security_groups(zone_results['zones'][0]['id'], options)
345
335
  security_groups([args[0]])
346
336
  rescue RestClient::Exception => e
347
- if e.response.code == 400
348
- error = JSON.parse(e.response.to_s)
349
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
350
- else
351
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
352
- end
337
+ print_rest_exception(e, options)
353
338
  exit 1
354
339
  end
355
340
  end
@@ -1,14 +1,12 @@
1
- # require 'yaml'
2
1
  require 'io/console'
3
2
  require 'rest_client'
4
- require 'term/ansicolor'
5
3
  require 'optparse'
6
4
  require 'table_print'
7
5
  require 'morpheus/cli/cli_command'
8
6
 
9
7
  class Morpheus::Cli::Deployments
10
8
  include Morpheus::Cli::CliCommand
11
- include Term::ANSIColor
9
+
12
10
  def initialize()
13
11
  @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
14
12
  end
@@ -24,7 +22,7 @@ class Morpheus::Cli::Deployments
24
22
  @api_client = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url)
25
23
  @deployments_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).deployments
26
24
  if @access_token.empty?
27
- print red,bold, "\nInvalid Credentials. Unable to acquire access token. Please verify your credentials and try again.\n\n",reset
25
+ print_red_alert "Invalid Credentials. Unable to acquire access token. Please verify your credentials and try again."
28
26
  exit 1
29
27
  end
30
28
  end
@@ -57,7 +55,7 @@ class Morpheus::Cli::Deployments
57
55
  options = {}
58
56
  optparse = OptionParser.new do|opts|
59
57
  opts.banner = "Usage: morpheus deployments list [-s] [-o] [-m]"
60
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
58
+ build_common_options(opts, options, [:list, :json, :remote])
61
59
  end
62
60
  optparse.parse(args)
63
61
  connect(options)
@@ -86,7 +84,7 @@ class Morpheus::Cli::Deployments
86
84
 
87
85
 
88
86
  rescue RestClient::Exception => e
89
- ::Morpheus::Cli::ErrorHandler.new.print_rest_exception(e)
87
+ print_rest_exception(e, options)
90
88
  exit 1
91
89
  end
92
90
  end
@@ -95,7 +93,7 @@ class Morpheus::Cli::Deployments
95
93
  options = {}
96
94
  optparse = OptionParser.new do|opts|
97
95
  opts.banner = "Usage: morpheus deployments versions [deployment] [-s] [-o] [-m]"
98
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
96
+ build_common_options(opts, options, [:list, :json, :remote])
99
97
  end
100
98
  optparse.parse(args)
101
99
  if args.count < 1
@@ -130,7 +128,7 @@ class Morpheus::Cli::Deployments
130
128
  print reset,"\n\n"
131
129
  end
132
130
  rescue RestClient::Exception => e
133
- ::Morpheus::Cli::ErrorHandler.new.print_rest_exception(e)
131
+ print_rest_exception(e, options)
134
132
  exit 1
135
133
  end
136
134
  end
@@ -141,7 +139,7 @@ class Morpheus::Cli::Deployments
141
139
  account_name = nil
142
140
  optparse = OptionParser.new do|opts|
143
141
  opts.banner = "Usage: morpheus deployments update [deployment] [options]"
144
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
142
+ build_common_options(opts, options, [:options, :json, :remote])
145
143
  end
146
144
  if args.count < 1
147
145
  puts "\n#{optparse.banner}\n\n"
@@ -185,12 +183,7 @@ class Morpheus::Cli::Deployments
185
183
  print "\n", cyan, "Deployment #{response['deployment']['name']} updated", reset, "\n\n"
186
184
  end
187
185
  rescue RestClient::Exception => e
188
- if e.response.code == 400
189
- error = JSON.parse(e.response.to_s)
190
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error)
191
- else
192
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
193
- end
186
+ print_rest_exception(e, options)
194
187
  exit 1
195
188
  end
196
189
  end
@@ -203,7 +196,7 @@ class Morpheus::Cli::Deployments
203
196
  opts.on( '-d', '--description DESCRIPTION', "Description" ) do |val|
204
197
  options[:description] = val
205
198
  end
206
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
199
+ build_common_options(opts, options, [:options, :json, :remote])
207
200
  end
208
201
  if args.count < 1
209
202
  puts "\n#{optparse.banner}\n\n"
@@ -221,12 +214,7 @@ class Morpheus::Cli::Deployments
221
214
  print "\n", cyan, "Deployment #{json_response['deployment']['name']} created successfully", reset, "\n\n"
222
215
  end
223
216
  rescue RestClient::Exception => e
224
- if e.response.code == 400
225
- error = JSON.parse(e.response.to_s)
226
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error,options)
227
- else
228
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
229
- end
217
+ print_rest_exception(e, options)
230
218
  exit 1
231
219
  end
232
220
  end
@@ -236,7 +224,7 @@ class Morpheus::Cli::Deployments
236
224
  options = {}
237
225
  optparse = OptionParser.new do|opts|
238
226
  opts.banner = "Usage: morpheus deployments remove [deployment]"
239
- Morpheus::Cli::CliCommand.genericOptions(opts,options)
227
+ build_common_options(opts, options, [:auto_confirm, :json, :remote])
240
228
  end
241
229
  if args.count < 1
242
230
  puts "\n#{optparse.banner}\n\n"
@@ -247,7 +235,9 @@ class Morpheus::Cli::Deployments
247
235
  begin
248
236
  deployment = find_deployment_by_name_or_code_or_id(deployment_name)
249
237
  exit 1 if deployment.nil?
250
- exit unless Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the deployment #{deployment['name']}?")
238
+ unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the deployment #{deployment['name']}?")
239
+ exit
240
+ end
251
241
  json_response = @deployments_interface.destroy(deployment['id'])
252
242
  if options[:json]
253
243
  print JSON.pretty_generate(json_response)
@@ -255,12 +245,7 @@ class Morpheus::Cli::Deployments
255
245
  print "\n", cyan, "Deployment #{deployment['name']} removed", reset, "\n\n"
256
246
  end
257
247
  rescue RestClient::Exception => e
258
- if e.response.code == 400
259
- error = JSON.parse(e.response.to_s)
260
- ::Morpheus::Cli::ErrorHandler.new.print_errors(error,options)
261
- else
262
- puts "Error Communicating with the Appliance. Please try again later. #{e}"
263
- end
248
+ print_rest_exception(e, options)
264
249
  exit 1
265
250
  end
266
251
  end
@@ -278,7 +263,7 @@ private
278
263
  result = results['deployment']
279
264
  end
280
265
  if result.nil?
281
- print red,bold, "\nDeployment not found by '#{val}'\n\n",reset
266
+ print_red_alert "Deployment not found by '#{val}'"
282
267
  return nil
283
268
  end
284
269
  return result
@@ -295,7 +280,7 @@ private
295
280
  result = results['deploymentType']
296
281
  end
297
282
  if result.nil?
298
- print red,bold, "\nDeployment Type not found by '#{val}'\n\n",reset
283
+ print_red_alert "Deployment Type not found by '#{val}'"
299
284
  return nil
300
285
  end
301
286
  return result
@@ -307,4 +292,4 @@ private
307
292
  {'fieldName' => 'description', 'fieldLabel' => 'Description', 'type' => 'text', 'required' => false, 'displayOrder' => 1}
308
293
  ]
309
294
  end
310
- end
295
+ end