def destroy(config):
    """Destroy a droplet based on the configuration given"""
    # Create manager
    manager = digitalocean.Manager(token=config.token)

    # Get droplet so we can destroy it
    droplet = helper.get_droplet_by_name(manager, config.droplet_name)
    if not droplet:
        print 'Droplet does not exist: {}'.format(config.droplet_name)
        return False

    droplet.destroy()

    # Should probably only see one?
    actions = droplet.get_actions()
    for action in actions:
        action.wait()
        print 'Action {} is {}'.format(action.type, action.status)

    # Now get and upate the DNS record -- assumes a single A record, which we
    # delete
    domains = manager.get_all_domains()
    for domain in domains:
        if domain.name == config.domain_name:
            records = domain.get_records()
            for record in records:
                if record.type == 'A':
                    record.destroy()

    print 'Destroy of {} complete!'.format(config.domain_name)
    return True
def create(config):
    """Create a droplet based on the configuration given"""

    # Create manager
    manager = digitalocean.Manager(token=config.token)

    # Don't continue if we've already got droplet created
    if helper.get_droplet_by_name(manager, config.droplet_name):
        print 'Droplet already exists: {}'.format(config.droplet_name)
        return False

    # Get image to create droplet from
    image = helper.get_image_by_name(manager, config.image_name)

    # Fetch the ssh key
    ssh_keys = helper.get_ssh_keylist_by_name(manager, config.ssh_key_name)

    # Create droplet with image and ssh key
    droplet = digitalocean.Droplet(token=config.token,
                                   name=config.droplet_name,
                                   region=config.droplet_region,
                                   image=image.id,
                                   size_slug=config.droplet_size_slug,
                                   ssh_keys=ssh_keys)
    droplet.create()

    # Only expecting to see a single action, but loop anyway...
    actions = droplet.get_actions()
    for action in actions:
        action.wait()
        print 'Action {} is {}'.format(action.type, action.status)

    # Now get the IP address
    droplet.load()
    print 'IP address: {}'.format(droplet.ip_address)

    # Now get and upate the DNS record -- assumes a single A record
    # TODO create domain if it doesn't exist and move this to a function
    _update_domain(manager, config.domain_name, droplet.ip_address)

    print 'Setup of {} complete! IP address: {}'.format(config.domain_name,
                                                        droplet.ip_address)