Skip to main content

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;
}