Module: AWS::Utils

Included in:
Autoscale, Provision
Defined in:
lib/conan/cloud/aws/utils.rb

Instance Method Summary collapse

Instance Method Details

#all_availability_zones(region) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/conan/cloud/aws/utils.rb', line 51

def all_availability_zones(region)
  case region
  when "us-east-1"
    #not using availability zone us-east-1a as it often fails
    ["us-east-1b", "us-east-1d"]
  when "us-west-1"
    ["us-west-1a", "us-west-1b", "us-west-1c"]
  when "eu-west-1"
    ["eu-west-1a", "eu-west-1b", "eu-west-1c"]
  when "ap-northeast-1"
    ["ap-northeast-1a", "ap-northeast-1a"]
  when "ap-southeast-1"
    ["ap-southeast-1a", "ap-southeast-1b"]
  end
end

#all_regionsObject



47
48
49
# File 'lib/conan/cloud/aws/utils.rb', line 47

def all_regions
  ['us-east-1', 'us-west-1', 'eu-west-1', 'ap-northeast-1', 'ap-southeast-1']
end

#default_availability_zone(region) ⇒ Object



42
43
44
45
# File 'lib/conan/cloud/aws/utils.rb', line 42

def default_availability_zone(region)
  #using availability zone b by default as a is often unavailable in us-east-1
  "#{region}b"
end

#default_image_id(region, flavor_id, root_device_type) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/conan/cloud/aws/utils.rb', line 67

def default_image_id(region, flavor_id, root_device_type)
  #now default to 64 bit architecture as all flavors support 64 bit
  arch = "64-bit"

  defaults = JSON.parse(File.read(File.expand_path(File.join(File.dirname(__FILE__), 'default_amis.json'))))
  
  #not defaulting to ubuntu 12.04
  region_defaults = defaults["ubuntu 12.04"][region]
  raise "Invalid Region" if region_defaults.nil?
  default_ami = region_defaults[arch][root_device_type]

  raise "Default AMI not found for #{region} #{flavor_id} #{root_device_type}" if default_ami.nil?
  default_ami

end

#ec2_name_tag(server_name) ⇒ Object



8
9
10
# File 'lib/conan/cloud/aws/utils.rb', line 8

def ec2_name_tag(server_name)
  "#{stage}-#{server_name}"
end

#elasticache_name_tag(server_name) ⇒ Object



16
17
18
# File 'lib/conan/cloud/aws/utils.rb', line 16

def elasticache_name_tag(server_name)
  "#{stage}-elasticache-#{server_name}"
end

#find_server_by_name(name, region = nil) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/conan/cloud/aws/utils.rb', line 20

def find_server_by_name(name, region = nil)
  regions_to_search = region.nil? ? all_regions : [region]
  found_servers = []
  regions_to_search.each do |r|
    compute = Fog::Compute.new(:provider => :aws, :region => r)
    servers = compute.servers.all
    found_servers = found_servers + servers.select { |server| server.tags["name"] == ec2_name_tag(name) and server.state == 'running' }
  end
  found_servers.empty? ? nil : found_servers[0]
end

#list_stage_servers(region = nil) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/conan/cloud/aws/utils.rb', line 31

def list_stage_servers(region = nil)
  regions_to_search = region.nil? ? all_regions : [region]
  found_servers = []
  regions_to_search.each do |r|
    compute = Fog::Compute.new(:provider => :aws, :region => r)
    servers = compute.servers.all
    found_servers = found_servers + servers.select { |server| server.tags["stage"] == stage and server.state == 'running' }
  end
  found_servers
end

#rds_name_tag(server_name) ⇒ Object



12
13
14
# File 'lib/conan/cloud/aws/utils.rb', line 12

def rds_name_tag(server_name)
  "#{stage}-db-#{server_name}"
end