aly 0.2.0 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a67b93ee1a1850b5f9af5afaffbd14d0d989f2394571f09c7a5d22382a128535
4
- data.tar.gz: 837c13099835afd7b34f2e7db2143fb96ad1c208083ba84ee2bda0fd15eb1ed7
3
+ metadata.gz: 31c380fbca73a1136b7c8dea73e13ddd28f03a8e6e3a9a395bd55d225215ee56
4
+ data.tar.gz: b320bcbb2b06fadd45f1ba005526fba07657287dbdf81e7ba48c50c3e4d24723
5
5
  SHA512:
6
- metadata.gz: 480f9262bdc049a8b6028fd3cbaca0b3ca7e6be60506464be6a51e65cb227add6e74447d43ded3bccb8870294c8874f0736522c2ed0ae9bae243c50e09d417c5
7
- data.tar.gz: 93bd2d071c76d4eb30552e7512e061e583906470debe1cd1b59d9a4ee70f1bc3a1397099b33bf19a9fc443fe297624771c405492ad6981fee56847f0d398875a
6
+ metadata.gz: 3ea21f6de6ea31ded361e64a40b97f7f48fe1e8652994effebbd99d1b380c1b8a08d11519cdb4dd2d58196f66fd24adde2cc5d4d2069367809c8e7766cab4906
7
+ data.tar.gz: 1a5f4e03792bded3c18cb798d03c574a35f96bda022c36265f0ff281cd7d52f8fe3edd987dbc36826768272f824b20dd42b320da63e30fa576b4a7032b4f8034
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aly (0.2.0)
4
+ aly (0.2.1)
5
5
  terminal-table (~> 1.8.0)
6
6
  thor (~> 0.20.0)
7
7
 
data/lib/aly/app.rb CHANGED
@@ -22,11 +22,11 @@ module Aly
22
22
  end
23
23
 
24
24
  def ecs(*args, **options)
25
- raw_out = exec('ecs', 'DescribeInstances', '--pager')
25
+ raw_out = exec('ecs', 'DescribeInstances', '--pager', **options)
26
26
  selected = raw_out['Instances']['Instance'].each do |item|
27
- item['PrivateIP'] = (item['NetworkInterfaces']['NetworkInterface'] || []).map { |ni| ni['PrimaryIpAddress'] }.join(', ')
27
+ item['PrivateIP'] = (item['NetworkInterfaces']['NetworkInterface'] || []).map { |ni| ni['PrimaryIpAddress'] }.join(',')
28
28
  item['PublicIP'] = item['EipAddress']['IpAddress'] || ''
29
- item['PublicIP'] = item['PublicIpAddress']['IpAddress'].join(', ') if item['PublicIP'] == ''
29
+ item['PublicIP'] = item['PublicIpAddress']['IpAddress'].join(',') if item['PublicIP'] == ''
30
30
  end
31
31
 
32
32
  if query = args.first&.split(',')
@@ -54,7 +54,7 @@ module Aly
54
54
 
55
55
  def eip(*args, **options)
56
56
  puts 'EIPs:'
57
- raw_out = exec('vpc', 'DescribeEipAddresses', '--PageSize=100')
57
+ raw_out = exec('vpc', 'DescribeEipAddresses', '--PageSize=100', **options)
58
58
  selected = raw_out['EipAddresses']['EipAddress']
59
59
 
60
60
  if query = args.first&.split(',')
@@ -66,7 +66,7 @@ module Aly
66
66
  if options['detail']
67
67
  puts JSON.pretty_generate(selected)
68
68
  else
69
- net_intefraces = exec('ecs', 'DescribeNetworkInterfaces', '--pager')['NetworkInterfaceSets']['NetworkInterfaceSet'].each_with_object({}) do |item, result|
69
+ net_intefraces = exec('ecs', 'DescribeNetworkInterfaces', '--pager', **options)['NetworkInterfaceSets']['NetworkInterfaceSet'].each_with_object({}) do |item, result|
70
70
  result[item['NetworkInterfaceId']] = item
71
71
  end
72
72
  selected = selected.map do |row|
@@ -91,10 +91,10 @@ module Aly
91
91
  end
92
92
 
93
93
  def slb(*args, **options)
94
- raw_out = exec('slb', 'DescribeLoadBalancers', '--pager')
94
+ raw_out = exec('slb', 'DescribeLoadBalancers', '--pager', **options)
95
95
  selected = raw_out['LoadBalancers']['LoadBalancer']
96
96
 
97
- listeners = exec('slb', 'DescribeLoadBalancerListeners', '--pager', 'path=Listeners')['Listeners'].each_with_object({}) do |listener, result|
97
+ listeners = exec('slb', 'DescribeLoadBalancerListeners', '--pager', 'path=Listeners', **options)['Listeners'].each_with_object({}) do |listener, result|
98
98
  instance_id = listener['LoadBalancerId']
99
99
  result[instance_id] ||= []
100
100
  result[instance_id] << listener
@@ -112,11 +112,11 @@ module Aly
112
112
 
113
113
  if options['detail']
114
114
  selected.each do |row|
115
- described_load_balancer_attributes = exec('slb', 'DescribeLoadBalancerAttribute', "--LoadBalancerId=#{row['LoadBalancerId']}")
115
+ described_load_balancer_attributes = exec('slb', 'DescribeLoadBalancerAttribute', "--LoadBalancerId=#{row['LoadBalancerId']}", **options)
116
116
  row['BackendServers'] = described_load_balancer_attributes['BackendServers']['BackendServer']
117
117
 
118
118
  row['Listeners'].select { |e| e['VServerGroupId'] }.each do |listener|
119
- vserver_group = exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{listener['VServerGroupId']}")
119
+ vserver_group = exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{listener['VServerGroupId']}", **options)
120
120
  listener['VServerGroup'] = vserver_group
121
121
  end
122
122
  end
@@ -155,27 +155,32 @@ module Aly
155
155
  @ecs.any? { |item| item['AllIPs'].include?(host) }
156
156
  end
157
157
 
158
- def show_slb(host)
159
- @listeners ||= exec('slb', 'DescribeLoadBalancerListeners', '--pager', 'path=Listeners')['Listeners']
158
+ def show_slb(host, **options)
159
+ @listeners ||= exec('slb', 'DescribeLoadBalancerListeners', '--pager', 'path=Listeners', **options)['Listeners']
160
160
  lb = @slb.find { |e| e['Address'] == host }
161
161
  listeners = @listeners.select { |e| e['LoadBalancerId'] == lb['LoadBalancerId'] }
162
- background_servers = exec('slb', 'DescribeLoadBalancerAttribute', "--LoadBalancerId=#{lb['LoadBalancerId']}")['BackendServers']['BackendServer']
162
+ background_servers = exec('slb', 'DescribeLoadBalancerAttribute', "--LoadBalancerId=#{lb['LoadBalancerId']}", **options)['BackendServers']['BackendServer']
163
163
 
164
164
  puts 'LoadBalancers:'
165
165
  puts([{
166
166
  Id: lb['LoadBalancerId'],
167
167
  Name: lb['LoadBalancerName'],
168
168
  Address: lb['Address'],
169
- Listeners: listeners.size,
170
- BackendServers: background_servers.map { |e| e['ServerId'] }.join(', ')
169
+ Listeners: listeners.size
171
170
  }].table.to_s)
172
171
  puts
173
172
 
173
+ if background_servers && background_servers.size > 0
174
+ puts 'Default Backend Servers:'
175
+ puts background_servers.table.to_s
176
+ puts
177
+ end
178
+
174
179
  listeners_info = listeners.map do |listener|
175
180
  {
176
181
  Port: listener['ListenerPort'],
177
182
  Protocol: listener['ListenerProtocol'],
178
- Status: listener['ListenerStatus'],
183
+ Status: listener['Status'],
179
184
  BackendServerPort: listener['BackendServerPort'],
180
185
  ForwardPort: listener.dig('HTTPListenerConfig', 'ForwardPort'),
181
186
  VServerGroup: listener['VServerGroupId']
@@ -188,11 +193,11 @@ module Aly
188
193
 
189
194
  listeners_info.each do |listener|
190
195
  if listener[:VServerGroup]
191
- vserver_group = exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{listener[:VServerGroup]}")["BackendServers"]["BackendServer"]
196
+ vserver_group = exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{listener[:VServerGroup]}", **options)["BackendServers"]["BackendServer"]
192
197
  puts "VServerGroup #{listener[:VServerGroup]}:"
193
198
  puts(vserver_group.map { |e|
194
199
  {
195
- EcInstanceId: e['ServerId'],
200
+ EcsInstanceId: e['ServerId'],
196
201
  Port: e['Port'],
197
202
  Weight: e['Weight'],
198
203
  Type: e['Type']
@@ -205,7 +210,7 @@ module Aly
205
210
  ecs_ids = background_servers.map { |e| e['ServerId'] }
206
211
  ecs_ids += listeners_info.flat_map { |e|
207
212
  if e[:VServerGroup]
208
- exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{e[:VServerGroup]}")["BackendServers"]["BackendServer"].map { |e| e['ServerId'] }
213
+ exec('slb', 'DescribeVServerGroupAttribute', "--VServerGroupId=#{e[:VServerGroup]}", **options)["BackendServers"]["BackendServer"].map { |e| e['ServerId'] }
209
214
  else
210
215
  []
211
216
  end
@@ -220,8 +225,8 @@ module Aly
220
225
  {
221
226
  Id: row['InstanceId'],
222
227
  Name: row['InstanceName'],
223
- PrivateIP: row['PrivateIP'].join(', '),
224
- PublicIP: row['PublicIP'].join(', '),
228
+ PrivateIP: row['PrivateIP'].join(','),
229
+ PublicIP: row['PublicIP'].join(','),
225
230
  CPU: row['Cpu'],
226
231
  RAM: "#{row['Memory'] / 1024.0} GB"
227
232
  }
@@ -234,8 +239,8 @@ module Aly
234
239
  {
235
240
  Id: row['InstanceId'],
236
241
  Name: row['InstanceName'],
237
- PrivateIP: row['PrivateIP'].join(', '),
238
- PublicIP: row['PublicIP'].join(', '),
242
+ PrivateIP: row['PrivateIP'].join(','),
243
+ PublicIP: row['PublicIP'].join(','),
239
244
  CPU: row['Cpu'],
240
245
  RAM: "#{row['Memory'] / 1024.0} GB"
241
246
  }
@@ -249,11 +254,11 @@ module Aly
249
254
  end
250
255
 
251
256
  def show(*args, **options)
252
- @slb ||= exec('slb', 'DescribeLoadBalancers', '--pager')['LoadBalancers']['LoadBalancer']
257
+ @slb ||= exec('slb', 'DescribeLoadBalancers', '--pager', **options)['LoadBalancers']['LoadBalancer']
253
258
 
254
- @eip ||= exec('vpc', 'DescribeEipAddresses', '--PageSize=100')['EipAddresses']['EipAddress']
259
+ @eip ||= exec('vpc', 'DescribeEipAddresses', '--PageSize=100', **options)['EipAddresses']['EipAddress']
255
260
  unless @ecs
256
- @ecs = exec('ecs', 'DescribeInstances', '--pager')['Instances']['Instance']
261
+ @ecs = exec('ecs', 'DescribeInstances', '--pager', **options)['Instances']['Instance']
257
262
  @ecs.each do |item|
258
263
  item['PrivateIP'] = (item['NetworkInterfaces']['NetworkInterface'] || []).map { |ni| ni['PrimaryIpAddress'] }
259
264
  item['PublicIP'] = []
@@ -273,7 +278,7 @@ module Aly
273
278
  puts
274
279
 
275
280
  if slb_contains_host?(host)
276
- show_slb(host)
281
+ show_slb(host, **options)
277
282
  elsif ecs_contains_host?(host)
278
283
  show_ecs(host)
279
284
  elsif eip_contains_host?(host)
@@ -283,8 +288,10 @@ module Aly
283
288
  end
284
289
  end
285
290
 
286
- def exec(command, sub_command, *args)
287
- JSON.parse(`aliyun #{command} #{sub_command} #{args.join(' ')}`)
291
+ def exec(command, sub_command, *args, **options)
292
+ command = "aliyun #{command} #{sub_command} #{args.join(' ')}"
293
+ command += " -p #{options['profile']}" if options['profile']
294
+ JSON.parse(`#{command}`)
288
295
  end
289
296
  end
290
297
  end
data/lib/aly/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aly
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang