o
    #jQ                     @   s8   d Z ddlZddlmZ ddlmZ G dd deZdS )z
AIHC job client module.
    N)http_methods)AIHCBaseClientc                   @   s   e Zd ZdZ									dddZ	dddZd	d
 Zdd Z		dddZ						d ddZ			dddZ
dd Zdd Z		dddZ										d!ddZ				d"ddZdS )#	JobClientu   任务相关接口客户端N   
   c                 C   s   d}d|d}|r||d< i }|dur||d< |dur||d< |dur'||d< |dur/||d	< |dur7||d
< |dur?||d< |	durG|	|d< |
durO|
|d< | j tj|t||dS )u  
        查询训练任务列表。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            queueID: 托管资源池需传入该参数，为队列Id（可选，Query参数）
            queue: 训练任务所属队列，通用资源池须填入队列名称，不填时返回所有。托管资源池须填入队列Id（可选，Body参数）
            status: 基于状态筛选任务（可选，Body参数）
            keywordType: 筛选关键字类型（可选，Body参数）
            keyword: 关键字值，当前仅支持name/queueName（可选，Body参数）
            orderBy: 排序字段，支持createdAt，finishedAt，默认为createdAt（可选，Body参数）
            order: 排序方式，可选 [asc, desc]，asc为升序，desc为降序，默认desc（可选，Body参数）
            pageNumber: 请求分页参数，表示第几页（可选，Body参数）
            pageSize: 单页结果数，默认值为10（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 返回训练任务列表

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
           /DescribeJobsactionresourcePoolIdqueueIDNqueuestatuskeywordTypekeywordorderByorder
pageNumberpageSizebodyparams_send_job_requestr   POSTjsondumps)selfr   r   r   r   r   r   r   r   r   r   pathr   r    r   n/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/services/aihc/modules/job/job_client.pyr      s:   %zJobClient.DescribeJobsc                 C   sB   d}d||d}d|i}|dur||d< | j tj|t||dS )u  
        查询训练任务详情。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            queueID: 训练任务所属队列，自运维资源池须填入队列名称，托管资源池须填入队列Id（必填，Query参数）
            jobId: 任务ID（必填，Body参数）
            needDetail: 是否需要详细信息（可选）

        Returns:
            baidubce.bce_response.BceResponse: 返回训练任务详情

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobr
   r   r   jobIdN
needDetailr   r   )r   r   r   r#   r$   r   r   r   r   r   r    r!   _   s   zJobClient.DescribeJobc                 C   0   d}d|d}d|i}| j tj|t||dS )uV  
        删除训练任务。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            jobId: string

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

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   	DeleteJobr	   r#   r   r   r   r   r#   r   r   r   r   r   r    r&      s   zJobClient.DeleteJobc                 C   s2   d}d|d}||d}| j tj|t||dS )u  
        更新训练任务。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            priority: 优先级（必填，Body参数），如 "normal"

        Returns:
            baidubce.bce_response.BceResponse: 更新任务结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   	ModifyJobr	   )r#   priorityr   r   )r   r   r#   r)   r   r   r   r   r   r    r(      s   zJobClient.ModifyJobc                 C   sP   d}d|d}d|i}|dur||d< |dur||d< | j tj|t||dS )	u  
        查询训练任务事件。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            startTime: 获取任务事件的起始时间（可选，Body参数）
            endTime: 获取任务事件的结束时间（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 训练任务事件结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobEventsr	   r#   N	startTimeendTimer   r   )r   r   r#   r+   r,   r   r   r   r   r   r    r*      s   zJobClient.DescribeJobEventsc
                 C   s   d}
d|d}d|i}|dur||d< |dur||d< |dur#||d< |dur+||d	< |dur3||d
< |dur;||d< |	durC|	|d< | j tj|
t||dS )u?  
        查询训练任务日志。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            podName: Pod名称（必填，Body参数）
            keywords: 日志查询关键字（可选，Body参数）
            startTime: 日志起始时间，Unix时间格式（可选，Body参数）
            endTime: 日志结束时间，Unix时间格式（可选，Body参数）
            maxLines：日志的最大行数（可选，Body参数）
            chunkSize: 日志聚合条数，默认1（可选，Body参数）
            marker: 日志查询标识符（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 日志查询结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobLogsr	   r#   NpodNamekeywordsr+   r,   maxLines	chunkSizemarkerr   r   )r   r   r#   r.   r/   r+   r,   r0   r1   r2   r   r   r   r   r   r    r-      s4   #zJobClient.DescribeJobLogsc           	      C   R   d}d|d}||d}|dur||d< |dur||d< | j tj|t||dS )	u9  
        查询训练任务Pod事件。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            podName: 训练任务节点名称（必填，Body参数）
            startTime: 事件起始时间，Unix时间格式（可选，Body参数）
            endTime: 事件结束时间，Unix时间格式（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: Pod事件查询结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   ZDescribePodEventsr	   r#   r.   Nr+   r,   r   r   )	r   r   r#   r.   r+   r,   r   r   r   r   r   r    DescribeJobPodEvents&  s"   zJobClient.DescribeJobPodEventsc                 C   r%   )u<  
        停止训练任务。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 停止任务结果

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   StopJobr	   r#   r   r   r'   r   r   r    r6   V     zJobClient.StopJobc                 C   r%   )uN  
        查询训练任务所在节点列表。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 节点名称列表

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobNodesr	   r#   r   r   r'   r   r   r    r8   v  r7   zJobClient.DescribeJobNodesc           	      C   r3   )	uF  
        获取训练任务WebTerminal地址。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            jobId: 训练任务ID（必填，Body参数）
            podName: 训练任务节点名称（必填，Body参数）
            handshakeTimeoutSecond: 连接超时参数，单位秒（可选，Body参数）
            pingTimeoutSecond: 心跳超时参数，单位秒（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: WebTerminal地址

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobWebterminalr	   r4   NhandshakeTimeoutSecondpingTimeoutSecondr   r   )	r   r   r#   r.   r:   r;   r   r   r   r   r   r    r9     s"   z JobClient.DescribeJobWebterminalc                 C   s   d}d||d}||||
|d}|dur||d< |dur ||d< |dur(||d< |	dur0|	|d	< |dur8||d
< |dur@||d< |durH||d< |durP||d< | j tj|t||dS )u  
        创建训练任务。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            queueID: 训练任务所属队列，通用资源池须填入队列名称，托管资源池须填入队列Id（必填，Query参数）
            name: 训练任务名称（必填，Body参数）
            command: 启动命令（必填，Body参数）
            jobSpec: 训练任务配置（必填，Body参数）
            jobType: 分布式框架，只支持 PyTorchJob（可选，Body参数，默认："PyTorchJob"）
            labels: 训练任务标签（可选，Body参数）
            priority: 调度优先级，支持高（high）、中（normal）、低（low）（可选，Body参数，默认："normal"）
            dataSources: 数据源配置，当前支持PFS（可选，Body参数）
            enableBccl: 是否开启BCCL自动注入（可选，Body参数，默认：False）
            faultTolerance: 是否开启容错（可选，Body参数，默认：False）
            faultToleranceArgs: 容错配置（可选，Body参数）
            tensorboardConfig: tensorboard相关配置（可选，Body参数）
            alertConfig: 告警相关配置（可选，Body参数）
            retentionPeriod: 任务保留时间，格式1m、1h、1d，分别代表一分钟、一小时、一天（可选，Body参数）

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

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   	CreateJobr"   )namecommandjobSpec
enableBcclfaultToleranceNjobTyper)   labelsZdatasourcesfaultToleranceArgstensorboardConfigalertConfigretentionPeriodr   r   )r   r   r   r=   r>   r?   rB   rC   r)   ZdataSourcesr@   rA   rD   rE   rF   rG   r   r   r   r   r   r    r<     sB   /zJobClient.CreateJobc	                 C   sZ   d}	d||d}
||d}||||d}| dd | D  | jtj|	t||
dS )	uu  
        查询训练任务监控。

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

        Args:
            resourcePoolId: 注意区分资源池类型，自运维资源池传递资源池唯一标识（示例：cce-1uji3ib5），托管资源池固定传递 aihc-serverless（必填）
            queueID: 任务所属队列，通用资源池须填入队列名称，托管资源池须填入队列Id（必填，Query参数）
            jobId: 任务ID（必填，Body参数）
            metricType: 查询监控数据的指标类型（必填，Body参数）
            startTime: 开始时间，Unix时间格式（可选，Body参数）
            endTime: 结束时间，Unix时间格式（可选，Body参数）
            timeStep: 返回监控数据的时间间隔（可选，Body参数）
            rateInterval: 指标变化周期频率，默认为5分钟（可选，Body参数）

        Returns:
            baidubce.bce_response.BceResponse: 返回训练任务指标数据

        Raises:
            ValueError: 当必填参数为空时
            TypeError: 当参数类型不匹配时
        r   DescribeJobMetricsr"   )r#   
metricType)r+   r,   timeSteprateIntervalc                 S   s   i | ]\}}|d ur||qS Nr   ).0kvr   r   r    
<dictcomp>J  s    z0JobClient.DescribeJobMetrics.<locals>.<dictcomp>r   )updateitemsr   r   r   r   r   )r   r   r   r#   rI   r+   r,   rJ   rK   r   r   r   Zoptional_boy_paramsr   r   r    rH     s(   !zJobClient.DescribeJobMetrics)	NNNNNNNr   r   rL   )NN)NNNNNN)
NNNNNNNNNN)NNNN)__name__
__module____qualname____doc__r   r!   r&   r(   r*   r-   r5   r6   r8   r9   r<   rH   r   r   r   r    r      sd    
K
&!
,
F
0 %
6
Yr   )rV   r   Zbaidubce.httpr   Z,baidubce.services.aihc.base.aihc_base_clientr   r   r   r   r   r    <module>   s
   