Initial commit: Vultr API v2 Python wrapper with FastAPI server
- vultr_api/: Python library wrapping Vultr API v2 - 17 resource modules (instances, dns, firewall, vpc, etc.) - Pagination support, error handling - server/: FastAPI REST server - All API endpoints exposed via HTTP - X-API-Key header authentication - Swagger docs at /docs - Podman quadlet config for systemd deployment Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
44
server/routers/plans.py
Normal file
44
server/routers/plans.py
Normal file
@@ -0,0 +1,44 @@
|
||||
"""Plans router"""
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from typing import Optional
|
||||
|
||||
from vultr_api import VultrClient
|
||||
from deps import get_client
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def list_plans(
|
||||
plan_type: Optional[str] = None, # vc2, vhf, vdc, etc.
|
||||
per_page: int = Query(25, le=500),
|
||||
cursor: Optional[str] = None,
|
||||
client: VultrClient = Depends(get_client)
|
||||
):
|
||||
"""List all cloud compute plans"""
|
||||
return client.plans.list(plan_type=plan_type, per_page=per_page, cursor=cursor)
|
||||
|
||||
|
||||
@router.get("/all")
|
||||
async def list_all_plans(
|
||||
plan_type: Optional[str] = None,
|
||||
client: VultrClient = Depends(get_client)
|
||||
):
|
||||
"""List all cloud compute plans (auto-paginated)"""
|
||||
return {"plans": client.plans.list_all(plan_type=plan_type)}
|
||||
|
||||
|
||||
@router.get("/bare-metal")
|
||||
async def list_bare_metal_plans(
|
||||
per_page: int = Query(25, le=500),
|
||||
cursor: Optional[str] = None,
|
||||
client: VultrClient = Depends(get_client)
|
||||
):
|
||||
"""List all bare metal plans"""
|
||||
return client.plans.list_bare_metal(per_page=per_page, cursor=cursor)
|
||||
|
||||
|
||||
@router.get("/bare-metal/all")
|
||||
async def list_all_bare_metal_plans(client: VultrClient = Depends(get_client)):
|
||||
"""List all bare metal plans (auto-paginated)"""
|
||||
return {"plans_metal": client.plans.list_all_bare_metal()}
|
||||
Reference in New Issue
Block a user