G0 Intergenerational
G0代际变更接入SDK
G0代际做为变更事件通知,在SDK中只有一个对应事件通知接口,如下。
public interface ChangeNotifyClient {
/**
* 发送变更通知事件。
*
* @param request
* @return
*/
Result<SubmitChangeEventResult> submitChangeEvent(ChangeEventRequest request);
}
其请求入参结构如下。
public class ChangeEventRequest {
/**
* 变更场景标识。
*/
@NotBlank
protected String changeSceneKey;
/**
* 上游变更执行系统的唯一单据号。
*/
@NotBlank
protected String bizExecOrderId;
/**
* 上游变更执行平台名称。
*/
@NotBlank
protected String platform;
/**
* 变更执行人。
*/
@NotNull
private String executor;
/**
* 变更开始时间。如果为null,则使用当前使用。
*/
@NotNull
private Date startTime;
/**
* 变更结束时间。
*/
@NotNull
private Date finishTime;
/**
* 变更执行单标题。
*/
@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 SubmitChangeEventResult {
/**
* 变更管控系统生成的唯一单据号。
*/
private String orderId;
/**
* 变更管控系统工单地址。
*/
private String url;
}