Skip to content

lablink_allocator_service.providers.registry

Select a ComputeProvider by name. First-party providers are discovered via the lablink.providers entry-point group; built-in aws is always available even if entry-point metadata is missing (editable installs).

Source code in packages/allocator/src/lablink_allocator_service/providers/registry.py
def get_provider(
    name: str | None,
    *,
    region: str,
    tofu_dir: str,
    connectivity: str | None = None,
) -> ComputeProvider:
    name = name or DEFAULT_PROVIDER
    providers = _discover()
    cls = providers.get(name)
    if cls is None:
        raise ValueError(
            f"unknown provider '{name}'; available: {sorted(providers)}"
        )
    if name == "manual":
        conn_name = connectivity or "lan_direct"
        conn_cls = _CONNECTIVITY_BUILTIN.get(conn_name)
        if conn_cls is None:
            raise ValueError(
                f"unknown connectivity '{conn_name}'; "
                f"available: {sorted(_CONNECTIVITY_BUILTIN)}"
            )
        return cls(
            region=region,
            tofu_dir=tofu_dir,
            client_connectivity=conn_cls(),
        )
    return cls(region=region, tofu_dir=tofu_dir)