
# Ray作业接口应用示例
#### 概述
本文指导用户通过调用API的方式执行Ray作业完整流程，包括运行Ray作业、查询作业详情和取消作业运行等。
本流程假设终端租户已经在Console界面完成AI DataLake的服务授权，且已创建工作空间、计算资源和RayJob端点。API的调用方法请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0004.html)。
#### 前提条件
- 已获取待运行RayJob的工作空间ID。
- 已创建运行作业的计算资源。
- 已创建待运行作业的RayJob端点，并获取端点名称。
- RayJob端点已创建成功并处于"运行中"状态。
 
 #### 运行Ray作业
调用运行作业接口。同时记录接口返回的作业id。
- 请求示例 POST /v2/workspaces/{workspace_id}/ray-jobs
  {workspace_id}：工作空间ID，用于资源隔离。
  

- Body：
  ```
  {
      "name": "Ray-Test",
      "description": "description",
      "endpoint_name": "Ray-Test",
      "config": {
          "entrypoint": "python3 -m estimate_pi 1000000",
          "runtime_env": {
              "working_dir": "obs://ray-shared-csc/ray-job-code.zip", #需替换为作业脚本存储的obs路径，且必须为.zip文件
              "pip": [
                  "numpy=1.16.1"  # 可选值，填写值为涉及pip依赖库，若不涉及可不填
              ],
              "env_vars": {
                  "additionalProp1": "value1",  # 可选值，填写值为环境变量，若不涉及可不填
                  "additionalProp2": "value2",
                  "additionalProp3": "value3"
              }
          }
      }
  }
  ```
  
- 响应示例
  ```
  {
    "job_id" : "ac8111bf-3601-xxxx-xxxx-b41d3e636a4e"
  }
  ```
  
 
#### 查询作业详情
调用查询作业详情接口，查看作业的完整配置信息和执行结果。
- 请求示例 GET /v2/workspaces/{workspace_id}/ray-jobs/{job_id}
  - {workspace_id}：工作空间ID，用于资源隔离。
  
  - {job_id}：[运行Ray作业]里响应体中的"job_id"。
   

- 响应示例
  ```
  {
      "name": "Ray-Test",     
      "description": "description",    
      "config": {
          "entrypoint": "python3 -m estimate_pi 1000000",
          "runtime_env":{
              "working_dir":"obs://ray-shared-csc/ray-job-code.zip",           
              "pip": [
                  "numpy=1.16.1"  # 可选值，填写值为涉及pip依赖库，若不涉及可不填
              ],
              "env_vars": {
                  "additionalProp1": "value1",  # 可选值，填写值为环境变量，若不涉及可不填
                  "additionalProp2": "value2",
                  "additionalProp3": "value3"
              }
          },        
      },
      "endpoint_name": "Ray-Test", 
      "status": "QUEUED"  
  }
  ```
  
 
#### 取消作业运行
若作业执行异常需要终止，调用取消作业运行接口取消正在执行的作业。仅支持取消处于QUEUED或RUNNING状态的作业。
- 请求示例： POST /v2/workspaces/{workspace_id}/ray-jobs/{job_id}/cancel
  - {workspace_id}：工作空间ID，用于资源隔离。
  
  - {job_id}：[运行Ray作业]里响应体中的"job_id"。
   
- 响应示例
  ```
  {
    "id" : "ac8111bf-3601-xxxx-xxxx-b41d3e636a4e"
  }
  ```
  
 
