G1 Intergenerational
G1代际变更接入SDK
G1代际只做单节点的变更前后切面管控。
在SDK中,上游需要接入两个接口,即变更开始和变更结束。相关定义如下。
变更开始
/**
* 提交阶段变更开始通知.并同步返回检查结果。
* 如果返回对象 {@link ChangeNotifySubmitResult#isSkipCheck()} 为true。则不需要检查防御结果。
*
* @param request
*/
Result<ChangeExecOrderSubmitAndStartResult> submitChangeStartNotify(ChangeExecOrderSubmitAndStartRequest request);
其请求入参结构如下:
public class ChangeExecOrderSubmitAndStartRequest {
/**
* 变更场景标识。
*/
@NotBlank
protected String changeSceneKey;
/**
* 上游变更执行系统的唯一单据号。
*/
@NotBlank
protected String bizExecOrderId;
/**
* 上游变更执行平台名称。
*/
@NotBlank
protected String platform;
/**
* 变更执行人。
*/
@NotNull
private String executor;
/**
* 变更开始时间。如果为null,则使用当前使用。
*/
@NotNull
private Date startTime;
/**
* 变更执行单标题。
*/
@NotBlank
private String changeTitle;
/**
* 变更单地址。推荐填写。
* [optional]
*/
private String changeUrl;
/**
* 变更单创建人。
*/
@NotBlank
private String creator;
/**
* 变更情景码。
*/
@NotBlank
private String changeScenarioCode = ChangeScenarioEnum.DAILY.getCode();
/**
* 变更执行单涉及的环境。
*/
@NotNull
private Set<String> changePhases;
/**
* 变更目标信息。
*/
@NotNull
private ChangeTarget[] changeTargets;
/**
* 变更内容实体信息。
*/
@NotNull
private ChangeContent[] changeContents;
/**
* 变更内容参数。json格式。
*/
@NotBlank
private String changeParamJson;
/**
* [optional] 变更影响的系统。
*/
private Set<String> changeApps;
/**
* [optional] 变更单父工单信息。
*/
private ChangeParentOrderInfo parentOrderInfo;
/**
* [optional] 变更trace。如果不需要单独生成,则保持null,否则由业务侧自己控制trace。
*/
private OpsChngTrace trace;
}
其中一些字段对应的枚举值及子类定义如下。
变更情景码:changeScenarioCode
public enum OpsCloudChangeScenarioEnum {
/**
* 默认场景。
*/
DEFAULT("XX"),
/**
* 日常运维场景。
*/
DAILY("00"),
/** 故障应急 */
EMERGE("01"),
/** 大促正式 */
DACU("02"),
// ---------------- 演练类 ----------------
/** state instance failed */
FAULT_INJECT("10"),
/** 大促演练 */
DACU_PRACTICE("11"),
/** 容灾演练 */
FO_PRACTICE("12"),
/** 故障演练 用户发起*/
FAULT_MOCK_INJECT("13"),
// ---------------- 无人值守类 ----------------
/** 无人值守 */
UNATTENDED("30");
}
变更执行单涉及的环境:changePhases
public enum OpsCloudChangePhaseEnum {
/**
* 预发阶段。
*/
PRE_PHASE("pre_phase"),
/**
* 灰度阶段。
*/
GRAY_PHASE("gray_phase"),
/**
* [推荐使用] 线上环境第一批次。
*/
PROD_BETA_PHASE("prod_beta_phase"),
/**
* 线上阶段。
*/
PROD_PHASE("prod_phase");
}
变更对象:changeTargets
public class ChangeTarget {
@NotBlank
private String instanceName;
@NotNull
@Valid
private String changeTargetType;
}
变更内容:changeContents
public class ChangeContent {
@NotBlank
private String instanceName;
@NotNull
@Valid
private String changeContentType;
}
变更单父工单信息:parentOrderInfo
public class ChangeParentOrderInfo {
/**
* 父工单唯一单据号。
*/
@NotNull
private String orderId;
/**
* 父工单标题。
*/
@NotNull
private String orderTitle;
/**
* 父工单url。
*/
@NotNull
private String orderUrl;
}
其返回值结构如下。
public class ChangeExecOrderSubmitAndStartResult {
/**
* 变更管控系统生成的变更节点id,用于获取检查结果。
*/
private String nodeId;
/**
* 变更节点对应页面url。
*/
private String url;
/**
* 变更管控系统内部变更工单Id。
*
* 注:对于G1场景,一个工单下只有一个节点。
*/
private String orderId;
/**
* 校验结果信息。
*
* 用于判断风险校验是否通过。
*/
private ChangeCheckVerdict verdict;
}
其中,校验结果信息对应结构定义如下。
public class ChangeCheckVerdict {
/**
* 检查结果枚举。
*/
private String verdict = ChangeCheckVerdictEnum.PASS.getVerdict();
/**
* 若verdict=FAIL,则可以根据此属性判断是否可以直接回滚。
*/
private boolean rollback = false;
/**
* 是否应急变更。
*/
private boolean emergency = false;
/**
* 是否所有规则都执行完毕。
*/
private boolean allFinish = false;
/**
* 检查执行消息。
*/
private String msg;
}
校验结果枚举定义如下。
public enum OpsCloudChangeCheckVerdictEnum {
/**
* 暂无校验结果,需要等待。
*/
NONE("none"),
/**
* 校验通过。
*/
PASS("pass"),
/**
* 无法判断,因为部分校验规则出现异常。
*/
INCONC("inconc"),
/**
* 校验不通过。
*/
FAIL("fail"),
;
}
变更结束
/**
* 变更单执行。
* @param request
* @return
*/
Result<FinishChangeExecOrderResult> finishChangeExecOrder(ChangeExecOrderFinishRequest request);
其请求入参结构如下。
public class OpsCloudChangeExecOrderFinishRequest extends OpsCloudChangeBaseRequest {
/**
* 变更结束状态标识。
*/
@NotBlank
private String finishState;
/**
* [optional] 变更本身的执行结果 json string。
*/
@JsonFormat
private String changeResultJsn;
/**
* 变更执行信息。
*/
@StringLength(max = 16384)
private String msg;
/**
* 变更结束时间。如果为null,则使用当前时间。
*/
private Date finishTime;
/**
* 变更场景标识。
*/
@NotBlank
@StringLength(max = 256)
protected String changeSceneKey;
/**
* 上游变更执行单唯一单据号。
*/
@NotBlank
@StringLength(max = 128)
protected String bizExecOrderId;
/**
* 变更执行系统名称。
*/
@NotBlank
@StringLength(max = 32)
protected String platform;
}
变更结束状态标识对应枚举如下。
public enum OpsCloudChangeFinishStateEnum {
/**
* 变更成功
*/
SUCCESS("SUCCESS", true),
/**
* 变更回滚
*/
ROLLBACK("ROLLBACK", false),
/**
* 变更取消
*/
CANCEL("CANCEL", false);
}