def configure()

in EC2/QuickInstanceEC2/qi.py [0:0]


def configure():
    prompts = [
        {'question': 'Enter AWS region name or number: ', 'id': 'region', 'fetch': True},
        {'question': 'Default instance type [t2.micro]: ', 'id': 'type', 'fetch': False},
        {'question': 'Instance profile name or number: ', 'id': 'role', 'fetch': True},
        {'question': 'SSH key pair name  or number for Linux instances: ', 'id': 'key', 'fetch': True},
        {'question': 'SSH key pair name or number for Windows instances: ', 'id': 'key-windows', 'fetch': True},
        {'question': 'Default root volume size in GB [30]: ', 'id': 'volume', 'fetch': False},
        {'question': 'AMI ID or number for Amazon Linux: ', 'id': 'ami-amazon-linux', 'fetch': True},
        {'question': 'AMI ID or number for NAT instance: ', 'id': 'ami-nat-instance', 'fetch': True},
        {'question': 'AMI ID or number for Ubuntu: ', 'id': 'ami-ubuntu', 'fetch': True},
        {'question': 'AMI ID or number for Redhat Linux: ', 'id': 'ami-redhat-linux', 'fetch': True},
        {'question': 'AMI ID or number for Windows 2012: ', 'id': 'ami-windows-2012', 'fetch': True},
        {'question': 'AMI ID or number for Windows 2008: ', 'id': 'ami-windows-2008', 'fetch': True}
    ]
    config = {}
    for prompt in prompts:
        prompt_index = prompts.index(prompt)
        resource_list = []
        if prompt_index == 0:
            resource_list = get_regions()
            display_list(resource_list, 'RegionName')
        elif prompt_index == 2:
            resource_list = get_roles()
            display_list(resource_list, 'RoleName')
        elif prompt_index in [3, 4]:
            resource_list = get_key_pairs(config['region'])
            display_list(resource_list, 'KeyName')
        elif prompt_index in [6, 7]:
            resource_list = get_images(config['region'], ['amazon'], False)
            display_list(resource_list, 'ImageId', 'CreationDate', 'Description')
        elif prompt_index in [8]:
            resource_list = get_images(config['region'], [ubuntu_account], False)
            display_list(resource_list, 'ImageId', 'CreationDate', 'Name')
        elif prompt_index in [9]:
            resource_list = get_images(config['region'], [redhat_account], False)
            display_list(resource_list, 'ImageId', 'CreationDate', 'Name')
        elif prompt_index in [10, 11]:
            resource_list = get_images(config['region'], ['amazon'], True)
            display_list(resource_list, 'ImageId', 'CreationDate', 'Description')
        else:
            resource_list = []
        while True:
            if sys.version_info[0] < 3:
                response = raw_input(prompt['question'])
            else:
                response = input(prompt['question'])
            if prompt_index in [1, 5]:  # allow blank entry for instance type and volume size
                break
            if response.strip():
                if is_number(response) and prompt['fetch']:
                    if int(response)-1 >= 0 and int(response)-1 < len(resource_list):
                        break
                else:
                    break
        if is_number(response):
            if prompt_index == 0:
                config[prompt['id']] = resource_list[int(response)-1]['RegionName']
            elif prompt_index == 2:
                config[prompt['id']] = resource_list[int(response)-1]['RoleName']
            elif prompt_index in [3, 4]:
                config[prompt['id']] = resource_list[int(response)-1]['KeyName']
            elif prompt_index == 5:
                config[prompt['id']] = response.strip()
            elif prompt_index in [6, 7]:
                config[prompt['id']] = resource_list[int(response)-1]['ImageId']
            elif prompt_index in [8]:
                config[prompt['id']] = resource_list[int(response)-1]['ImageId']
            elif prompt_index in [9]:
                config[prompt['id']] = resource_list[int(response)-1]['ImageId']
            elif prompt_index in [10, 11]:
                config[prompt['id']] = resource_list[int(response)-1]['ImageId']
        else:
            if prompt_index == 1 and not response.rstrip():
                config[prompt['id']] = 't2.micro'  # default to t2.micro if blank entry
            elif prompt_index == 5 and not response.rstrip():
                config[prompt['id']] = 30  # default to 30GB for volume if left blank
            else:
                config[prompt['id']] = response.strip()
    json.dump(config, open(conf_file, 'w'))