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).
Attributes
DEFAULT_PROVIDER = 'aws'
module-attribute
logger = logging.getLogger(__name__)
module-attribute
Classes
Functions:
get_provider(name, *, region, tofu_dir, connectivity=None)
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)
|