Final fix for ec2_launch plugin

This commit is contained in:
Marcin Kulisz 2017-01-20 13:50:54 +00:00
parent ed33a5f067
commit ef698b06ca
2 changed files with 11 additions and 8 deletions

View file

@ -48,20 +48,21 @@ class PrintPublicIPAddress(Task):
@classmethod @classmethod
def run(cls, info): def run(cls, info):
ec2 = info._ec2 ec2 = info._ec2
conn = info._ec2['connection']
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
filename = info.manifest.plugins['ec2_launch']['print_public_ip'] filename = info.manifest.plugins['ec2_launch']['print_public_ip']
if not filename: if not filename:
filename = '/dev/null' filename = '/dev/null'
f = open(filename, 'w') f = open(filename, 'w')
def instance_has_ip(): try:
ec2['instance'].update() waiter = conn.get_waiter('instance_status_ok')
return ec2['instance']['PublicIpAddress'] waiter.wait(InstanceIds=[info._ec2['instance']['InstanceId']],
Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
if waituntil(instance_has_ip, timeout=120, interval=5): info._ec2['instance'] = conn.describe_instances(InstanceIds=[info._ec2['instance']['InstanceId']])['Reservations'][0]['Instances'][0]
logger.info('******* EC2 IP ADDRESS: %s *******' % ec2['instance']['PublicIpAddress']) logger.info('******* EC2 IP ADDRESS: %s *******' % info._ec2['instance']['PublicIpAddress'] )
f.write(ec2['instance']['PublicIpAddress']) f.write(info._ec2['instance']['PublicIpAddress'])
else: except:
logger.error('Could not get IP address for the instance') logger.error('Could not get IP address for the instance')
f.write('') f.write('')

View file

@ -38,6 +38,7 @@ class GetCredentials(Task):
def env_key(key): def env_key(key):
return ('aws-' + key).upper().replace('-', '_') return ('aws-' + key).upper().replace('-', '_')
if all(getenv(env_key(key)) is not None for key in keys): if all(getenv(env_key(key)) is not None for key in keys):
for key in keys: for key in keys:
creds[key] = getenv(env_key(key)) creds[key] = getenv(env_key(key))
@ -45,6 +46,7 @@ class GetCredentials(Task):
def provider_key(key): def provider_key(key):
return key.replace('-', '_') return key.replace('-', '_')
import boto.provider import boto.provider
provider = boto.provider.Provider('aws') provider = boto.provider.Provider('aws')
if all(getattr(provider, provider_key(key)) is not None for key in keys): if all(getattr(provider, provider_key(key)) is not None for key in keys):