o
    #j>                     @   sD   d Z ddlZddlmZ ddlmZ ddlmZ G dd deZdS )z
AIHC service client module.
    N)Optional)http_methods)AIHCBaseClientc                   @   sx  e Zd ZdZ				d1dee dee dee dee fddZd	efd
dZd	efddZ		d2de
dee fddZd	efddZ	d2d	ede
dee fddZd	edefddZd	edefddZd	efddZd	edefd d!Zd	eded"efd#d$Z	d2d	ed%ed&efd'd(Zd	efd)d*Z					d3d	ed+ee dee dee dee dee fd,d-Zd.efd/d0ZdS )4ServiceClientu!   在线服务相关接口客户端N
pageNumberpageSizeorderByorderc                 C   sB   d}d||d}|dur||d< |dur||d< | j tj||dS )u  
        拉取服务列表。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Imb4v5905

        Args:
            pageNumber: 页码，从1开始（可选，Query参数）
            pageSize: 分页大小，默认为10（可选，Query参数）
            orderBy: 排序字段，暂时只支持创建时间createdAt（可选，Query参数）
            order: 排序方式，asc或desc，默认desc（可选，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 服务列表及总数

        Raises:
            BceHttpClientError: 当API调用失败时抛出
            BceServerError: 当服务器返回错误时抛出
           /DescribeServices)actionr   r   Nr   r	   params_send_requestr   GET)selfr   r   r   r	   pathr    r   v/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/services/aihc/modules/service/service_client.pyr      s   zServiceClient.DescribeServices	serviceIdc                 C       d}d|d}| j tj||dS )uf  
        查询服务详情。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/4mb4v7wn5

        serviceId: 服务ID（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 服务详情

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServicer   r   r   r   r   r   r   r   r   r   r   r   C   s   zServiceClient.DescribeServicec                 C   r   )u~  
        获取服务状态。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/dmb4v6oh0

        Args:
            serviceId: 服务ID（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 服务状态信息

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServiceStatusr   r   r   r   r   r   r   r   ]   s   z#ServiceClient.DescribeServiceStatusserviceConfclientTokenc                 C   s6   d}ddi}|dur||d< | j tj|t||dS )u  
        创建在线服务。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Imb4uf20u

        Args:
            clientToken: clientToken保证请求的幂等性（可选，Query参数）
            serviceConf: 服务配置（必填，Body参数，详见ServiceConf结构），包含：
                - name: 服务名称（必填）
                - acceleratorType: 加速芯片类型（必填）
                - workloadType: 负载类型（必填）
                - instanceCount: 部署实例数（必填）
                - resourcePool: 资源池描述（必填，ResourcePoolConf结构）
                - containers: 服务容器信息（必填，Array of ContainerConf）
                - storage: 存储卷、共享内存配置（可选，StorageConf结构）
                - access: 服务访问配置信息（可选，AccessConf结构）
                - log: 日志配置（可选，LogConf结构）
                - deploy: 部署配置（可选，DeployConf结构）
                - misc: 实例label、annotations配置（可选，Misc结构）

        Returns:
            baidubce.bce_response.BceResponse: 创建结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   r   CreateServiceNr   bodyr   r   r   POSTjsondumps)r   r   r   r   r   r   r   r   r   x   s    zServiceClient.CreateServicec                 C   r   )uf  
        删除在线服务。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/xxxxx

        Args:
            serviceId: 服务ID（必填）

        Returns:
            baidubce.bce_response.BceResponse: 删除结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DeleteServicer   r   r   r   r"   r   r   r   r   r%         zServiceClient.DeleteServicedescriptionc                 C   s8   d}d|d}|dur||d< | j tj|t||dS )u/  
        升级在线服务。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Zmb4v974k

        Args:
            serviceId: 服务ID（必填，Query参数）
            serviceConf: 与创建参数一致，但不允许修改网络配置，当前支持修改的字段如下：（可选，Body参数）
            - acceleratorType: 加速芯片类型（必填）
            - instanceCount: 部署实例数，取值>=0（必填）
            - storage: 存储卷、共享内存配置（可选）
            - containers: 服务容器信息，最少需要1个，最多10个（必填）
            - log: 日志配置（可选）
            - deploy: 部署配置，默认为最大超量和最大不可用均为25%（可选）
            - misc: 实例label、annotations配置（可选）
            description: 描述（可选，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 修改结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   ModifyServicer   Nr(   r   r!   )r   r   r   r(   r   r   r   r   r   r)      s   zServiceClient.ModifyServiceinstanceCountc                 C   "   d}d||d}| j tj||dS )u  
        服务扩缩容。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/4mb4vaipm

        Args:
            serviceId: 服务ID（必填，Query参数）
            instanceCount: 实例数量（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 扩缩容结果

        Raises:
            BceHttpClientError: 当API调用失败时抛出
            BceServerError: 当服务器返回错误时抛出
        r
   ModifyServiceReplicas)r   r   r*   r   r&   )r   r   r*   r   r   r   r   r   r,         z#ServiceClient.ModifyServiceReplicas	versionIdc                 K   s4   d}d|d}d|i|}| j tj|t||dS )u@  
        升级服务。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/xxxxx

        Args:
            serviceId: 服务ID（必填）
            versionId: 版本ID（必填）
            **kwargs: 其他升级参数

        Returns:
            baidubce.bce_response.BceResponse: 升级结果
        r
   UpgradeServicer   r.   r   r!   )r   r   r.   kwargsr   r   r    r   r   r   r/     s   zServiceClient.UpgradeServicec                 C   r   )u  
        拉取服务pod列表。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/cmb4vggnt

        Args:
            serviceId: 服务ID（必填）

        Returns:
            baidubce.bce_response.BceResponse: 服务pod列表

        Raises:
            Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServicePodsr   r   r   r   r   r   r   r1   9  s   z!ServiceClient.DescribeServicePods
instanceIdc                 C   r+   )u  
        删除Pod并重建。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Hmb4vjh24

        Args:
            serviceId: 服务ID（必填，Query参数）
            instanceId: Pod实例ID（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: Pod删除结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DeleteServicePod)r   r   r2   r   r&   )r   r   r2   r   r   r   r   r   r3   Y  r-   zServiceClient.DeleteServicePodblockc                 C   s$   d}d|||d}| j tj||dS )u  
        摘除Pod流量。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/5mb4vhz0a

        Args:
            serviceId: 服务ID（必填，Query参数）
            instanceId: Pod实例ID（必填，Query参数）
            block: 是否阻塞等待（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: Pod流量摘除结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DisableServicePod)r   r   r2   r4   r   r&   )r   r   r2   r4   r   r   r   r   r   r5   {  s   zServiceClient.DisableServicePodpublicAccesseipc                 C   s2   d}d||d}|dur||d< | j tj||dS )u!  
        配置公网访问。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Gmb4vgurj

        Args:
            serviceId: 服务ID（必填，Query参数）
            publicAccess: 是否开启公网访问（必填，Query参数）
            eip: 弹性公网IP（可选，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 公网访问配置结果

        Raises:
            BceHttpClientError: 当API调用失败时抛出
            BceServerError: 当服务器返回错误时抛出
        r
   ModifyServiceNetConfig)r   r   r6   Nr7   r   r&   )r   r   r6   r7   r   r   r   r   r   r8     s   z$ServiceClient.ModifyServiceNetConfigc                 C   r   )u~  
        获取实例组列表。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Xmb4vkxbb

        Args:
            serviceId: 服务ID（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 实例组列表

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServicePodGroupsr   r   r   r   r   r   r   r9     r'   z&ServiceClient.DescribeServicePodGroups
changeTypec           	      C   sT   d}d|||d}|dur||d< |dur!|dur!||d< ||d< | j tj||dS )	u]  
        拉取服务变更记录。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/Zmb4vcylp

        Args:
            serviceId: 服务ID（必填，Query参数）
            changeType: 变更类型，1:创建 2:更新 3:扩缩容 4:流量接入变更（可选，Query参数）
            order: 排序方式，asc或desc，需与orderBy同时使用（可选，Query参数）
            orderBy: 排序字段，目前仅支持createdAt，需与order同时使用（可选，Query参数）
            pageNumber: 页码，默认1（可选，Query参数）
            pageSize: 每页数量，默认10（可选，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 服务变更记录列表

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServiceChangelogs)r   r   r   r   Nr:   r	   r   r   r   )	r   r   r:   r	   r   r   r   r   r   r   r   r   r;     s    z'ServiceClient.DescribeServiceChangelogschangeIdc                 C   r   )u  
        查询服务变更详情。

        参考文档：https://cloud.baidu.com/doc/AIHC/s/xmb4ve6i2

        Args:
            changeId: 变更记录ID（必填，Query参数）

        Returns:
            baidubce.bce_response.BceResponse: 服务变更详情

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r
   DescribeServiceChangelog)r   r<   r   r   )r   r<   r   r   r   r   r   r=     r'   z&ServiceClient.DescribeServiceChangelog)NNNN)N)NNNNN)__name__
__module____qualname____doc__r   intstrr   r   r   dictr   r%   r)   r,   r/   r1   r3   boolr5   r8   r9   r;   r=   r   r   r   r   r      s    
)
.
#
-
"
%
 
"
)
&
"
0r   )	rA   r#   typingr   Zbaidubce.httpr   Z,baidubce.services.aihc.base.aihc_base_clientr   r   r   r   r   r   <module>   s   