#!/usr/bin/env python
import sys
import argparse
import logging

from serverondemand.demand import Demand
from serverondemand import get_resource

logger = logging.getLogger(__name__)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description =
            "Spin up a server to do a thing, and then have it die.")

    parser.add_argument('--debug', '-d', action='store_true')
    parser.add_argument('--credentials', '-c', default = "~/.rackspace_cloud_credentials",
            help = "Credentials file with API username and key. [~/.rackspace_cloud_credentials]")
    parser.add_argument('--region', '-r', default = None,
            help = "Region to use [Identity default]")
    parser.add_argument('--image', '-i', default = "Ubuntu", help = 
            "Image name or substring of a name to boot. [Ubuntu]")
    parser.add_argument('--flavor', '-f', default = 2, help = 
            "Flavor to boot. [512 MB / ID=2]")
    parser.add_argument('--script', '-s', help = 
            "Script to be uploaded and ran on the server.")
    parser.add_argument('--yes', '-y', action = 'store_true', help = 
            "Auto-confirm any action the script makes.")
    parser.add_argument('command', nargs=argparse.REMAINDER)

    args = parser.parse_args()

    # TODO implement this
    args.agent_creds = None

    if args.debug:
        logging.basicConfig(level = logging.DEBUG)
    else:
        logging.basicConfig(level = logging.INFO)

    # TODO make these parameters
    d = Demand(args)

    flavor, flavor_ref = d.get_flavor(args.flavor)
    image, image_ref = d.get_image(args.image)

    print "Selected Image: %s" % image
    print "Selected Flavor: %s" % flavor

    if not args.yes:
        print "Procede? [Y/n]:",
        answer = sys.stdin.readline().strip().lower()

        if answer != '' and answer[0] != 'y':
            print "Aborted"
            sys.exit(1)

    server = d.build(image_ref, flavor_ref)

