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_get_possible_hosts(): """Assert that we can retrieve the correct number of hosts. These are determined by the job files currently shipped with this package. """ hosts = utils.get_possible_hosts() assert isinstance(hosts, list) assert len(hosts) == 2