mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-27 18:50:41 +00:00
# What does this PR do? We now only print the 'active' routes, not all the possible routes. This is based on the distribution server config by looking at enabled APIs and their respective providers. Signed-off-by: Sébastien Han <seb@redhat.com>
82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the terms described in the LICENSE file in
|
|
# the root directory of this source tree.
|
|
|
|
from importlib.metadata import version
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from llama_stack.apis.inspect import (
|
|
HealthInfo,
|
|
Inspect,
|
|
ListRoutesResponse,
|
|
RouteInfo,
|
|
VersionInfo,
|
|
)
|
|
from llama_stack.distribution.datatypes import StackRunConfig
|
|
from llama_stack.distribution.server.endpoints import get_all_api_endpoints
|
|
from llama_stack.providers.datatypes import HealthStatus
|
|
|
|
|
|
class DistributionInspectConfig(BaseModel):
|
|
run_config: StackRunConfig
|
|
|
|
|
|
async def get_provider_impl(config, deps):
|
|
impl = DistributionInspectImpl(config, deps)
|
|
await impl.initialize()
|
|
return impl
|
|
|
|
|
|
class DistributionInspectImpl(Inspect):
|
|
def __init__(self, config: DistributionInspectConfig, deps):
|
|
self.config = config
|
|
self.deps = deps
|
|
|
|
async def initialize(self) -> None:
|
|
pass
|
|
|
|
async def list_routes(self) -> ListRoutesResponse:
|
|
run_config: StackRunConfig = self.config.run_config
|
|
|
|
ret = []
|
|
all_endpoints = get_all_api_endpoints()
|
|
for api, endpoints in all_endpoints.items():
|
|
# Always include provider and inspect APIs, filter others based on run config
|
|
if api.value in ["providers", "inspect"]:
|
|
ret.extend(
|
|
[
|
|
RouteInfo(
|
|
route=e.route,
|
|
method=e.method,
|
|
provider_types=[], # These APIs don't have "real" providers - they're internal to the stack
|
|
)
|
|
for e in endpoints
|
|
]
|
|
)
|
|
else:
|
|
providers = run_config.providers.get(api.value, [])
|
|
if providers: # Only process if there are providers for this API
|
|
ret.extend(
|
|
[
|
|
RouteInfo(
|
|
route=e.route,
|
|
method=e.method,
|
|
provider_types=[p.provider_type for p in providers],
|
|
)
|
|
for e in endpoints
|
|
]
|
|
)
|
|
|
|
return ListRoutesResponse(data=ret)
|
|
|
|
async def health(self) -> HealthInfo:
|
|
return HealthInfo(status=HealthStatus.OK)
|
|
|
|
async def version(self) -> VersionInfo:
|
|
return VersionInfo(version=version("llama-stack"))
|
|
|
|
async def shutdown(self) -> None:
|
|
pass
|