add new resolve_impls_with_routing

This commit is contained in:
Xi Yan 2024-09-20 11:36:55 -07:00
parent 9bb6ce54ff
commit 7d4135d5fd
3 changed files with 18 additions and 6 deletions

View file

@ -279,18 +279,18 @@ def snake_to_camel(snake_str):
async def resolve_impls_with_routing(
stack_run_config: StackRunConfig,
) -> Dict[Api, Any]:
raise NotImplementedError("This is not implemented yet")
async def resolve_impls(
stack_run_config: StackRunConfig,
provider_map: Dict[str, ProviderMapEntry],
) -> Dict[Api, Any]:
"""
Does two things:
- flatmaps, sorts and resolves the providers in dependency order
- for each API, produces either a (local, passthrough or router) implementation
"""
provider_map = stack_run_config.provider_map
all_providers = api_providers()
specs = {}
@ -338,9 +338,15 @@ def main(yaml_config: str, port: int = 5000, disable_ipv6: bool = False):
with open(yaml_config, "r") as fp:
config = StackRunConfig(**yaml.safe_load(fp))
cprint(f"StackRunConfig: {config}", "blue")
app = FastAPI()
impls, specs = asyncio.run(resolve_impls(config))
# check if routing table exists
if config.provider_routing_table is not None:
impls, specs = asyncio.run(resolve_impls_with_routing(config))
else:
impls, specs = asyncio.run(resolve_impls(config.provider_map))
if Api.telemetry in impls:
setup_logger(impls[Api.telemetry])