利用是非逻辑步骤构建循环用于查询任务状态
创建一个主机的工作流并非只是调用一个创建接口,我们还需要利用到循环的方式检测主机状态是否启动,是否真正的创建正常。
以下流程会引起一台1C1G云主机的资费产生,请用户知晓。
第一步 创建一个命名空间
第二步 创建一个工作流
第三步 调用创建主机的UAPI (CreateUHost)
括号内为步骤命名
选择“新增步骤”-“执行步骤”-“UHttpActivity”来创建一个UAPI服务。
第一次使用UHttpActivity服务时,会有短信验证获取用户的认证信息用于调用AutoAI 的API。
点击创建出的步骤并选择创建主机的接口“CreateUHostInstance”
根据API 文档填写必填字段,/api/uhost-api/create_uhost_instance
我们选择北京二可用区E 1C1G数据盘
备注:运行之前可以进行UAPI产品的测试。
第四步 判断创建接口是否正常 (CreateAPIOK)
使用“新增步骤”-“逻辑步骤”-“是非判断”来判断的是否“CreateUHostInstance” 正常执行。
AutoAI API的返回值都有RetCode,通常我们用RetCode是否等于“0”来判断接口是否被执行正常。填写是非判断信息并点击“保存输入参数”
变量名称:用户自定义
变量取值语法:(需要调用其他步骤的出参值的话) ${步骤名.output.出参名称}
如图示:取值为 步骤名= CreateUHost 出参名称= RetCode 的值
第五步 调用查询主机状态接口“DescribeUHostInstance” (GetUHostStatus,GetStatusAPIOK)
云主机创建任务完成后云主机并非直接可用,有一段时间的“初始化”状态,我们需要等到主机真正初始化完成后的状态方可使用。
步骤三 CreateUHostInstance 接口有默认出参 UHostIds 。由于是数组,我们取UHostIds. 0 用于将数组中的第一个元素,转化为STRING类型。
“DescribeUHostInstance”接口入参 UHostIds.0 取值源于 步骤“CreateUHost” 的出参 根据语法: ${CreateUHost.output.UHostIds}
备注:我们需要取DescribeUHostInstance 返回值 UHostSet 内的State字段,我们可以在此步骤增加个出参帮助我们后续取值。
语法: ${数组名.元素顺序(从0开始).参数名} UHostSet是个数组,取第一个元素中的State参数。
同样我们配上检查接口的步骤 :一个是非逻辑步骤,可以命名为“GetStatusAPIOK”,依然用RetCode作为判断依据。
第五步 利用“是非判断”,“等待” 构建循环检查云主机是否创建成功。(StatusRunning,Wait)
创建一个“是非判断”命名为 “StatusRunning”用于判断状态是否为“Running”
判断为GetUHostStatus的State出参值是否等于“Running” 。
如果成功,流程结束,
如果没有成功,指向“GetUHostStatus”步骤反复运行,为了避免过于频繁拉取接口需要给予一定的主动延时。
“新增步骤”-“逻辑步骤”-“等待” 等待默认为5秒的延迟。
效果:如果检测状态不是“Running”,间隔5秒继续进行检查。(可以扩展继续对失败的状态处理,这里暂且不展开)
最终进行下流程的编排,流程示意如下: