Module: RehashHelpers

Defined in:
lib/helpers/rehash.rb

Instance Method Summary collapse

Instance Method Details

#rehash ⇒ Object



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