ec2-host 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/README.md +5 -1
- data/ec2-host.gemspec +1 -1
- data/lib/ec2/host.rb +2 -2
- data/lib/ec2/host/cli.rb +1 -0
- data/lib/ec2/host/client_util.rb +25 -7
- data/spec/host_spec.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0bc795de2c9dd28b237cf8a442d13434532d13e
|
4
|
+
data.tar.gz: 417e73f78134b37a660bc614dfc07e74ebfd1890
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19efa5260b4e445e9f3024c7228a02e8477736feb678aa52ed6596846551b520f74c97f82c04044fa93d4f3b52b2322179379db63841f1622c2001daca2f12fc
|
7
|
+
data.tar.gz: 720fa2e40471c42fd373a6bba4a00dd16eb596d548f325e376fa693da6cb6d54e0610537190d6d9a26d82d6e3bca99e8b16cba4b44524aa6f426103a65264ffc
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
+
# 0.1.0 (2015/08/11)
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
|
5
|
+
* Alias `--json` to `-j` option
|
6
|
+
* Possible speed up for instance_id, role, role1, role2, role3 condition
|
7
|
+
|
1
8
|
# 0.0.9 (2015/08/10)
|
2
9
|
|
3
10
|
Enhancements:
|
4
11
|
|
5
|
-
* Add
|
12
|
+
* Add `--state` and `--monitoring` option
|
6
13
|
* Remove terminated instances from list as default
|
7
14
|
* Support nested key such as instance.instance_id (as library)
|
8
15
|
|
data/README.md
CHANGED
@@ -58,13 +58,17 @@ Usage:
|
|
58
58
|
|
59
59
|
Options:
|
60
60
|
-h, [--hostname=one two three] # name or private_dns_name
|
61
|
-
--usage, [--role=one two three]
|
61
|
+
-r, --usage, -u, [--role=one two three] # role
|
62
62
|
--r1, --usage1, --u1, [--role1=one two three] # role1, the 1st part of role delimited by :
|
63
63
|
--r2, --usage2, --u2, [--role2=one two three] # role2, the 2nd part of role delimited by :
|
64
64
|
--r3, --usage3, --u3, [--role3=one two three] # role3, the 3rd part of role delimited by :
|
65
|
+
[--instance-id=one two three] # instance_id
|
66
|
+
[--state=one two three] # state
|
67
|
+
[--monitoring=one two three] # monitoring
|
65
68
|
--ip, [--private-ip], [--no-private-ip] # show private ip address instead of hostname
|
66
69
|
[--public-ip], [--no-public-ip] # show public ip address instead of hostname
|
67
70
|
-i, [--info], [--no-info] # show host info, not only hostname
|
71
|
+
-j, [--json], [--no-json] # show detailed host info in json
|
68
72
|
[--debug], [--no-debug] # debug mode
|
69
73
|
|
70
74
|
Search EC2 hosts
|
data/ec2-host.gemspec
CHANGED
data/lib/ec2/host.rb
CHANGED
@@ -40,7 +40,7 @@ class EC2
|
|
40
40
|
|
41
41
|
# @return [Host::Data] representing myself
|
42
42
|
def self.me
|
43
|
-
new(instance_id: ClientUtil.
|
43
|
+
new(instance_id: ClientUtil.instance_id).each do |d|
|
44
44
|
return d
|
45
45
|
end
|
46
46
|
raise 'Not Found'
|
@@ -92,7 +92,7 @@ class EC2
|
|
92
92
|
# @yieldparam [Host::Data] data entry
|
93
93
|
def each(&block)
|
94
94
|
@conditions.each do |condition|
|
95
|
-
search(ClientUtil.
|
95
|
+
search(ClientUtil.instances(condition), condition, &block)
|
96
96
|
end
|
97
97
|
return self
|
98
98
|
end
|
data/lib/ec2/host/cli.rb
CHANGED
data/lib/ec2/host/client_util.rb
CHANGED
@@ -4,15 +4,33 @@ require 'aws-sdk'
|
|
4
4
|
class EC2
|
5
5
|
class Host
|
6
6
|
class ClientUtil
|
7
|
-
def self.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@
|
7
|
+
def self.ec2(reload = false)
|
8
|
+
if @ec2.nil? || reload
|
9
|
+
Aws.config.update(region: Config.aws_region, credentials: Config.aws_credentials)
|
10
|
+
@ec2 = Aws::EC2::Client.new
|
11
|
+
end
|
12
|
+
@ec2
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.instances(condition)
|
16
|
+
describe_instances =
|
17
|
+
if instance_id = condition[:instance_id]
|
18
|
+
ec2.describe_instances(instance_ids: Array(instance_id))
|
19
|
+
elsif role = (condition[:role] || condition[:usage]) and role.size == 1
|
20
|
+
ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role.first}*"]}])
|
21
|
+
elsif role1 = (condition[:role1] || condition[:usage1]) and role1.size == 1
|
22
|
+
ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role1.first}*"]}])
|
23
|
+
elsif role2 = (condition[:role2] || condition[:usage2]) and role2.size == 1
|
24
|
+
ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role2.first}*"]}])
|
25
|
+
elsif role3 = (condition[:role3] || condition[:usage3]) and role3.size == 1
|
26
|
+
ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role3.first}*"]}])
|
27
|
+
else
|
28
|
+
ec2.describe_instances
|
29
|
+
end
|
30
|
+
describe_instances.reservations.map(&:instances).flatten
|
13
31
|
end
|
14
32
|
|
15
|
-
def self.
|
33
|
+
def self.instance_id
|
16
34
|
return @instance_id if @instance_id
|
17
35
|
begin
|
18
36
|
http_conn = Net::HTTP.new('169.254.169.254')
|
data/spec/host_spec.rb
CHANGED
@@ -39,6 +39,14 @@ describe EC2::Host do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
context 'by instance_id' do
|
43
|
+
let(:hosts) { EC2::Host.new(instance_id: 'i-85900780').to_a }
|
44
|
+
let(:subject) { hosts.first }
|
45
|
+
it_should_behave_like 'host'
|
46
|
+
it { expect(hosts.size).to eq(1) }
|
47
|
+
it { expect(subject.hostname).to eq('test') }
|
48
|
+
end
|
49
|
+
|
42
50
|
context 'by hostname' do
|
43
51
|
let(:hosts) { EC2::Host.new(hostname: 'test').to_a }
|
44
52
|
let(:subject) { hosts.first }
|
@@ -49,6 +57,11 @@ describe EC2::Host do
|
|
49
57
|
|
50
58
|
context 'by role' do
|
51
59
|
context 'by a role' do
|
60
|
+
let(:subject) { EC2::Host.new(role: 'admin:ami').first }
|
61
|
+
it_should_behave_like 'host'
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'by a role1' do
|
52
65
|
let(:subject) { EC2::Host.new(role1: 'admin').first }
|
53
66
|
it_should_behave_like 'host'
|
54
67
|
end
|
@@ -74,6 +87,11 @@ describe EC2::Host do
|
|
74
87
|
# This is for DeNA use
|
75
88
|
context 'by usage (an alias of usage)' do
|
76
89
|
context 'by a usage' do
|
90
|
+
let(:subject) { EC2::Host.new(usage: 'admin:ami').first }
|
91
|
+
it_should_behave_like 'host'
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'by a usage1' do
|
77
95
|
let(:subject) { EC2::Host.new(usage1: 'admin').first }
|
78
96
|
it_should_behave_like 'host'
|
79
97
|
end
|