iitian commited on
Commit
4ec2169
·
1 Parent(s): 547b872

Fix 500 Internal Server Error: correct server initialization and models

Browse files
Files changed (2) hide show
  1. server/app.py +3 -2
  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(lambda: env, CloudAction, CloudObservation)
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 observation.model_dump()
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 BaseModel, Field
 
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
- class CloudAction(BaseModel):
 
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
- class CloudObservation(BaseModel):
 
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