From 945b2393f99b0bf941639aff7f6cac9d7c016e15 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Fri, 10 Mar 2017 16:09:58 +0100 Subject: [PATCH] Ticket #3983: fix elastic ip association (cherry picked from commit 6a260e1081f44cf00b9e26af5444d5b72ef5d2b6) --- src/vmm_mad/remotes/ec2/ec2_driver.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/vmm_mad/remotes/ec2/ec2_driver.rb b/src/vmm_mad/remotes/ec2/ec2_driver.rb index 6b12733997..7223012df0 100755 --- a/src/vmm_mad/remotes/ec2/ec2_driver.rb +++ b/src/vmm_mad/remotes/ec2/ec2_driver.rb @@ -35,6 +35,7 @@ require 'yaml' require 'rubygems' require 'aws-sdk' require 'uri' +require 'resolv' $: << RUBY_LIB_LOCATION @@ -338,11 +339,26 @@ class EC2Driver instance.create_tags(:tags => tag_array) + elastic_ip = ec2_value(ec2_info, 'ELASTICIP') + + if elastic_ip + wait_state('pending', instance.id) + + if elastic_ip.match(Resolv::IPv4::Regex) + address_key = :public_ip + else + address_key = :allocation_id + end + + address = { + :instance_id => instance.id, + address_key => elastic_ip + } + + @ec2.client.associate_address(address) + end wait_state('running', instance.id) - if ec2_value(ec2_info, 'ELASTICIP') - instance.associate_elastic_ip(ec2_value(ec2_info, 'ELASTICIP')) - end puts(instance.id) else