o
    #jIE                     @   sX  d Z ddlmZmZ G dd deZG dd deZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZd+S ),z
AIHC service model module.
    )ListOptionalc                           e Zd ZdZ fddZ  ZS )ResourcePoolConfu  
    资源池配置信息
    Attributes:
        resourcePoolId (str): 资源池ID，托管资源池固定为'aihc-serverless'
        queueName (str): 队列名称
        resourcePoolType (str): 资源池类型，可选值：
            - "" (空字符串): 自运维资源池
            - "serverless": 全托管资源池
            - "public": 预留字段（暂未使用）
        resourcePoolName (str): 资源池名称（托管资源池可不填）
    c                    s.   t    || d< || d< || d< || d< d S )NresourcePoolId	queueNameresourcePoolTyperesourcePoolNamesuper__init__)selfr   r   r   r	   	__class__ u/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/services/aihc/modules/service/service_model.pyr   !   s
   
zResourcePoolConf.__init____name__
__module____qualname____doc__r   __classcell__r   r   r   r   r      s    r   c                       r   )	PFSConfigu   
    PFS存储配置（专用文件存储服务）
    Attributes:
        sourcePath (str): PFS中的源路径（如"/dataset/images"）
        InstanceId (str): PFS实例ID（如"pfs-12345"）
    c                       t    || d< || d< d S )N
sourcePath
InstanceIdr
   )r   r   r   r   r   r   r   7      
zPFSConfig.__init__r   r   r   r   r   r   /       r   c                       r   )
VolumnConfuq  
    存储卷配置
    Attributes:
        volumeType (str): 存储类型，可选值：
            - "pfs": PFS存储
            - "hostpath": 主机路径
            - "emptydir": 临时目录
        volumnName (str): 卷名称（需满足^[a-z][a-z0-9-]*[a-z0-9]$）
        pfs (Optional[dict]): 当volumeType为pfs时必填（PFSConfig转换的字典）
    c                    s2   t    || d< || d< |d ur|| d< d S d S )N
volumeType
volumnNamepfsr
   )r   r   r    r!   r   r   r   r   I   s   
zVolumnConf.__init__r   r   r   r   r   r   =       r   c                       r   )StorageConfu   存储资源配置
    Attributes:
        shmSize (Optional[int]): 共享内存大小（单位GiB），不配置默认为0
        volumns (Optional[List[dict]]): 存储卷配置列表（VolumnConf转换的字典）
    c                    2   t    |d ur|| d< |d ur|| d< d S d S )NshmSizevolumnsr
   )r   r%   r&   r   r   r   r   ]      
zStorageConf.__init__r   r   r   r   r   r#   V       r#   c                       r   )	ImageConfu  容器镜像配置
    Attributes:
        imageType (int): 镜像类型：
            - 0: 预置镜像
            - 1: CCR镜像
            - 2: 其他镜像
        imageUrl (str): 镜像地址（如"registry.example.com/image:v1.0"）
        username (Optional[str]): 私有仓库用户名（非必填）
        password (Optional[str]): 私有仓库密码（非必填）
    c                    sB   t    || d< || d< |d ur|| d< |d ur|| d< d S d S )N	imageTypeimageUrlusernamepasswordr
   )r   r*   r+   r,   r-   r   r   r   r   u   s   
zImageConf.__init__r   r   r   r   r   r)   i   r"   r)   c                       r   )
ExecActionu   执行命令探针配置（通过在容器内执行命令检查健康状态）
    Attributes:
        command (list): 要执行的命令数组（如["/bin/sh", "-c", "echo ready"]）
    c                       t    || d< d S )Ncommandr
   )r   r0   r   r   r   r         
zExecAction.__init__r   r   r   r   r   r.          r.   c                       r   )HTTPGetActionu   HTTP请求探针配置（通过HTTP请求检查健康状态）
    Attributes:
        path (str): 请求路径（如"/healthz"）
        port (int): 请求端口号（如8080）
    c                    r   )Npathportr
   )r   r4   r5   r   r   r   r      r   zHTTPGetAction.__init__r   r   r   r   r   r3      r(   r3   c                       r   )TCPSocketActionu{   TCP端口探针配置（通过TCP连接检查健康状态）
    Attributes:
        port (int): 要检查的端口号
    c                    r/   )Nr5   r
   )r   r5   r   r   r   r      r1   zTCPSocketAction.__init__r   r   r   r   r   r6      r2   r6   c                       r   )ProbeHandlerConfu  健康检查处理器配置（三种检查方式三选一）
    Attributes:
        exec (Optional[dict]): 命令执行方式（ExecAction转换的字典）
        httpGet (Optional[dict]): HTTP请求方式（HTTPGetAction转换的字典）
        tcpSocketAction (Optional[dict]): TCP连接方式（TCPSocketAction转换的字典）
    Note:
        三种检查方式只能选择其中一种配置
    c                    sB   t    |d ur|| d< |d ur|| d< |d ur|| d< d S d S )NexechttpGettcpSocketActionr
   )r   _execr9   r:   r   r   r   r      s   
zProbeHandlerConf.__init__r   r   r   r   r   r7          	r7   c                       r   )	ProbeConfuC  健康检查探针配置
    Attributes:
        initialDelaySeconds (int): 初始化延迟时间（容器启动后等待多少秒开始检查）
        timeoutSeconds (int): 检查超时时间（每次检查等待的超时秒数）
        periodSeconds (int): 检查间隔时间（两次检查之间的间隔秒数）
        successThreshold (int): 成功阈值（连续成功多少次视为健康）
        failureThreshold (int): 失败阈值（连续失败多少次视为不健康）
        handler (dict): 检查处理器配置（ProbeHandlerConf转换的字典）
    c                    s>   t    || d< || d< || d< || d< || d< || d< d S )NinitialDelaySecondstimeoutSecondsperiodSecondssuccessThresholdfailureThresholdhandlerr
   )r   r>   r?   r@   rA   rB   rC   r   r   r   r      s   
	zProbeConf.__init__r   r   r   r   r   r=          
r=   c                       r   )ContainerConfu  
    容器运行配置
    Attributes:
        name (str): 容器名称（需满足^a-z0-9?$，长度<=63）
        cpus (int): CPU核数（必须>0）
        memory (int): 内存大小（单位GiB，必须>0）
        acceleratorCount (int): 加速卡数量（>=0）
        image (dict): 镜像配置（ImageConf转换的字典）
        command (Optional[list]): 容器启动命令（如["python", "app.py"]）
        runArgs (Optional[list]): 容器启动参数（如["--port=8080"]）
        ports (Optional[list]): 端口映射列表（如[{"name": "http", "containerPort": 80}]）
        envs (Optional[dict]): 环境变量（如{"LOG_LEVEL": "debug"}）
        volumeMounts (Optional[list]): 存储挂载配置
        readinessProbe (Optional[dict]): 就绪探针（ProbeConf转换的字典）
        startupsProbe (Optional[dict]): 启动探针（ProbeConf转换的字典）
        livenessProbe (Optional[dict]): 存活探针（ProbeConf转换的字典）
    c                    s   t    || d< || d< || d< || d< || d< |d ur!|| d< |d ur)|| d< |d ur1|| d< |	d ur9|	| d	< |
d urA|
| d
< |d urI|| d< |d urQ|| d< |d ur[|| d< d S d S )NnamecpusmemoryacceleratorCountimager0   runArgsportsenvsvolumeMountsreadinessProbestartupsProbelivenessProber
   )r   rF   rG   rH   rI   rJ   r0   rK   rL   rM   rN   rO   rP   rQ   r   r   r   r      s.   
zContainerConf.__init__r   r   r   r   r   rE      s    rE   c                       r   )AiGatewayConfu   
    AI网关配置（用于分布式推理服务）
    Attributes:
        enableAuth (bool): 是否开启鉴权（True/False）
    c                    r/   )N
enableAuthr
   )r   rS   r   r   r   r   !  r1   zAiGatewayConf.__init__r   r   r   r   r   rR     r(   rR   c                       r   )
AccessConfus  
    服务访问配置
    Attributes:
        publicAccess (Optional[bool]): 是否开启公网访问（默认False）
        eip (Optional[str]): 公网IP地址（开启公网且networkType为空时必填）
        aiGateway (Optional[dict]): 网关配置（AiGatewayConf转换的字典）
        networkType (Optional[str]): 网络类型（""或"aiGateway"）
    c                    sR   t    |d ur|| d< |d ur|| d< |d ur|| d< |d ur'|| d< d S d S )NpublicAccesseip	aiGatewaynetworkTyper
   )r   rU   rV   rW   rX   r   r   r   r   0  s   
zAccessConf.__init__r   r   r   r   r   rT   &  r<   rT   c                       s"   e Zd ZdZd fdd	Z  ZS )LogConfu   
    日志配置
    Attributes:
        persistent (Optional[bool]): 是否持久化容器标准输出日志（默认False）
    Nc                    s"   t    |d ur|| d< d S d S )N
persistentr
   )r   rZ   r   r   r   r   I  s   
zLogConf.__init__)Nr   r   r   r   r   rY   B  s    rY   c                       r   )CanaryStrategyConfu   
    金丝雀发布策略配置
    Attributes:
        maxSurge (Optional[int]): 最大超量百分比（如25表示25%）
        maxUnavailable (Optional[int]): 最大不可用百分比
    Note:
        maxSurge和maxUnavailable不能同时为0
    c                    r$   )NmaxSurgemaxUnavailabler
   )r   r\   r]   r   r   r   r   Y  r'   zCanaryStrategyConf.__init__r   r   r   r   r   r[   O  r<   r[   c                       r   )ScheduleConful   
    调度优先级配置
    Attributes:
        priority (str): 优先级（"high"/"normal"/"low"）
    c                    r/   )Npriorityr
   )r   r_   r   r   r   r   l  r1   zScheduleConf.__init__r   r   r   r   r   r^   e  r(   r^   c                       r   )
DeployConfu   
    部署策略配置
    Attributes:
        canaryStrategy (Optional[dict]): 金丝雀策略（CanaryStrategyConf转换的字典）
        schedule (Optional[dict]): 调度配置（ScheduleConf转换的字典）
    c                    r$   )NcanaryStrategyscheduler
   )r   ra   rb   r   r   r   r   y  r'   zDeployConf.__init__r   r   r   r   r   r`   q  r   r`   c                       r   )Miscu  
    Pod元数据配置
    Attributes:
        podLabels (Optional[dict]): Kubernetes Pod标签（如{"env":"prod"}）
        podAnnotations (Optional[dict]): Kubernetes Pod注解
        gracePeriodSec (Optional[int]): 优雅终止宽限期（秒）
        fedPodsPerIns (Optional[int]): 分布式部署时每组Pod实例数（>1）
        enableRDMA (Optional[bool]): 是否启用RDMA（远程直接内存访问）
    c                    sb   t    |d ur|| d< |d ur|| d< |d ur|| d< |d ur%|| d< |d ur/|| d< d S d S )N	podLabelspodAnnotationsgracePeriodSecfedPodsPerIns
enableRDMAr
   )r   rd   re   rf   rg   rh   r   r   r   r     s   
zMisc.__init__r   r   r   r   r   rc     rD   rc   c                       r   )ServiceConfu  
    服务部署配置（顶级配置）
    Attributes:
        name (str): 服务名称（需满足^[a-z][a-z0-9-]*[a-z0-9]$，长度<=50）
        acceleratorType (str): 加速芯片类型（如"A100"）
        workloadType (str): 工作负载类型（"fed"表示分布式，""表示单机）
        instanceCount (int): 实例数量（>=0）
        resourcePool (dict): 资源池配置（ResourcePoolConf转换的字典）
        containers (List[dict]): 容器配置列表（ContainerConf转换的字典，1-10个）
        storage (Optional[dict]): 存储配置（StorageConf转换的字典）
        access (Optional[dict]): 访问配置（AccessConf转换的字典）
        log (Optional[dict]): 日志配置（LogConf转换的字典）
        deploy (Optional[dict]): 部署策略（DeployConf转换的字典）
        misc (Optional[dict]): 元数据配置（Misc转换的字典）
    c                    s   t    || d< || d< || d< || d< || d< || d< |d ur%|| d< |d ur-|| d< |	d ur5|	| d	< |
d ur=|
| d
< |d urG|| d< d S d S )NrF   acceleratorTypeworkloadTypeinstanceCountresourcePool
containersstorageaccesslogdeploymiscr
   )r   rF   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   r   r   r   r     s$   
zServiceConf.__init__r   r   r   r   r   ri     s    ri   c                       r   )ModifyServiceConfu  
    服务修改配置（用于ModifyService接口）
    Attributes:
        name (str): 服务名称（必填）
        acceleratorType (str): 加速芯片类型（必填）
        instanceCount (int): 部署实例数，取值>=0（必填）
        storage (Optional[dict]): 存储卷、共享内存配置（可选）
        containers (List[dict]): 服务容器信息，最少需要1个，最多10个（必填）
        log (Optional[dict]): 日志配置（可选）
        deploy (Optional[dict]): 部署配置，默认为最大超量和最大不可用均为25%（可选）
        misc (Optional[dict]): 实例label、annotations配置（可选）
    c
           
         sz   t    || d< || d< || d< || d< || d< |d ur!|| d< |d ur)|| d< |d ur1|| d< |	d ur;|	| d	< d S d S )
NrF   rj   rl   rm   rn   ro   rq   rr   rs   r
   )
r   rF   rj   rl   rm   rn   ro   rq   rr   rs   r   r   r   r     s   
zModifyServiceConf.__init__r   r   r   r   r   rt     s    rt   N)r   typingr   r   dictr   r   r   r#   r)   r.   r3   r6   r7   r=   rE   rR   rT   rY   r[   r^   r`   rc   ri   rt   r   r   r   r   <module>   s,   < 3