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'))