1+ import * as utils from "../../common/utils.js" ;
2+ import { z } from "zod" ;
3+
4+ // 定义VM部署单相关的Zod模式
5+ export const DeployOrderMachineActionSchema = z . object ( {
6+ type : z . string ( ) . nullable ( ) . optional ( ) . describe ( "类型 RetryVMDeployMachine重试机器部署 SkipVMDeployMachine跳过机器部署 LogVMDeployMachine查看机器部署日志" ) ,
7+ disable : z . boolean ( ) . nullable ( ) . optional ( ) . describe ( "当前用户是否有权限进行后续 action" ) ,
8+ params : z . object ( { } ) . nullable ( ) . optional ( ) . describe ( "参数" ) ,
9+ } ) ;
10+
11+ export const DeployOrderMachineSchema = z . object ( {
12+ createTime : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "创建时间" ) ,
13+ updateTime : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "更新时间" ) ,
14+ status : z . string ( ) . nullable ( ) . optional ( ) . describe ( "状态 Success成功 Pending待部署 Running部署中 Cancelled取消 Queued部署等待中 Failed失败 Skipped已跳过" ) ,
15+ machineSn : z . string ( ) . nullable ( ) . optional ( ) . describe ( "机器sn" ) ,
16+ clientStatus : z . string ( ) . nullable ( ) . optional ( ) . describe ( "机器状态 ok(正常) error(连接失败)" ) ,
17+ ip : z . string ( ) . nullable ( ) . optional ( ) . describe ( "机器ip" ) ,
18+ batchNum : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "部署批次" ) ,
19+ actions : z . array ( DeployOrderMachineActionSchema ) . nullable ( ) . optional ( ) . describe ( "操作列表" ) ,
20+ } ) ;
21+
22+ export const DeployOrderDeployMachinesSchema = z . object ( {
23+ hostGroupId : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "主机组Id" ) ,
24+ batchNum : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "发布批次" ) ,
25+ deployMachines : z . array ( DeployOrderMachineSchema ) . nullable ( ) . optional ( ) . describe ( "部署机器列表" ) ,
26+ } ) ;
27+
28+ export const DeployOrderActionSchema = z . object ( {
29+ type : z . string ( ) . nullable ( ) . optional ( ) . describe ( "类型 StopVMDeployOrder 取消部署单 ResumeVMDeployOrder 继续部署单运行" ) ,
30+ disable : z . boolean ( ) . nullable ( ) . optional ( ) . describe ( "当前用户是否有权限进行后续 action" ) ,
31+ params : z . object ( { } ) . nullable ( ) . optional ( ) . describe ( "参数" ) ,
32+ } ) ;
33+
34+ export const DeployOrderSchema = z . object ( {
35+ deployOrderId : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "部署单id" ) ,
36+ createTime : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "创建时间" ) ,
37+ updateTime : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "更新时间" ) ,
38+ creator : z . string ( ) . nullable ( ) . optional ( ) . describe ( "创建人" ) ,
39+ currentBatch : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "当前发布批次" ) ,
40+ totalBatch : z . number ( ) . int ( ) . nullable ( ) . optional ( ) . describe ( "总发布批次" ) ,
41+ status : z . string ( ) . nullable ( ) . optional ( ) . describe ( "发布状态 Waiting暂停 Running部署中 Cancelled已取消 Success成功" ) ,
42+ exceptionCode : z . string ( ) . nullable ( ) . optional ( ) . describe ( "错误码" ) ,
43+ actions : z . array ( DeployOrderActionSchema ) . nullable ( ) . optional ( ) . describe ( "操作列表" ) ,
44+ deployMachineInfo : DeployOrderDeployMachinesSchema . nullable ( ) . optional ( ) . describe ( "部署机器信息" ) ,
45+ } ) ;
46+
47+ export const DeployOrderLogSchema = z . object ( {
48+ deployLog : z . string ( ) . nullable ( ) . optional ( ) . describe ( "部署日志" ) ,
49+ aliyunRegion : z . string ( ) . nullable ( ) . optional ( ) . describe ( "部署地域" ) ,
50+ deployLogPath : z . string ( ) . nullable ( ) . optional ( ) . describe ( "部署日志路径" ) ,
51+ deployBeginTime : z . string ( ) . nullable ( ) . optional ( ) . describe ( "部署开始时间" ) ,
52+ deployEndTime : z . string ( ) . nullable ( ) . optional ( ) . describe ( "部署结束时间" ) ,
53+ } ) ;
54+
55+ // 定义API请求参数的Zod模式
56+ export const BaseVMDeployOrderSchema = z . object ( {
57+ organizationId : z . string ( ) . describe ( "企业Id" ) ,
58+ pipelineId : z . string ( ) . describe ( "流水线Id" ) ,
59+ deployOrderId : z . string ( ) . describe ( "部署单Id" ) ,
60+ } ) ;
61+
62+ export const StopVMDeployOrderSchema = BaseVMDeployOrderSchema ;
63+
64+ export const SkipVMDeployMachineSchema = BaseVMDeployOrderSchema . extend ( {
65+ machineSn : z . string ( ) . describe ( "机器sn" ) ,
66+ } ) ;
67+
68+ export const RetryVMDeployMachineSchema = BaseVMDeployOrderSchema . extend ( {
69+ machineSn : z . string ( ) . describe ( "机器sn" ) ,
70+ } ) ;
71+
72+ export const ResumeVMDeployOrderSchema = BaseVMDeployOrderSchema ;
73+
74+ export const GetVMDeployOrderSchema = BaseVMDeployOrderSchema ;
75+
76+ export const GetVMDeployMachineLogSchema = BaseVMDeployOrderSchema . extend ( {
77+ machineSn : z . string ( ) . describe ( "机器sn" ) ,
78+ } ) ;
79+
80+ // 定义类型
81+ export type DeployOrderMachineAction = z . infer < typeof DeployOrderMachineActionSchema > ;
82+ export type DeployOrderMachine = z . infer < typeof DeployOrderMachineSchema > ;
83+ export type DeployOrderDeployMachines = z . infer < typeof DeployOrderDeployMachinesSchema > ;
84+ export type DeployOrderAction = z . infer < typeof DeployOrderActionSchema > ;
85+ export type DeployOrder = z . infer < typeof DeployOrderSchema > ;
86+ export type DeployOrderLog = z . infer < typeof DeployOrderLogSchema > ;
87+ export type StopVMDeployOrderParams = z . infer < typeof StopVMDeployOrderSchema > ;
88+ export type SkipVMDeployMachineParams = z . infer < typeof SkipVMDeployMachineSchema > ;
89+ export type RetryVMDeployMachineParams = z . infer < typeof RetryVMDeployMachineSchema > ;
90+ export type ResumeVMDeployOrderParams = z . infer < typeof ResumeVMDeployOrderSchema > ;
91+ export type GetVMDeployOrderParams = z . infer < typeof GetVMDeployOrderSchema > ;
92+ export type GetVMDeployMachineLogParams = z . infer < typeof GetVMDeployMachineLogSchema > ;
93+
94+ /**
95+ * 终止机器部署
96+ * @param organizationId 企业Id
97+ * @param pipelineId 流水线Id
98+ * @param deployOrderId 部署单Id
99+ * @returns 是否成功
100+ */
101+ export async function stopVMDeployOrderFunc (
102+ organizationId : string ,
103+ pipelineId : string ,
104+ deployOrderId : string
105+ ) : Promise < boolean > {
106+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } /stop` ;
107+
108+ const response = await utils . yunxiaoRequest ( url , {
109+ method : "PUT" ,
110+ } ) ;
111+
112+ return Boolean ( response ) ;
113+ }
114+
115+ /**
116+ * 跳过机器部署
117+ * @param organizationId 企业Id
118+ * @param pipelineId 流水线Id
119+ * @param deployOrderId 部署单Id
120+ * @param machineSn 机器sn
121+ * @returns 是否成功
122+ */
123+ export async function skipVMDeployMachineFunc (
124+ organizationId : string ,
125+ pipelineId : string ,
126+ deployOrderId : string ,
127+ machineSn : string
128+ ) : Promise < boolean > {
129+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } /machine/${ machineSn } /skip` ;
130+
131+ const response = await utils . yunxiaoRequest ( url , {
132+ method : "PUT" ,
133+ } ) ;
134+
135+ return Boolean ( response ) ;
136+ }
137+
138+ /**
139+ * 重试机器部署
140+ * @param organizationId 企业Id
141+ * @param pipelineId 流水线Id
142+ * @param deployOrderId 部署单Id
143+ * @param machineSn 机器sn
144+ * @returns 是否成功
145+ */
146+ export async function retryVMDeployMachineFunc (
147+ organizationId : string ,
148+ pipelineId : string ,
149+ deployOrderId : string ,
150+ machineSn : string
151+ ) : Promise < boolean > {
152+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } /machine/${ machineSn } /retry` ;
153+
154+ const response = await utils . yunxiaoRequest ( url , {
155+ method : "PUT" ,
156+ } ) ;
157+
158+ return Boolean ( response ) ;
159+ }
160+
161+ /**
162+ * 继续部署单运行
163+ * @param organizationId 企业Id
164+ * @param pipelineId 流水线Id
165+ * @param deployOrderId 部署单Id
166+ * @returns 是否成功
167+ */
168+ export async function resumeVMDeployOrderFunc (
169+ organizationId : string ,
170+ pipelineId : string ,
171+ deployOrderId : string
172+ ) : Promise < boolean > {
173+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } /resume` ;
174+
175+ const response = await utils . yunxiaoRequest ( url , {
176+ method : "PUT" ,
177+ } ) ;
178+
179+ return Boolean ( response ) ;
180+ }
181+
182+ /**
183+ * 获取部署单详情
184+ * @param organizationId 企业Id
185+ * @param pipelineId 流水线id
186+ * @param deployOrderId 部署Id
187+ * @returns 部署单详情
188+ */
189+ export async function getVMDeployOrderFunc (
190+ organizationId : string ,
191+ pipelineId : string ,
192+ deployOrderId : string
193+ ) : Promise < DeployOrder > {
194+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } ` ;
195+
196+ const response = await utils . yunxiaoRequest ( url , {
197+ method : "GET" ,
198+ } ) ;
199+
200+ return DeployOrderSchema . parse ( response ) ;
201+ }
202+
203+ /**
204+ * 查询机器部署日志
205+ * @param organizationId 企业Id
206+ * @param pipelineId 流水线Id
207+ * @param deployOrderId 部署单Id
208+ * @param machineSn 机器sn
209+ * @returns 机器部署日志
210+ */
211+ export async function getVMDeployMachineLogFunc (
212+ organizationId : string ,
213+ pipelineId : string ,
214+ deployOrderId : string ,
215+ machineSn : string
216+ ) : Promise < DeployOrderLog > {
217+ const url = `/oapi/v1/flow/organizations/${ organizationId } /pipelines/${ pipelineId } /deploy/${ deployOrderId } /machine/${ machineSn } /log` ;
218+
219+ const response = await utils . yunxiaoRequest ( url , {
220+ method : "GET" ,
221+ } ) ;
222+
223+ return DeployOrderLogSchema . parse ( response ) ;
224+ }
0 commit comments