Fix 500 Internal Server Error: correct server initialization and models
Browse files- server/app.py +3 -2
- server/models.py +7 -3
server/app.py
CHANGED
|
@@ -6,6 +6,7 @@ from openenv_core.env_server import create_fastapi_app
|
|
| 6 |
from .models import CloudAction, CloudObservation
|
| 7 |
from .environment import CloudAuditEnv
|
| 8 |
from typing import Any, Dict
|
|
|
|
| 9 |
import os
|
| 10 |
import sys
|
| 11 |
|
|
@@ -13,7 +14,7 @@ import sys
|
|
| 13 |
env = CloudAuditEnv()
|
| 14 |
|
| 15 |
# Create the FastAPI app using openenv-core
|
| 16 |
-
app = create_fastapi_app(
|
| 17 |
|
| 18 |
@app.exception_handler(Exception)
|
| 19 |
async def general_exception_handler(request: Request, exc: Exception):
|
|
@@ -41,7 +42,7 @@ async def reset_with_task(request: Dict[str, Any] = Body(default={})) -> Dict[st
|
|
| 41 |
"""Reset the environment, forwarding task_id from the request body."""
|
| 42 |
task_id = request.get("task_id", "easy")
|
| 43 |
observation = env.reset(task_id=task_id)
|
| 44 |
-
return
|
| 45 |
|
| 46 |
# Add custom routes for the UI
|
| 47 |
static_dir = os.path.join(os.path.dirname(__file__), "static")
|
|
|
|
| 6 |
from .models import CloudAction, CloudObservation
|
| 7 |
from .environment import CloudAuditEnv
|
| 8 |
from typing import Any, Dict
|
| 9 |
+
from dataclasses import asdict
|
| 10 |
import os
|
| 11 |
import sys
|
| 12 |
|
|
|
|
| 14 |
env = CloudAuditEnv()
|
| 15 |
|
| 16 |
# Create the FastAPI app using openenv-core
|
| 17 |
+
app = create_fastapi_app(env, CloudAction, CloudObservation)
|
| 18 |
|
| 19 |
@app.exception_handler(Exception)
|
| 20 |
async def general_exception_handler(request: Request, exc: Exception):
|
|
|
|
| 42 |
"""Reset the environment, forwarding task_id from the request body."""
|
| 43 |
task_id = request.get("task_id", "easy")
|
| 44 |
observation = env.reset(task_id=task_id)
|
| 45 |
+
return asdict(observation)
|
| 46 |
|
| 47 |
# Add custom routes for the UI
|
| 48 |
static_dir = os.path.join(os.path.dirname(__file__), "static")
|
server/models.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
from enum import Enum
|
| 2 |
from typing import List, Optional, Dict, Any
|
| 3 |
-
from pydantic import
|
|
|
|
| 4 |
|
| 5 |
class CloudActionType(str, Enum):
|
| 6 |
LIST = "list"
|
|
@@ -9,7 +10,8 @@ class CloudActionType(str, Enum):
|
|
| 9 |
LOGS = "logs"
|
| 10 |
SUBMIT = "submit"
|
| 11 |
|
| 12 |
-
|
|
|
|
| 13 |
action: CloudActionType
|
| 14 |
resource_type: Optional[str] = None
|
| 15 |
resource_id: Optional[str] = None
|
|
@@ -17,8 +19,10 @@ class CloudAction(BaseModel):
|
|
| 17 |
start_time: Optional[str] = None
|
| 18 |
end_time: Optional[str] = None
|
| 19 |
answer: Optional[str] = None
|
|
|
|
| 20 |
|
| 21 |
-
|
|
|
|
| 22 |
resources: Optional[List[Dict[str, Any]]] = None
|
| 23 |
details: Optional[Dict[str, Any]] = None
|
| 24 |
status: Optional[str] = None
|
|
|
|
| 1 |
from enum import Enum
|
| 2 |
from typing import List, Optional, Dict, Any
|
| 3 |
+
from pydantic.dataclasses import dataclass
|
| 4 |
+
from pydantic import ConfigDict, BaseModel
|
| 5 |
|
| 6 |
class CloudActionType(str, Enum):
|
| 7 |
LIST = "list"
|
|
|
|
| 10 |
LOGS = "logs"
|
| 11 |
SUBMIT = "submit"
|
| 12 |
|
| 13 |
+
@dataclass(config=ConfigDict(arbitrary_types_allowed=True))
|
| 14 |
+
class CloudAction:
|
| 15 |
action: CloudActionType
|
| 16 |
resource_type: Optional[str] = None
|
| 17 |
resource_id: Optional[str] = None
|
|
|
|
| 19 |
start_time: Optional[str] = None
|
| 20 |
end_time: Optional[str] = None
|
| 21 |
answer: Optional[str] = None
|
| 22 |
+
metadata: Optional[Dict[str, Any]] = None
|
| 23 |
|
| 24 |
+
@dataclass(config=ConfigDict(arbitrary_types_allowed=True))
|
| 25 |
+
class CloudObservation:
|
| 26 |
resources: Optional[List[Dict[str, Any]]] = None
|
| 27 |
details: Optional[Dict[str, Any]] = None
|
| 28 |
status: Optional[str] = None
|