Spaces:
Sleeping
Sleeping
| """CloudSense Pydantic models — all data structures for the RL environment.""" | |
| from enum import Enum | |
| from typing import Optional | |
| from pydantic import BaseModel, Field | |
| class ResourceType(str, Enum): | |
| ec2 = "ec2" | |
| rds = "rds" | |
| s3 = "s3" | |
| load_balancer = "load_balancer" | |
| kubernetes = "kubernetes" | |
| nat_gateway = "nat_gateway" | |
| elasticsearch = "elasticsearch" | |
| ebs = "ebs" | |
| eip = "eip" | |
| class Environment(str, Enum): | |
| prod = "prod" | |
| staging = "staging" | |
| dev = "dev" | |
| class ActionType(str, Enum): | |
| rightsize_resource = "rightsize_resource" | |
| terminate_resource = "terminate_resource" | |
| add_lifecycle_policy = "add_lifecycle_policy" | |
| enable_autoscaling = "enable_autoscaling" | |
| purchase_reservation = "purchase_reservation" | |
| change_storage_class = "change_storage_class" | |
| schedule_uptime = "schedule_uptime" | |
| request_more_info = "request_more_info" | |
| skip_resource = "skip_resource" | |
| class CloudResource(BaseModel): | |
| resource_id: str | |
| resource_type: ResourceType | |
| name: str | |
| environment: Environment | |
| region: str = "us-east-1" | |
| current_config: dict | |
| utilization: dict | |
| monthly_cost: float | |
| tags: dict = Field(default_factory=dict) | |
| has_backups: bool = False | |
| is_critical: bool = False | |
| dependencies: list[str] = Field(default_factory=list) | |
| usage_pattern: str = "always_on" | |
| subnet: Optional[str] = None | |
| class CloudAction(BaseModel): | |
| action_type: ActionType | |
| resource_id: str | |
| new_config: Optional[dict] = None | |
| reasoning: str = "" | |
| class CloudObservation(BaseModel): | |
| task_id: str | |
| goal: str | |
| account_id: str | |
| resources: list[dict] | |
| monthly_cost_current: float | |
| monthly_cost_optimized: float | |
| total_possible_savings: float | |
| actions_taken: list[dict] = Field(default_factory=list) | |
| warnings: list[str] = Field(default_factory=list) | |
| step_number: int = 0 | |
| max_steps: int = 10 | |
| last_reward: float = 0.0 | |
| last_action_error: Optional[str] = None | |
| info: dict = Field(default_factory=dict) | |
| class CloudReward(BaseModel): | |
| value: float = Field(ge=0.0, le=1.0) | |
| cost_saved: float = 0.0 | |
| cost_reduction_pct: float = 0.0 | |
| actions_correct: int = 0 | |
| actions_dangerous: int = 0 | |
| breakdown: dict = Field(default_factory=dict) | |
| done: bool = False | |
| class StepResult(BaseModel): | |
| observation: CloudObservation | |
| reward: float | |
| done: bool | |
| info: dict = Field(default_factory=dict) | |
| # Aliases following OpenEnv naming convention | |
| CloudSenseAction = CloudAction | |
| CloudSenseObservation = CloudObservation | |