ecl 1.2.1 → 3.0.0.pre.alpha1
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 +5 -5
- data/.gitignore +0 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +48 -0
- data/README.md +112 -89
- data/Rakefile +1 -0
- data/eclair.gemspec +7 -4
- data/exe/ecl +62 -4
- data/lib/eclair.rb +21 -18
- data/lib/eclair/color.rb +3 -0
- data/lib/eclair/config.rb +68 -21
- data/lib/eclair/grid.rb +242 -274
- data/lib/eclair/group_item.rb +33 -0
- data/lib/eclair/item.rb +42 -0
- data/lib/eclair/less_viewer.rb +2 -1
- data/lib/eclair/provider.rb +15 -0
- data/lib/eclair/providers/ec2.rb +2 -0
- data/lib/eclair/providers/ec2/ec2_group_item.rb +16 -0
- data/lib/eclair/providers/ec2/ec2_item.rb +136 -0
- data/lib/eclair/providers/ec2/ec2_provider.rb +118 -0
- data/lib/eclair/providers/gce.rb +2 -0
- data/lib/eclair/providers/gce/gce_group_item.rb +15 -0
- data/lib/eclair/providers/gce/gce_item.rb +117 -0
- data/lib/eclair/providers/gce/gce_provider.rb +34 -0
- data/lib/eclair/providers/k8s.rb +2 -0
- data/lib/eclair/providers/k8s/k8s_group_item.rb +15 -0
- data/lib/eclair/providers/k8s/k8s_item.rb +92 -0
- data/lib/eclair/providers/k8s/k8s_provider.rb +34 -0
- data/lib/eclair/version.rb +2 -1
- data/out.gif +0 -0
- data/templates/eclrc.template +81 -35
- metadata +60 -27
- data/bin/console +0 -10
- data/lib/eclair/cell.rb +0 -101
- data/lib/eclair/column.rb +0 -52
- data/lib/eclair/console.rb +0 -56
- data/lib/eclair/group.rb +0 -55
- data/lib/eclair/helpers/aws_helper.rb +0 -157
- data/lib/eclair/helpers/benchmark_helper.rb +0 -19
- data/lib/eclair/helpers/common_helper.rb +0 -24
- data/lib/eclair/instance.rb +0 -165
- data/lib/eclair/matcher.rb +0 -19
@@ -1,24 +0,0 @@
|
|
1
|
-
module Eclair
|
2
|
-
module CommonHelper
|
3
|
-
include Curses
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
base.extend(ClassMethods)
|
7
|
-
end
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
def array_accessor name
|
11
|
-
methods = [:[], :each, :count, :index, :each_with_index, :all?, :find, :empty?]
|
12
|
-
methods.each do |method_name|
|
13
|
-
define_method method_name do |*args, &blk|
|
14
|
-
self.send(name).send(method_name, *args, &blk)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def config
|
21
|
-
Eclair.config
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/lib/eclair/instance.rb
DELETED
@@ -1,165 +0,0 @@
|
|
1
|
-
module Eclair
|
2
|
-
class Instance < Cell
|
3
|
-
def initialize instance_id, column = nil
|
4
|
-
super
|
5
|
-
@instance_id = instance_id
|
6
|
-
@column = column
|
7
|
-
end
|
8
|
-
|
9
|
-
def x
|
10
|
-
column.x
|
11
|
-
end
|
12
|
-
|
13
|
-
def y
|
14
|
-
column.index(self)
|
15
|
-
end
|
16
|
-
|
17
|
-
def name
|
18
|
-
begin
|
19
|
-
nametag = object.tags.find{|t| t.key == "Name"}
|
20
|
-
nametag ? nametag.value : "noname"
|
21
|
-
rescue
|
22
|
-
"terminated"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def color
|
27
|
-
if [48, 80].include?(state[:code])
|
28
|
-
super(*config.disabled_color)
|
29
|
-
else
|
30
|
-
super(*config.instance_color)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def format
|
35
|
-
" - #{name} [#{launched_at}] #{select_indicator}"
|
36
|
-
end
|
37
|
-
|
38
|
-
def hostname
|
39
|
-
case config.ssh_hostname
|
40
|
-
when :auto
|
41
|
-
if object.network_interfaces.empty? && object.public_ip_address
|
42
|
-
object.public_ip_address
|
43
|
-
else
|
44
|
-
object.private_ip_address
|
45
|
-
end
|
46
|
-
else
|
47
|
-
object.send(config.ssh_hostname)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def image **options
|
52
|
-
Aws.images(**options).find{|i| i.image_id == object.image_id}
|
53
|
-
end
|
54
|
-
|
55
|
-
def security_groups **options
|
56
|
-
if Aws.security_groups?
|
57
|
-
object.security_groups.map{|instance_sg|
|
58
|
-
Aws.security_groups(**options).find{|sg| sg.group_id == instance_sg.group_id }
|
59
|
-
}.compact
|
60
|
-
else
|
61
|
-
nil
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def routes
|
66
|
-
if Aws.dns_records?
|
67
|
-
Aws.dns_records.select do |record|
|
68
|
-
values = record.resource_records.map(&:value)
|
69
|
-
!values.grep(private_dns_name).empty? ||
|
70
|
-
!values.grep(public_dns_name).empty? ||
|
71
|
-
!values.grep(private_ip_address).empty? ||
|
72
|
-
!values.grep(public_ip_address).empty?
|
73
|
-
end
|
74
|
-
else
|
75
|
-
nil
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def username
|
80
|
-
config.ssh_username.call(image(force: true))
|
81
|
-
end
|
82
|
-
|
83
|
-
def key_cmd
|
84
|
-
if config.ssh_keys[key_name]
|
85
|
-
"-i #{config.ssh_keys[key_name]}"
|
86
|
-
else
|
87
|
-
""
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def ssh_cmd
|
92
|
-
cmd = config.ssh_ports.map{ |port|
|
93
|
-
"ssh #{config.ssh_options} -p#{port} #{key_cmd} #{username}@#{hostname}"
|
94
|
-
}.join(" || ")
|
95
|
-
|
96
|
-
"echo Attaching to #{name}: #{username}@#{hostname} && (#{cmd})"
|
97
|
-
end
|
98
|
-
|
99
|
-
def connectable?
|
100
|
-
hostname && ![48, 80].include?(state[:code])
|
101
|
-
end
|
102
|
-
|
103
|
-
def running?
|
104
|
-
hostname && state[:code] == 16
|
105
|
-
end
|
106
|
-
|
107
|
-
def launched_at
|
108
|
-
diff = Time.now - launch_time
|
109
|
-
{
|
110
|
-
"year" => 31557600,
|
111
|
-
"month" => 2592000,
|
112
|
-
"day" => 86400,
|
113
|
-
"hour" => 3600,
|
114
|
-
"minute" => 60,
|
115
|
-
"second" => 1
|
116
|
-
}.each do |unit,v|
|
117
|
-
if diff >= v
|
118
|
-
value = (diff/v).to_i
|
119
|
-
return "#{value} #{unit}#{value > 1 ? "s" : ""}"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
"now"
|
123
|
-
end
|
124
|
-
|
125
|
-
def digest_tags
|
126
|
-
tags.map{|t| "#{t[:key]}: #{t[:value]}"}.join("/")
|
127
|
-
end
|
128
|
-
|
129
|
-
def digest_routes
|
130
|
-
if Aws.dns_records?
|
131
|
-
routes.map(&:name).join(" ")
|
132
|
-
else
|
133
|
-
"Fetching DNS records from Route53..."
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def header
|
138
|
-
["#{name} (#{instance_id}) [#{state[:name]}] #{hostname}",
|
139
|
-
"launched at #{launch_time.to_time}",
|
140
|
-
"#{digest_routes}"]
|
141
|
-
end
|
142
|
-
|
143
|
-
def info
|
144
|
-
to_merge = {}
|
145
|
-
|
146
|
-
if routes
|
147
|
-
to_merge[:routes] = routes.map(&:to_h)
|
148
|
-
else
|
149
|
-
to_merge[:routes] = "Fetching DNS records from Route53..."
|
150
|
-
end
|
151
|
-
|
152
|
-
if image
|
153
|
-
to_merge[:image] = image.to_h
|
154
|
-
else
|
155
|
-
to_merge[:image] = "Fetching Image data from EC2..."
|
156
|
-
end
|
157
|
-
|
158
|
-
object.to_h.merge(to_merge)
|
159
|
-
end
|
160
|
-
|
161
|
-
def object
|
162
|
-
Aws.instance_map[@instance_id]
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
data/lib/eclair/matcher.rb
DELETED