feat: 云厂商SDK适配层(Vultr/DO/Cloudflare/阿里云/腾讯云)+ 同步服务 + 测试连接/同步接口与前端

This commit is contained in:
gouki
2026-08-02 15:56:48 +00:00
parent cc7b2c67fe
commit 1aacf51bea
13 changed files with 930 additions and 3 deletions
+28 -1
View File
@@ -10,7 +10,8 @@ from app.core.seed import seed_providers
from app.database import get_session
from app.models.provider import ProviderCategory
from app.schemas.provider import ProviderCreate, ProviderRead, ProviderUpdate
from app.services import provider_service
from app.adapters import registry
from app.services import provider_service, sync_service
router = APIRouter(prefix="/api/providers", tags=["providers"])
@@ -25,6 +26,14 @@ def seed(session: Session = Depends(get_session)) -> dict:
return {"added": added}
@router.get("/adapters", summary="已支持的 SDK 适配器元信息")
def adapters() -> dict:
return {
"adapters": registry.adapter_meta(),
"supported_types": registry.supported_types(),
}
@router.get("", response_model=List[ProviderRead], summary="平台列表")
def list_providers(
category: Optional[ProviderCategory] = Query(default=None),
@@ -70,3 +79,21 @@ def update_provider(
)
def delete_provider(provider_id: int, session: Session = Depends(get_session)):
provider_service.delete_provider(session, provider_id)
@router.post(
"/{provider_id}/test",
summary="测试平台连接 / 凭证有效性",
dependencies=[Depends(require_api_key)],
)
def test_connection(provider_id: int, session: Session = Depends(get_session)) -> dict:
return sync_service.test_provider(session, provider_id)
@router.post(
"/{provider_id}/sync",
summary="同步平台资产到本地库",
dependencies=[Depends(require_api_key)],
)
def sync_assets(provider_id: int, session: Session = Depends(get_session)) -> dict:
return sync_service.sync_provider(session, provider_id)