Exemplo n.º 1
0
def _ask_basebox():
    _title('Basebox')

    basebox_list = default_baseboxes

    # if we have a custom bucket, also use that
    bucket_baseboxes = []
    if basebox_bucket():
        bucket_baseboxes = list(set([
            '%s/%s' % (infra, box[:box.rfind('-')])
            for infra, boxes in baseboxes().iteritems()
            for box in boxes
        ]))
        basebox_list += bucket_baseboxes

    basebox_list.sort()

    selected_boxes = AerisCompletableList(basebox_list)
    prompt = AerisPrompt('> ', completer=selected_boxes)

    click.echo("""
You will now need to select a basebox to use for your project, we have small
selection of boxes available if you press TAB. It is recommended you use a
box that matches your production servers.

You can also enter any box you find on Atlas:
https://atlas.hashicorp.com/boxes/search?provider=virtualbox

If none is entered, %s will be selected as a default.
""" % (click.style(default_basebox, bold=True)))

    while True:
        basebox = prompt.get_input().strip()
        if basebox:
            if basebox not in bucket_baseboxes:
                if not _check_atlas_basebox(basebox):
                    continue
                return basebox, None
            else:
                return basebox, _fix_basebox_url(basebox_bucket())
        else:
            break

    return default_basebox, None
Exemplo n.º 2
0
def _ask_services(organization, enabled_services=None):
    """
    Ask the user which services to enable/disable, returns a list of services
    """
    service_list = list_services(organization)

    if not service_list:
        return []

    _title('Services')

    click.secho('You now will need to select what %s you would like to '
                'install, from the following list:' %
                style('services', bold=True))

    service_complete = _show_service_list(service_list, enabled_services)
    selected_services = AerisCompletableList(service_complete.keys(),
                                             service_complete)

    if enabled_services:
        for service in enabled_services:
            selected_services.select(service)

    click.echo('''
Which {0} do you wish to use? (autocomplete available)
You can enter {0} on different lines, or several on the same line separated \
by spaces.
'''.format(style('services', bold=True)))

    service_cli = AerisPrompt('> ', completer=selected_services)
    while True:
        if selected_services.selected:
            click.secho('''
Current enabled services: %s

Press %s to validate, or add another %s from the list.
You can remove a service from the list by putting a %s before its name.
''' % (
                style(','.join(selected_services.selected) or 'None',
                      fg='cyan'),
                style('ENTER', bold=True),
                style('service', bold=True),
                style('-', bold=True))
            )

        services_input = service_cli.get_input()

        if services_input:
            for service in services_input.strip().split(' '):
                if not service:
                    continue
                if service in service_list:
                    selected_services.select(service)
                elif service[0] == '-' \
                        and service[1:] in service_list:
                    selected_services.unselect(service[1:])
                else:
                    error('''%s was not recognized as a valid service.
Please enter a valid service.''' % service)
        else:
            break

    return selected_services.selected