vaws 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/vaws/aws/describer.rb +8 -2
- data/lib/vaws/aws/ecs_describer.rb +95 -22
- data/lib/vaws/handlers/describer.rb +5 -3
- data/lib/vaws/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca435519c8294b066a053a4bc36de39e8bd346bd9525c816078179d07b57739a
|
4
|
+
data.tar.gz: f6288d2518b0bdec627bf92a95ffc88b59546f08ef80c7fbbe94488d8177f1a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e05a075e2a9cbd643125f48f3af753d75237e75e43af04fb17bab6a020cb02b9347c15994870e351b69ce5dec53a6464d873f14ad43da6e08a2b063df0c1f999
|
7
|
+
data.tar.gz: e7480c918eb5fbeb6bceaa2311f7d9cc75947f63c0db22b4d27a0781f4ee35bb51d5b7eb4984f91cd0efffaeb38ebe15e2cb38cd3effba480cd7fd62b72c41e7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
vaws (0.8.
|
4
|
+
vaws (0.8.2)
|
5
5
|
aws-sdk-acm
|
6
6
|
aws-sdk-ec2
|
7
7
|
aws-sdk-ecs
|
@@ -60,7 +60,7 @@ GEM
|
|
60
60
|
terminal-table (1.8.0)
|
61
61
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
62
62
|
thor (0.20.3)
|
63
|
-
unicode-display_width (1.
|
63
|
+
unicode-display_width (1.7.0)
|
64
64
|
|
65
65
|
PLATFORMS
|
66
66
|
ruby
|
data/lib/vaws/aws/describer.rb
CHANGED
@@ -2,8 +2,14 @@ module Vaws
|
|
2
2
|
module Aws
|
3
3
|
class Describer
|
4
4
|
#TODO Add def to confirm AWS credential
|
5
|
-
|
6
|
-
|
5
|
+
|
6
|
+
# 単一のオプションしか許可されていないコマンドのオプション数を確認
|
7
|
+
def single_option_validation(*options)
|
8
|
+
options_count = options.length - options.count(nil)
|
9
|
+
if options_count > 1
|
10
|
+
puts "Can't specify more than one option"
|
11
|
+
exit 1
|
12
|
+
end
|
7
13
|
end
|
8
14
|
end
|
9
15
|
end
|
@@ -4,36 +4,90 @@ require 'vaws/aws/describer'
|
|
4
4
|
module Vaws
|
5
5
|
module Aws
|
6
6
|
class EcsDescriber < Describer
|
7
|
-
attr_reader :term_table
|
8
|
-
|
9
7
|
def initialize
|
10
|
-
@ecs_client
|
11
|
-
@term_table = ''
|
12
|
-
@cluster_arns = []
|
13
|
-
@cluster_info = {}
|
8
|
+
@ecs_client = ::Aws::ECS::Client.new
|
14
9
|
end
|
15
10
|
|
16
|
-
def
|
17
|
-
|
11
|
+
def terminal_table(opt_tasks:, opt_networks:, opt_services:)
|
12
|
+
single_option_validation(opt_tasks, opt_networks, opt_services)
|
13
|
+
table = tasks if opt_tasks
|
14
|
+
table = networks if opt_networks
|
15
|
+
table = services if opt_services
|
16
|
+
table = clusters if opt_tasks.nil? && opt_networks.nil? && opt_services.nil?
|
17
|
+
table
|
18
|
+
end
|
18
19
|
|
20
|
+
private
|
21
|
+
|
22
|
+
def clusters
|
23
|
+
rows = []
|
19
24
|
cluster_arns.each do |cluster_arn|
|
20
|
-
cluster_name
|
21
|
-
|
22
|
-
cluster_name = "#{cluster_name}"
|
23
|
-
cluster_services = service_names(cluster_arn)
|
25
|
+
cluster_name = cluster_arn.gsub(/arn:aws:ecs:#{ENV['AWS_DEFAULT_REGION']}:[0-9]*:cluster\//, "")
|
26
|
+
cluster_services = service_arns(cluster_arn).join("\n").gsub(/.*:[0-9]*:service\//, "")
|
24
27
|
|
25
28
|
ecs_cluster = @ecs_client.describe_clusters({ clusters: ["#{cluster_arn}"] }).clusters
|
26
29
|
running_tasks_count = ecs_cluster[0].running_tasks_count
|
27
30
|
pending_tasks_count = ecs_cluster[0].pending_tasks_count
|
28
31
|
active_services_count = ecs_cluster[0].active_services_count
|
29
32
|
|
30
|
-
rows << [cluster_name,
|
33
|
+
rows << [cluster_name, active_services_count, running_tasks_count, pending_tasks_count, cluster_services]
|
31
34
|
end
|
32
35
|
|
33
|
-
|
36
|
+
Terminal::Table.new :headings => ['ClusterName', 'ActService', 'RunTask', 'PenTask', 'Services'], :rows => rows.sort
|
34
37
|
end
|
35
38
|
|
36
|
-
|
39
|
+
def tasks
|
40
|
+
rows = []
|
41
|
+
lb_target_group = nil
|
42
|
+
task, d_count, p_count, r_count, updated_at, sg, c_provider = nil
|
43
|
+
cluster_arn = selected_cluster_arn
|
44
|
+
cluster_name = cluster_arn.gsub(/.*:cluster\//, '')
|
45
|
+
service_names = service_names(cluster_arn)
|
46
|
+
|
47
|
+
service_names.each_slice(1).to_a.each do |s|
|
48
|
+
describe_services(cluster: cluster_name, service_names: s).services.each do |ds|
|
49
|
+
ds.load_balancers.each do |lb|
|
50
|
+
lb_target_group = lb.target_group_arn.gsub(/.*:targetgroup\//, '')
|
51
|
+
end
|
52
|
+
|
53
|
+
ds.deployments.each do |d|
|
54
|
+
task = d.task_definition.gsub(/.*:task-definition\//, '')
|
55
|
+
d_count = d.desired_count
|
56
|
+
p_count = d.pending_count
|
57
|
+
r_count = d.running_count
|
58
|
+
updated_at = d.updated_at
|
59
|
+
sg = d.network_configuration.awsvpc_configuration.security_groups.join(',') if d.network_configuration
|
60
|
+
if d.capacity_provider_strategy
|
61
|
+
d.capacity_provider_strategy.each do |c|
|
62
|
+
c_provider = c.capacity_provider
|
63
|
+
end
|
64
|
+
else
|
65
|
+
c_provider = "EC2"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
rows << [task, d_count, r_count, p_count, lb_target_group, sg, updated_at, c_provider]
|
70
|
+
task, d_count, r_count, p_count, lb_target_group, sg, updated_at, c_provider = nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
Terminal::Table.new :headings => ['TaskDefinition', 'Desired', 'Running', 'Pending', 'LbTargetGroup', 'SecurityGroup', 'UpdatedAt', 'CapacityProvider'], :rows => rows.sort
|
75
|
+
end
|
76
|
+
|
77
|
+
def networks
|
78
|
+
# TODO
|
79
|
+
end
|
80
|
+
|
81
|
+
def services
|
82
|
+
# TODO
|
83
|
+
end
|
84
|
+
|
85
|
+
def describe_services(cluster:, service_names:)
|
86
|
+
@ecs_client.describe_services({
|
87
|
+
cluster: cluster,
|
88
|
+
services: service_names,
|
89
|
+
})
|
90
|
+
end
|
37
91
|
|
38
92
|
def cluster_arns
|
39
93
|
param_args = {
|
@@ -42,17 +96,36 @@ module Vaws
|
|
42
96
|
@ecs_client.list_clusters(param_args)[:cluster_arns]
|
43
97
|
end
|
44
98
|
|
99
|
+
def selected_cluster_arn
|
100
|
+
puts "# CLUSTER LIST"
|
101
|
+
arns = cluster_arns
|
102
|
+
arns.each_with_index do |arn, cnt|
|
103
|
+
puts "#{cnt}: #{arn}"
|
104
|
+
end
|
105
|
+
print "cluster numbner:"
|
106
|
+
input = STDIN.gets
|
107
|
+
begin
|
108
|
+
raise unless /[0-9].*/ =~ input
|
109
|
+
input_cluster_number = input.to_i
|
110
|
+
arns[input_cluster_number]
|
111
|
+
rescue
|
112
|
+
puts "Not found cluster"
|
113
|
+
exit
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
45
117
|
def service_arns(cluster_arn)
|
46
|
-
|
47
|
-
|
48
|
-
max_results: 1
|
49
|
-
}
|
50
|
-
@ecs_client.list_services(param_args)[:service_arns]
|
118
|
+
service_ary = []
|
119
|
+
service_ary << @ecs_client.list_services({ cluster: "#{cluster_arn}", max_results: 100 })[:service_arns].sort
|
51
120
|
end
|
52
121
|
|
53
122
|
def service_names(cluster_arn)
|
54
|
-
service_ary =
|
55
|
-
|
123
|
+
service_ary = []
|
124
|
+
names = []
|
125
|
+
service_ary << @ecs_client.list_services({ cluster: "#{cluster_arn}", max_results: 100 })[:service_arns].sort.each do |arn|
|
126
|
+
names << arn.gsub(/.*:[0-9]*:service\//, "")
|
127
|
+
end
|
128
|
+
names
|
56
129
|
end
|
57
130
|
end
|
58
131
|
end
|
@@ -46,11 +46,13 @@ module Vaws
|
|
46
46
|
end
|
47
47
|
|
48
48
|
desc 'ecs', 'View ECS'
|
49
|
+
option :tasks, aliases: 't', :type => :boolean
|
50
|
+
option :networks, aliases: 'n', :type => :boolean
|
51
|
+
option :services, aliases: 's', :type => :boolean
|
49
52
|
|
50
53
|
def ecs
|
51
|
-
|
52
|
-
|
53
|
-
puts ecs_desc.term_table
|
54
|
+
describer = Vaws::Aws::EcsDescriber.new
|
55
|
+
puts describer.terminal_table(opt_tasks: options["tasks"], opt_networks: options["networks"], opt_services: options["services"])
|
54
56
|
end
|
55
57
|
|
56
58
|
desc 'route53', 'View Route53'
|
data/lib/vaws/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vaws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shota Ito
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|