Agentic-Reliability-Framework-API / app /models /infrastructure_intents.py
petter2025's picture
Upload folder using huggingface_hub
afa4de7 verified
raw
history blame
1.92 kB
from pydantic import BaseModel, Field, field_validator
from typing import Optional, Literal, List, Any, Dict
from agentic_reliability_framework.core.governance.intents import (
ResourceType,
PermissionLevel,
Environment,
ChangeScope,
)
class BaseIntentRequest(BaseModel):
environment: Environment
estimated_cost: Optional[float] = Field(None, ge=0)
policy_violations: List[str] = Field(default_factory=list)
requester: str = Field(...)
provenance: Dict[str, Any] = Field(default_factory=dict)
class ProvisionResourceRequest(BaseIntentRequest):
intent_type: Literal["provision_resource"] = "provision_resource"
resource_type: ResourceType
region: str
size: str
configuration: Dict[str, Any] = Field(default_factory=dict)
@field_validator("region")
def validate_region(cls, v):
return v
class GrantAccessRequest(BaseIntentRequest):
intent_type: Literal["grant_access"] = "grant_access"
principal: str
permission_level: PermissionLevel
resource_scope: str
justification: Optional[str] = None
@field_validator("resource_scope")
def validate_resource_scope(cls, v):
if not v.startswith("/"):
raise ValueError("Resource scope must start with '/'")
return v
class DeployConfigurationRequest(BaseIntentRequest):
intent_type: Literal["deploy_config"] = "deploy_config"
service_name: str
change_scope: ChangeScope
deployment_target: Environment
risk_level_hint: Optional[float] = Field(None, ge=0, le=1)
configuration: Dict[str, Any] = Field(default_factory=dict)
@field_validator("service_name")
def validate_service_name(cls, v):
if len(v) < 3:
raise ValueError("Service name must be at least 3 characters")
return v
InfrastructureIntentRequest = ProvisionResourceRequest | GrantAccessRequest | DeployConfigurationRequest