Source

ec2control / ec2control / ec2.py

Full commit
from boto.ec2.connection import EC2Connection
import time

class CommandError(Exception):
    pass

class Instance(object):
    def __init__(self, config, name):
        self.config_file = config
        if name is None:
            if config.get("default_instance"):
                name = config["default_instance"]
            else:
                raise CommandError("No instance name specified")
        else:
            self.name = name

        self.config = config.section_dict("instance_%s" % name)
        self.descriptive_name = self.config['descriptive_name']
        self._conn = EC2Connection(config['aws_key'], config['aws_secret'])

    @property
    def ip_address(self):
        if self.instance:
            return self.instance.ip_address
        else:
            return None

    def start(self):
        instances = self._conn.start_instances(instance_ids=[self.config['instance_id']])

        inst = instances[0]

        inst.update()
        while inst.state == 'pending':
            time.sleep(10)
            inst.update()

        # grease the wheels, seems to 
        # say "stopped" for a second here
        time.sleep(10)

        self.status = inst.state