mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-23 10:22:36 +00:00
feat: introduce /admin API for stack administration and operations (#4401)
# What does this PR do?
- Add new /admin API (v1alpha) for administrative operations including
provider management, health checks, version info, and route listing
- Implement using FastAPI routers following batches pattern with proper
request/response models
- Endpoints: /admin/providers, /admin/providers/{id},
/admin/inspect/routes, /admin/health, /admin/version
- Create admin module structure: models.py, api.py, fastapi_routes.py,
init.py
- Add AdminImpl in llama_stack/core combining provider and inspect
functionality
- Deprecate standalone /providers and /inspect APIs (remain functional
for backward compatibility)
- Consolidate duplicate types: ProviderInfo, HealthInfo, RouteInfo, etc.
now defined once in admin.models
## Test Plan
new admin integration suite, uses generated stainless SDK, and records
new tests on this PR.
Signed-off-by: Charlie Doern <cdoern@redhat.com>
This commit is contained in:
parent
d684ec91cc
commit
258c52c84c
24 changed files with 3306 additions and 2078 deletions
|
|
@ -6,48 +6,23 @@
|
|||
|
||||
"""Pydantic models for Inspect API requests and responses.
|
||||
|
||||
This module defines the request and response models for the Inspect API
|
||||
using Pydantic with Field descriptions for OpenAPI schema generation.
|
||||
This module re-exports models from llama_stack_api.admin.models to ensure
|
||||
a single source of truth and avoid type conflicts.
|
||||
"""
|
||||
|
||||
from typing import Literal
|
||||
# Import and re-export shared models from admin
|
||||
from llama_stack_api.admin.models import (
|
||||
ApiFilter,
|
||||
HealthInfo,
|
||||
ListRoutesResponse,
|
||||
RouteInfo,
|
||||
VersionInfo,
|
||||
)
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from llama_stack_api.datatypes import HealthStatus
|
||||
from llama_stack_api.schema_utils import json_schema_type
|
||||
|
||||
# Valid values for the route filter parameter.
|
||||
# Actual API levels: v1, v1alpha, v1beta (filters by level, excludes deprecated)
|
||||
# Special filter value: "deprecated" (shows deprecated routes regardless of level)
|
||||
ApiFilter = Literal["v1", "v1alpha", "v1beta", "deprecated"]
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class RouteInfo(BaseModel):
|
||||
"""Information about an API route including its path, method, and implementing providers."""
|
||||
|
||||
route: str = Field(description="The API route path")
|
||||
method: str = Field(description="The HTTP method for the route")
|
||||
provider_types: list[str] = Field(description="List of provider types implementing this route")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class HealthInfo(BaseModel):
|
||||
"""Health status information for the service."""
|
||||
|
||||
status: HealthStatus = Field(description="The health status of the service")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class VersionInfo(BaseModel):
|
||||
"""Version information for the service."""
|
||||
|
||||
version: str = Field(description="The version string of the service")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class ListRoutesResponse(BaseModel):
|
||||
"""Response containing a list of all available API routes."""
|
||||
|
||||
data: list[RouteInfo] = Field(description="List of available API routes")
|
||||
__all__ = [
|
||||
"ApiFilter",
|
||||
"RouteInfo",
|
||||
"HealthInfo",
|
||||
"VersionInfo",
|
||||
"ListRoutesResponse",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue