2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/helpers/rehash.rb', line 2
def rehash()
@layout = {}
@roles = []
$redis.keys('app:*').each do |app|
role = $redis.hget(app,'role')
unless role == 'nil'
@roles << role
end
end
$redis.keys('host:*').each do |key|
@roles << key.gsub('host:','').gsub(/:.*:i-.*/,'')
end
@roles.uniq!
@roles.each do |role|
apps = []
$redis.keys('app:*').each do |app|
if $redis.hget(app,'role') == role
apps << app.gsub('app:','')
end
end
@layout[role] = apps
end
$redis.keys("host:*").each do |rediskey|
$redis.del rediskey
end
$redis.keys("instance:*").each do |rediskey|
$redis.del rediskey
end
@zones = $redis.hgetall('amis').keys
@zones.each do |zone|
@ec2 = AWS::EC2.new(:access_key_id => $redis.hget('config', 'aws_id'), :secret_access_key => $redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{zone}.amazonaws.com")
@instances = []
@ec2.instances.each do |instance|
if instance.tags['gaptool'] == 'yes' && instance.status == :running
@instances << instance
end
end
@instances.each do |instance|
@name = instance.tags['Name'].split('-')
@rediskey = "host:#{@name[0]}:#{@name[1]}:i-#{@name.last}"
@host = {
"zone"=> instance.availability_zone,
"itype"=> instance.instance_type,
"role"=> @name.first,
"environment"=> @name[1],
"secret"=>"NA",
"capacity"=>"6",
"hostname"=> instance.public_dns_name,
"apps" => @layout[@name[0]].to_s,
"instance"=> instance.instance_id
}
@host.keys.each do |key|
$redis.hset(@rediskey, key, @host[key])
end
end
end
return {"action" => "complete"}
end
|