def validate_hosts(ctx, param, host=None): """Callback to validate the hostname received as input. If we were not given a hostname, we first try to guess it via `utils.guess_host`. If this fails, we give up and throw an error. Otherwise we compare the provided/guessed host with the list of available templates. If the hostname matches the template name, we continue by returning the hostname. """ if host is None: host = utils.guess_host() if host is None: raise click.BadParameter( "Could not guess host. Please provide a value explicitly.", param_hint='"--host"', ) known_hosts = utils.get_possible_hosts() if host not in known_hosts: console.info("Could not find template for host '{}'.", host) utils.print_possible_hosts() # TODO: Raise some appropriate error here ctx.exit() return return host
def test_print_possible_hosts(capsys): """Assert that we the printing of available hosts works as expected.""" utils.print_possible_hosts() out, err = capsys.readouterr() assert out == 'Available host templates:\ndraco\nhydra\n'
def print_known_hosts(ctx, param, value): """Callback to print all available hosts to the user.""" if not value or ctx.resilient_parsing: return utils.print_possible_hosts() ctx.exit()