Project

General

Profile

« Previous | Next » 

Revision 4963a970

Added by Greg Sutcliffe about 10 years ago

Fixes #4616 - Add a Fog mixin for looking up EC2 IP addresses

View differences:

app/models/concerns/fog_extensions/aws/server.rb
flavor.to_label
end
def ip_addresses
[public_ip_address, private_ip_address].flatten.compact
end
end
end
end
app/models/concerns/orchestration/compute.rb
if attrs.keys.include?(:ip)
logger.info "waiting for instance to acquire ip address"
vm.wait_for do
self.send(attrs[:ip]).present? || (self.public_ip_addresses + self.private_ip_addresses).present?
self.send(attrs[:ip]).present? || self.ip_addresses.present?
end
end
rescue => e
......
begin
Timeout::timeout(120) do
until ip
addresses = vm.public_ip_addresses + vm.private_ip_addresses
addresses.each do |addr|
vm.ip_addresses.each do |addr|
ip = addresses.find { |addr| ssh_open?(addr) }
end
sleep 2
......
logger.info "acquisition of ip address timed out"
# Userdata doesn't require an IP to ssh to, so if we can't
# reach it, just pick one. SSH will correctly fail for an unreachable IP
ip = (vm.public_ip_addresses + vm.private_ip_addresses).first if ip.blank?
ip = vm.ip_addresses.first if ip.blank?
end
ip
end

Also available in: Unified diff