import base64 import click import requests from urllib.parse import quote from pillar_tool.schemas import HostCreateParams, HostgroupParams from pillar_tool.util import config, load_config, Config from pillar_tool.util.validation import split_and_validate_path, validate_fqdn cfg: Config | None = None _base_url: str | None = None _auth_header: dict[str, str] | None = None def auth_header(): global _auth_header return _auth_header def base_url(): global _base_url return _base_url @click.group("command") def main(): global cfg, _base_url, _auth_header # load the configuration and store it load_config() cfg = config() _base_url = f"{cfg.ptcli.scheme}://{cfg.ptcli.host}:{cfg.ptcli.port}" _auth_header = { 'Authorization': f"Basic {base64.b64encode(f"{cfg.ptcli.user}:{cfg.ptcli.password}".encode('utf-8')).decode('ascii')}" } # health check of the api try: response = requests.get(f"{_base_url}/health") response.raise_for_status() except requests.exceptions.HTTPError as e: raise click.ClickException(f"API seems to be unhealthy:\n{e}") except requests.exceptions.ConnectionError as e: raise click.ClickException("Unable to connect to PillarTool API")