morpheus-cli 5.3.2 → 5.3.2.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/accounts_interface.rb +4 -30
- data/lib/morpheus/api/api_client.rb +12 -0
- data/lib/morpheus/api/load_balancer_pools_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_types_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +9 -0
- data/lib/morpheus/api/load_balancers_interface.rb +4 -53
- data/lib/morpheus/api/network_routers_interface.rb +56 -0
- data/lib/morpheus/api/secondary_read_interface.rb +25 -0
- data/lib/morpheus/api/secondary_rest_interface.rb +42 -0
- data/lib/morpheus/cli.rb +1 -0
- data/lib/morpheus/cli/cli_command.rb +9 -9
- data/lib/morpheus/cli/instances.rb +33 -33
- data/lib/morpheus/cli/load_balancer_types.rb +37 -0
- data/lib/morpheus/cli/load_balancers.rb +149 -314
- data/lib/morpheus/cli/log_settings_command.rb +7 -3
- data/lib/morpheus/cli/mixins/load_balancers_helper.rb +156 -0
- data/lib/morpheus/cli/mixins/print_helper.rb +11 -0
- data/lib/morpheus/cli/mixins/rest_command.rb +657 -0
- data/lib/morpheus/cli/network_routers_command.rb +1183 -185
- data/lib/morpheus/cli/networks_command.rb +194 -101
- data/lib/morpheus/cli/option_types.rb +29 -39
- data/lib/morpheus/cli/tenants_command.rb +18 -20
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/ext/string.rb +41 -0
- data/lib/morpheus/formatters.rb +4 -0
- metadata +11 -2
@@ -0,0 +1,37 @@
|
|
1
|
+
# require 'yaml'
|
2
|
+
require 'io/console'
|
3
|
+
require 'rest_client'
|
4
|
+
require 'optparse'
|
5
|
+
require 'morpheus/cli/cli_command'
|
6
|
+
|
7
|
+
class Morpheus::Cli::LoadBalancerTypes
|
8
|
+
include Morpheus::Cli::CliCommand
|
9
|
+
include Morpheus::Cli::RestCommand
|
10
|
+
include Morpheus::Cli::LoadBalancersHelper
|
11
|
+
|
12
|
+
set_command_name :'load-balancer-types'
|
13
|
+
register_subcommands :list, :get
|
14
|
+
|
15
|
+
# register_interfaces :load_balancer_types
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def load_balancer_type_column_definitions
|
20
|
+
{
|
21
|
+
"ID" => 'id',
|
22
|
+
"Name" => 'name',
|
23
|
+
"Code" => 'code'
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def load_balancer_type_list_column_definitions
|
28
|
+
load_balancer_type_column_definitions
|
29
|
+
end
|
30
|
+
|
31
|
+
# overridden to support name or code
|
32
|
+
def find_load_balancer_type_by_name_or_id(name)
|
33
|
+
load_balancer_type_for_name_or_id(name)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -1,161 +1,106 @@
|
|
1
1
|
# require 'yaml'
|
2
|
-
require 'io/console'
|
3
|
-
require 'rest_client'
|
4
|
-
require 'optparse'
|
5
2
|
require 'morpheus/cli/cli_command'
|
6
3
|
|
7
4
|
class Morpheus::Cli::LoadBalancers
|
8
5
|
include Morpheus::Cli::CliCommand
|
6
|
+
include Morpheus::Cli::RestCommand
|
7
|
+
include Morpheus::Cli::LoadBalancersHelper
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def initialize()
|
14
|
-
# @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
|
15
|
-
end
|
16
|
-
|
17
|
-
def connect(opts)
|
18
|
-
@api_client = establish_remote_appliance_connection(opts)
|
19
|
-
@load_balancers_interface = @api_client.load_balancers
|
20
|
-
end
|
9
|
+
set_command_name :'load-balancers'
|
10
|
+
register_subcommands :list, :get, :add, :update, :remove
|
21
11
|
|
12
|
+
# deprecated the `load-balancers types` command in 5.3.2, it moved to `load-balancer-types list`
|
13
|
+
register_subcommands :types
|
14
|
+
set_subcommands_hidden :types
|
22
15
|
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
# RestCommand settings
|
17
|
+
register_interfaces :load_balancers, :load_balancer_types
|
18
|
+
set_rest_has_type true
|
19
|
+
# set_rest_type :load_balancer_types
|
26
20
|
|
27
|
-
def
|
28
|
-
options
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
if options[:json]
|
47
|
-
puts as_json(json_response, options, "loadBalancers")
|
48
|
-
return 0
|
49
|
-
elsif options[:csv]
|
50
|
-
puts records_as_csv(json_response["loadBalancers"], options)
|
51
|
-
return 0
|
52
|
-
elsif options[:yaml]
|
53
|
-
puts as_yaml(json_response, options, "loadBalancers")
|
54
|
-
return 0
|
55
|
-
else
|
56
|
-
lbs = json_response['loadBalancers']
|
57
|
-
print_h1 "Morpheus Load Balancers"
|
58
|
-
if lbs.empty?
|
59
|
-
print cyan,"No load balancers found.",reset,"\n"
|
60
|
-
else
|
61
|
-
columns = [
|
62
|
-
{"ID" => 'id'},
|
63
|
-
{"Name" => 'name'},
|
64
|
-
{"Type" => lambda {|it| it['type'] ? it['type']['name'] : '' } },
|
65
|
-
{"Cloud" => lambda {|it| it['cloud'] ? it['cloud']['name'] : '' } },
|
66
|
-
{"Host" => lambda {|it| it['host'] } },
|
67
|
-
]
|
68
|
-
print as_pretty_table(lbs, columns, options)
|
69
|
-
end
|
70
|
-
print reset,"\n"
|
71
|
-
return 0
|
21
|
+
def render_response_for_get(json_response, options)
|
22
|
+
render_response(json_response, options, rest_object_key) do
|
23
|
+
record = json_response[rest_object_key]
|
24
|
+
print_h1 rest_label, [], options
|
25
|
+
print cyan
|
26
|
+
print_description_list(rest_column_definitions, record, options)
|
27
|
+
# show LB Ports
|
28
|
+
ports = record['ports']
|
29
|
+
if ports && ports.size > 0
|
30
|
+
print_h2 "LB Ports", options
|
31
|
+
columns = [
|
32
|
+
{"ID" => 'id'},
|
33
|
+
{"Name" => 'name'},
|
34
|
+
#{"Description" => 'description'},
|
35
|
+
{"Port" => lambda {|it| it['port'] } },
|
36
|
+
{"Protocol" => lambda {|it| it['proxyProtocol'] } },
|
37
|
+
{"SSL" => lambda {|it| it['sslEnabled'] ? "Yes (#{it['sslCert'] ? it['sslCert']['name'] : 'none'})" : "No" } },
|
38
|
+
]
|
39
|
+
print as_pretty_table(ports, columns, options)
|
72
40
|
end
|
73
|
-
|
74
|
-
print_rest_exception(e, options)
|
75
|
-
return 1
|
41
|
+
print reset,"\n"
|
76
42
|
end
|
77
43
|
end
|
78
44
|
|
79
|
-
|
45
|
+
=begin
|
46
|
+
|
47
|
+
# now using RestCommand
|
48
|
+
|
49
|
+
def add(args)
|
50
|
+
lb_type_name = nil
|
80
51
|
options = {}
|
81
52
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
82
|
-
opts.banner = subcommand_usage("[name]")
|
83
|
-
|
53
|
+
opts.banner = subcommand_usage("[name] -t LB_TYPE")
|
54
|
+
opts.on( '-t', '--type CODE', "Load Balancer Type" ) do |val|
|
55
|
+
lb_type_name = val
|
56
|
+
end
|
57
|
+
#build_option_type_options(opts, options, add_load_balancer_option_types)
|
58
|
+
build_standard_add_options(opts, options)
|
84
59
|
end
|
85
60
|
optparse.parse!(args)
|
86
|
-
|
61
|
+
lb_name = args[0]
|
62
|
+
# verify_args!(args:args, optparse:optparse, min:0, max: 1)
|
63
|
+
verify_args!(args:args, optparse:optparse, min:1, max: 1)
|
64
|
+
if lb_type_name.nil?
|
65
|
+
raise_command_error "Load Balancer Type is required.\n#{optparse}"
|
87
66
|
puts optparse
|
88
67
|
exit 1
|
89
68
|
end
|
90
|
-
lb_name = args[0]
|
91
69
|
connect(options)
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
if lb_name.to_s =~ /\A\d{1,}\Z/
|
96
|
-
print_dry_run @load_balancers_interface.dry.get(lb_name.to_i)
|
97
|
-
else
|
98
|
-
print_dry_run @load_balancers_interface.dry.list({name:lb_name})
|
99
|
-
end
|
100
|
-
return
|
101
|
-
end
|
102
|
-
lb = find_lb_by_name_or_id(lb_name)
|
103
|
-
exit 1 if lb.nil?
|
104
|
-
# refetch
|
105
|
-
json_response = @load_balancers_interface.get(lb['id'])
|
106
|
-
lb_type = load_balancer_type_for_name_or_id(lb['type']['code'])
|
107
|
-
#puts "LB TYPE: #{lb_type}"
|
108
|
-
if options[:json]
|
109
|
-
puts JSON.pretty_generate({loadBalancer: lb})
|
110
|
-
puts as_json(json_response, options, "loadBalancer")
|
111
|
-
return 0
|
112
|
-
elsif options[:csv]
|
113
|
-
puts records_as_csv(json_response["loadBalancer"], options)
|
114
|
-
return 0
|
115
|
-
elsif options[:yaml]
|
116
|
-
puts as_yaml(json_response, options, "loadBalancer")
|
117
|
-
return 0
|
118
|
-
else
|
119
|
-
print_h1 "Load Balancer Details"
|
120
|
-
description_cols = {
|
121
|
-
"ID" => 'id',
|
122
|
-
"Name" => 'name',
|
123
|
-
"Description" => 'description',
|
124
|
-
"Type" => lambda {|it| it['type'] ? it['type']['name'] : '' },
|
125
|
-
"Cloud" => lambda {|it| it['cloud'] ? it['cloud']['name'] : '' },
|
126
|
-
"Visibility" => 'visibility',
|
127
|
-
"IP" => 'ip',
|
128
|
-
"Host" => 'host',
|
129
|
-
"Port" => 'port',
|
130
|
-
"Username" => 'username',
|
131
|
-
# "SSL Enabled" => lambda {|it| format_boolean it['sslEnabled'] },
|
132
|
-
# "SSL Cert" => lambda {|it| it['sslCert'] ? it['sslCert']['name'] : '' },
|
133
|
-
# "SSL" => lambda {|it| it['sslEnabled'] ? "Yes (#{it['sslCert'] ? it['sslCert']['name'] : 'none'})" : "No" },
|
134
|
-
"Created" => lambda {|it| format_local_dt(it['dateCreated']) },
|
135
|
-
"Updated" => lambda {|it| format_local_dt(it['lastUpdated']) }
|
136
|
-
}
|
137
|
-
print_description_list(description_cols, lb)
|
138
|
-
|
139
|
-
|
140
|
-
if lb['ports'] && lb['ports'].size > 0
|
141
|
-
print_h2 "LB Ports"
|
142
|
-
columns = [
|
143
|
-
{"ID" => 'id'},
|
144
|
-
{"Name" => 'name'},
|
145
|
-
#{"Description" => 'description'},
|
146
|
-
{"Port" => lambda {|it| it['port'] } },
|
147
|
-
{"Protocol" => lambda {|it| it['proxyProtocol'] } },
|
148
|
-
{"SSL" => lambda {|it| it['sslEnabled'] ? "Yes (#{it['sslCert'] ? it['sslCert']['name'] : 'none'})" : "No" } },
|
149
|
-
]
|
150
|
-
print as_pretty_table(lb['ports'], columns, options)
|
151
|
-
end
|
152
|
-
print reset,"\n"
|
153
|
-
return 0
|
154
|
-
end
|
155
|
-
rescue RestClient::Exception => e
|
156
|
-
print_rest_exception(e, options)
|
70
|
+
lb_type = load_balancer_type_for_name_or_id(lb_type_name)
|
71
|
+
if lb_type.nil?
|
72
|
+
print_red_alert "LB Type #{lb_type_name} not found!"
|
157
73
|
exit 1
|
158
74
|
end
|
75
|
+
passed_options = parse_passed_options(options)
|
76
|
+
payload = {}
|
77
|
+
if options[:payload]
|
78
|
+
payload = options[:payload]
|
79
|
+
payload.deep_merge!({load_balancer_object_key => passed_options})
|
80
|
+
else
|
81
|
+
load_balancer_payload = {'name' => lb_name, 'type' => {'code' => lb_type['code'], 'id' => lb_type['id']}}
|
82
|
+
load_balancer_payload.deep_merge!({load_balancer_object_key => passed_options})
|
83
|
+
# options by type
|
84
|
+
my_option_types = lb_type['optionTypes']
|
85
|
+
if my_option_types && !my_option_types.empty?
|
86
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt(my_option_types, options[:options], @api_client, options[:params])
|
87
|
+
v_prompt.deep_compact!
|
88
|
+
load_balancer_payload.deep_merge!(v_prompt)
|
89
|
+
end
|
90
|
+
payload[load_balancer_object_key] = load_balancer_payload
|
91
|
+
end
|
92
|
+
@load_balancers_interface.setopts(options)
|
93
|
+
if options[:dry_run]
|
94
|
+
print_dry_run @load_balancers_interface.dry.create(payload)
|
95
|
+
return
|
96
|
+
end
|
97
|
+
json_response = @load_balancers_interface.create(payload)
|
98
|
+
render_response(json_response, options, load_balancer_object_key) do
|
99
|
+
load_balancer = json_response[load_balancer_object_key]
|
100
|
+
print_green_success "Added load balancer #{load_balancer['name']}"
|
101
|
+
return _get(load_balancer["id"], {}, options)
|
102
|
+
end
|
103
|
+
return 0, nil
|
159
104
|
end
|
160
105
|
|
161
106
|
def update(args)
|
@@ -163,8 +108,8 @@ class Morpheus::Cli::LoadBalancers
|
|
163
108
|
options = {}
|
164
109
|
account_name = nil
|
165
110
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
166
|
-
opts.banner = subcommand_usage("[
|
167
|
-
|
111
|
+
opts.banner = subcommand_usage("[lb] [options]")
|
112
|
+
build_standard_update_options(opts, options)
|
168
113
|
end
|
169
114
|
optparse.parse!(args)
|
170
115
|
if args.count < 1
|
@@ -172,141 +117,47 @@ class Morpheus::Cli::LoadBalancers
|
|
172
117
|
exit 1
|
173
118
|
end
|
174
119
|
connect(options)
|
175
|
-
begin
|
176
|
-
|
177
|
-
lb = find_lb_by_name_or_id(lb_name)
|
178
|
-
exit 1 if lb.nil?
|
179
|
-
lb_type = load_balancer_type_for_name_or_id(lb['type']['code'])
|
180
|
-
|
181
|
-
#params = Morpheus::Cli::OptionTypes.prompt(add_load_balancer_option_types, options[:options], @api_client, options[:params]) # options[:params] is mysterious
|
182
|
-
params = options[:options] || {}
|
183
|
-
|
184
|
-
if params.empty?
|
185
|
-
puts optparse
|
186
|
-
option_lines = update_task_option_types(lb_type).collect {|it| "\t-O #{it['fieldContext'] ? (it['fieldContext'] + '.') : ''}#{it['fieldName']}=\"value\"" }.join("\n")
|
187
|
-
puts "\nAvailable Options:\n#{option_lines}\n\n"
|
188
|
-
exit 1
|
189
|
-
end
|
190
120
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
if params['taskOptions']
|
201
|
-
task_payload['taskOptions'].merge!(params['taskOptions'])
|
202
|
-
end
|
203
|
-
payload = {task: task_payload}
|
204
|
-
@load_balancers_interface.setopts(options)
|
205
|
-
if options[:dry_run]
|
206
|
-
print_dry_run @load_balancers_interface.dry.update(task['id'], payload)
|
207
|
-
return
|
121
|
+
passed_options = parse_passed_options(options)
|
122
|
+
payload = nil
|
123
|
+
if options[:payload]
|
124
|
+
payload = options[:payload]
|
125
|
+
payload.deep_merge!({load_balancer_object_key => passed_options}) unless passed_options.empty?
|
126
|
+
else
|
127
|
+
load_balancer_payload = passed_options
|
128
|
+
if tenants_list
|
129
|
+
load_balancer_payload['accounts'] = tenants_list
|
208
130
|
end
|
209
|
-
|
210
|
-
if options[:
|
211
|
-
|
212
|
-
if !response['success']
|
213
|
-
exit 1
|
214
|
-
end
|
131
|
+
# metadata tags
|
132
|
+
if options[:tags]
|
133
|
+
load_balancer_payload['tags'] = parse_metadata(options[:tags])
|
215
134
|
else
|
216
|
-
|
135
|
+
# tags = prompt_metadata(options)
|
136
|
+
# payload[load_balancer_object_key]['tags'] = tags of tags
|
217
137
|
end
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
|
225
|
-
def lb_types(args)
|
226
|
-
options = {}
|
227
|
-
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
228
|
-
opts.banner = subcommand_usage()
|
229
|
-
build_common_options(opts, options, [:json, :dry_run, :remote])
|
230
|
-
end
|
231
|
-
optparse.parse!(args)
|
232
|
-
connect(options)
|
233
|
-
begin
|
234
|
-
@load_balancers_interface.setopts(options)
|
235
|
-
if options[:dry_run]
|
236
|
-
print_dry_run @load_balancers_interface.dry.load_balancer_types()
|
237
|
-
return
|
138
|
+
# metadata tags
|
139
|
+
if options[:add_tags]
|
140
|
+
load_balancer_payload['addTags'] = parse_metadata(options[:add_tags])
|
238
141
|
end
|
239
|
-
|
240
|
-
|
241
|
-
print JSON.pretty_generate(json_response)
|
242
|
-
else
|
243
|
-
lb_types = json_response['loadBalancerTypes']
|
244
|
-
print_h1 "Morpheus Load Balancer Types"
|
245
|
-
if lb_types.nil? || lb_types.empty?
|
246
|
-
print cyan,"No load balancer types found.",reset,"\n"
|
247
|
-
else
|
248
|
-
print cyan
|
249
|
-
lb_table_data = lb_types.collect do |lb_type|
|
250
|
-
{name: lb_type['name'], id: lb_type['id'], code: lb_type['code']}
|
251
|
-
end
|
252
|
-
print as_pretty_table(lb_table_data, [:id, :name, :code], options)
|
253
|
-
end
|
254
|
-
|
255
|
-
print reset,"\n"
|
142
|
+
if options[:remove_tags]
|
143
|
+
load_balancer_payload['removeTags'] = parse_metadata(options[:remove_tags])
|
256
144
|
end
|
257
|
-
|
258
|
-
|
259
|
-
exit 1
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
# JD: This is broken.. copied from tasks? should optionTypes exist?
|
264
|
-
def add(args)
|
265
|
-
lb_type_name = nil
|
266
|
-
options = {}
|
267
|
-
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
268
|
-
opts.banner = subcommand_usage("[name] -t LB_TYPE")
|
269
|
-
opts.on( '-t', '--type LB_TYPE', "Load Balancer Type" ) do |val|
|
270
|
-
lb_type_name = val
|
145
|
+
if load_balancer_payload.empty?
|
146
|
+
raise_command_error "Specify at least one option to update.\n#{optparse}"
|
271
147
|
end
|
272
|
-
|
273
|
-
end
|
274
|
-
optparse.parse!(args)
|
275
|
-
lb_name = args[0]
|
276
|
-
if args.count < 1
|
277
|
-
puts optparse
|
278
|
-
exit 1
|
148
|
+
payload = {'virtualImage' => load_balancer_payload}
|
279
149
|
end
|
280
|
-
|
281
|
-
|
282
|
-
|
150
|
+
@load_balancers_interface.setopts(options)
|
151
|
+
if options[:dry_run]
|
152
|
+
print_dry_run @load_balancers_interface.dry.update(load_balancer['id'], payload)
|
153
|
+
return
|
283
154
|
end
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
print_red_alert "LB Type #{lb_type_name} not found!"
|
289
|
-
exit 1
|
290
|
-
end
|
291
|
-
|
292
|
-
payload = {loadBalancer: {name: lb_name, type: {code: lb_type['code'], id: lb_type['id']}}}
|
293
|
-
# todo: The options available here are specific by type...
|
294
|
-
#input_options = Morpheus::Cli::OptionTypes.prompt(lb_type['optionTypes'],options[:options],@api_client, options[:params])
|
295
|
-
@load_balancers_interface.setopts(options)
|
296
|
-
if options[:dry_run]
|
297
|
-
print_dry_run @load_balancers_interface.dry.create(payload)
|
298
|
-
return
|
299
|
-
end
|
300
|
-
json_response = @load_balancers_interface.create(payload)
|
301
|
-
if options[:json]
|
302
|
-
print JSON.pretty_generate(json_response)
|
303
|
-
else
|
304
|
-
print "\n", cyan, "LB #{json_response['loadBalancer']['name']} created successfully", reset, "\n\n"
|
305
|
-
end
|
306
|
-
rescue RestClient::Exception => e
|
307
|
-
print_rest_exception(e, options)
|
308
|
-
exit 1
|
155
|
+
json_response = @load_balancers_interface.update(load_balancer['id'], payload)
|
156
|
+
render_response(json_response, options, 'virtualImage') do
|
157
|
+
print_green_success "Updated virtual image #{load_balancer['name']}"
|
158
|
+
_get(load_balancer["id"], {}, options)
|
309
159
|
end
|
160
|
+
return 0, nil
|
310
161
|
end
|
311
162
|
|
312
163
|
def remove(args)
|
@@ -323,7 +174,7 @@ class Morpheus::Cli::LoadBalancers
|
|
323
174
|
end
|
324
175
|
connect(options)
|
325
176
|
begin
|
326
|
-
lb =
|
177
|
+
lb = find_load_balancer_by_name_or_id(lb_name)
|
327
178
|
exit 1 if lb.nil?
|
328
179
|
unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the load balancer #{lb['name']}?")
|
329
180
|
exit
|
@@ -344,67 +195,51 @@ class Morpheus::Cli::LoadBalancers
|
|
344
195
|
exit 1
|
345
196
|
end
|
346
197
|
end
|
198
|
+
=end
|
347
199
|
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
if val.to_s =~ /\A\d{1,}\Z/
|
353
|
-
return find_lb_by_id(val)
|
354
|
-
else
|
355
|
-
return find_lb_by_name(val)
|
356
|
-
end
|
200
|
+
# deprecated, to be removed in the future.
|
201
|
+
def types(args)
|
202
|
+
print_error yellow,"[DEPRECATED] The command `load-balancers types` is deprecated and replaced by `load-balancer-types list`.",reset,"\n"
|
203
|
+
my_terminal.execute("load-balancer-types list #{args.join(' ')}")
|
357
204
|
end
|
358
205
|
|
359
|
-
|
360
|
-
begin
|
361
|
-
json_response = @load_balancers_interface.get(id.to_i)
|
362
|
-
return json_response['loadBalancer']
|
363
|
-
rescue RestClient::Exception => e
|
364
|
-
if e.response && e.response.code == 404
|
365
|
-
print_red_alert "Load Balancer not found by id #{id}"
|
366
|
-
else
|
367
|
-
raise e
|
368
|
-
end
|
369
|
-
end
|
370
|
-
end
|
206
|
+
protected
|
371
207
|
|
372
|
-
def
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
print reset,"\n\n"
|
381
|
-
return nil
|
382
|
-
else
|
383
|
-
return lbs[0]
|
384
|
-
end
|
208
|
+
def load_balancer_list_column_definitions()
|
209
|
+
{
|
210
|
+
"ID" => 'id',
|
211
|
+
"Name" => 'name',
|
212
|
+
"Type" => lambda {|it| it['type'] ? it['type']['name'] : '' },
|
213
|
+
"Cloud" => lambda {|it| it['cloud'] ? it['cloud']['name'] : '' },
|
214
|
+
"Host" => lambda {|it| it['host'] }
|
215
|
+
}
|
385
216
|
end
|
386
217
|
|
387
|
-
def
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
218
|
+
def load_balancer_column_definitions()
|
219
|
+
{
|
220
|
+
"ID" => 'id',
|
221
|
+
"Name" => 'name',
|
222
|
+
"Description" => 'description',
|
223
|
+
"Type" => lambda {|it| it['type'] ? it['type']['name'] : '' },
|
224
|
+
"Cloud" => lambda {|it| it['cloud'] ? it['cloud']['name'] : '' },
|
225
|
+
"Visibility" => 'visibility',
|
226
|
+
"IP" => 'ip',
|
227
|
+
"Host" => 'host',
|
228
|
+
"Port" => 'port',
|
229
|
+
"Username" => 'username',
|
230
|
+
# "SSL Enabled" => lambda {|it| format_boolean it['sslEnabled'] },
|
231
|
+
# "SSL Cert" => lambda {|it| it['sslCert'] ? it['sslCert']['name'] : '' },
|
232
|
+
# "SSL" => lambda {|it| it['sslEnabled'] ? "Yes (#{it['sslCert'] ? it['sslCert']['name'] : 'none'})" : "No" },
|
233
|
+
"Created" => lambda {|it| format_local_dt(it['dateCreated']) },
|
234
|
+
"Updated" => lambda {|it| format_local_dt(it['lastUpdated']) }
|
235
|
+
}
|
392
236
|
end
|
393
237
|
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
else
|
398
|
-
return load_balancer_type_for_name(val)
|
399
|
-
end
|
238
|
+
# overridden to work with name or code
|
239
|
+
def find_load_balancer_type_by_name_or_id(name)
|
240
|
+
load_balancer_type_for_name_or_id(name)
|
400
241
|
end
|
401
242
|
|
402
|
-
def load_balancer_type_for_id(id)
|
403
|
-
return get_available_load_balancer_types().find { |z| z['id'].to_i == id.to_i}
|
404
|
-
end
|
405
243
|
|
406
|
-
def load_balancer_type_for_name(name)
|
407
|
-
return get_available_load_balancer_types().find { |z| z['name'].downcase == name.downcase || z['code'].downcase == name.downcase}
|
408
|
-
end
|
409
244
|
|
410
245
|
end
|