mangroveorg/datawinners

View on GitHub
deployment/ec2/start_instance.py

Summary

Maintainability
A
1 hr
Test Coverage
from boto.ec2.connection import EC2Connection
import sys
import time

if len(sys.argv) < 4:
    print "Usage: python start_instance.py instance_id aws_key aws_secret elastic_ip"
    sys.exit(1)

instance_id = sys.argv[1]
aws_access_key = sys.argv[2]
aws_secret_key = sys.argv[3]
elastic_ip = sys.argv[4]

conn = EC2Connection(aws_access_key, aws_secret_key)
instances = conn.get_only_instances([instance_id])

if not instances or len(instances) == 0:
    print "No instance with instance-id: %s present" % instance_id
    sys.exit(1)

target_instance = instances[0]

if target_instance.state == 'running':
    print "Instance is already running!"
    sys.exit(0)

target_instance.start()

while target_instance.state != 'running':
    print "Current instance state: %s" % target_instance.state
    if target_instance.state not in ['pending', 'running']:
        print "Instance transition state not expected..aborting!"
        sys.exit(1)
    time.sleep(1)
    target_instance.update()

elastic_ip_assign_successful = target_instance.use_ip(elastic_ip)
print "Status of ip_assignment: %s" % elastic_ip_assign_successful

if not elastic_ip_assign_successful:
    print "Assignment of elastic-ip failed"
    sys.exit(1)

sys.exit(0)