mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-23 06:39:40 +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,38 +6,19 @@
|
|||
|
||||
"""Pydantic models for Providers API requests and responses.
|
||||
|
||||
This module defines the request and response models for the Providers 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 Any
|
||||
# Import and re-export shared models from admin
|
||||
from llama_stack_api.admin.models import (
|
||||
InspectProviderRequest,
|
||||
ListProvidersResponse,
|
||||
ProviderInfo,
|
||||
)
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from llama_stack_api.datatypes import HealthResponse
|
||||
from llama_stack_api.schema_utils import json_schema_type
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class ProviderInfo(BaseModel):
|
||||
"""Information about a registered provider including its configuration and health status."""
|
||||
|
||||
api: str = Field(..., description="The API name this provider implements")
|
||||
provider_id: str = Field(..., description="Unique identifier for the provider")
|
||||
provider_type: str = Field(..., description="The type of provider implementation")
|
||||
config: dict[str, Any] = Field(..., description="Configuration parameters for the provider")
|
||||
health: HealthResponse = Field(..., description="Current health status of the provider")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class ListProvidersResponse(BaseModel):
|
||||
"""Response containing a list of all available providers."""
|
||||
|
||||
data: list[ProviderInfo] = Field(..., description="List of provider information objects")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class InspectProviderRequest(BaseModel):
|
||||
"""Request model for inspecting a provider by ID."""
|
||||
|
||||
provider_id: str = Field(..., description="The ID of the provider to inspect.")
|
||||
__all__ = [
|
||||
"ProviderInfo",
|
||||
"ListProvidersResponse",
|
||||
"InspectProviderRequest",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue