Skip to content

Commit

Permalink
Merge pull request #1688 from wangyu096/ipv6
Browse files Browse the repository at this point in the history
bugfix: 执行方案步骤引用命名空间变量,如果目标主机包含ipv6主机,Job任务卡住 #1687
  • Loading branch information
wangyu096 committed Jan 11, 2023
2 parents 0a51b9e + a39a25a commit 502eb54
Show file tree
Hide file tree
Showing 43 changed files with 381 additions and 234 deletions.
Expand Up @@ -57,5 +57,5 @@
/**
* 兼容实现被废除的版本
*/
String version() default "";
String deprecatedVersion() default "";
}
Expand Up @@ -38,7 +38,7 @@ public static Bool from(Byte value) {
return FALSE;
}
for (Bool boolEnum : values()) {
if (boolEnum.getValue() == value) {
if (boolEnum.byteValue() == value) {
return boolEnum;
}
}
Expand All @@ -53,10 +53,14 @@ public static boolean isTrue(Byte value) {
if (value == null) {
return false;
}
return value.equals(Bool.TRUE.getValue());
return value.equals(Bool.TRUE.byteValue());
}

public byte getValue() {
public byte byteValue() {
return this.value;
}

public int intValue() {
return this.value;
}
}
Expand Up @@ -174,7 +174,7 @@ public void setGseAgentAlive(Boolean gseAgentAlive) {
}
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
private Integer getAgentAliveValue() {
return gseAgentAlive == null ? 0 : (gseAgentAlive ? 1 : 0);
}
Expand Down
Expand Up @@ -194,13 +194,15 @@ public static HostDTO fromVO(HostInfoVO hostInfoVO) {
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
HostDTO hostDTO = (HostDTO) o;
if (hostId != null) {
return hostId.equals(hostDTO.getHostId());
HostDTO otherHost = (HostDTO) o;
if (hostId != null && otherHost.getHostId() != null) {
return hostId.equals(otherHost.getHostId());
} else if (this.getIp() != null && otherHost.getIp() != null) {
// 兼容没有hostId,只有ip的的场景
return bkCloudId.equals(otherHost.bkCloudId) &&
ip.equals(otherHost.ip);
} else {
// 兼容没有hostId的场景
return bkCloudId.equals(hostDTO.bkCloudId) &&
ip.equals(hostDTO.ip);
return false;
}
}

Expand Down
Expand Up @@ -63,7 +63,7 @@ public class HostInfoVO {

@ApiModelProperty("主机名称")
private String hostName;
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
private String ipDesc;

// agent状态:-2:未找到,-1:查询失败,0:初始安装,1:启动中,2:运行中,3:有损状态,4:繁忙,5:升级中,6:停止中,7:解除安装
Expand All @@ -75,15 +75,15 @@ public class HostInfoVO {

@ApiModelProperty("云区域信息")
private CloudAreaInfoVO cloudArea;
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
private CloudAreaInfoVO cloudAreaInfo;

/**
* 操作系统
*/
@ApiModelProperty("操作系统")
private String osName;
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
private String os;

@ApiModelProperty("系统类型")
Expand All @@ -97,7 +97,7 @@ public class HostInfoVO {
@JsonProperty("cloudVendor")
private String cloudVendorName;

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public String getHostName() {
if (hostName != null) {
return hostName;
Expand All @@ -108,13 +108,13 @@ public String getHostName() {
return null;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setHostName(String hostName) {
this.hostName = hostName;
this.ipDesc = hostName;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public CloudAreaInfoVO getCloudArea() {
if (cloudArea != null) {
return cloudArea;
Expand All @@ -125,13 +125,13 @@ public CloudAreaInfoVO getCloudArea() {
return null;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setCloudArea(CloudAreaInfoVO cloudArea) {
this.cloudArea = cloudArea;
this.cloudAreaInfo = cloudArea;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public String getOsName() {
if (osName != null) {
return osName;
Expand All @@ -142,7 +142,7 @@ public String getOsName() {
return null;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容实现,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setOsName(String osName) {
this.osName = osName;
this.os = osName;
Expand Down
Expand Up @@ -43,34 +43,34 @@
public class TargetNodeVO {
@ApiModelProperty(value = "节点 ID,对应拓扑树节点中的instanceId", required = true)
private Long instanceId;
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
private Long id;

@ApiModelProperty(value = "节点类型 biz-业务 set-集群 module-模块 xxx-用户自定义节点类型,对应拓扑树节点中的objectId", required = true)
private String objectId;
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
private String type;

@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
public void setInstanceId(Long instanceId) {
this.instanceId = instanceId;
this.id = instanceId;
}

@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
public void setId(Long id) {
this.id = id;
this.instanceId = id;
log.warn("Use compatible field id:{}", id);
}

@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
public void setObjectId(String objectId) {
this.objectId = objectId;
this.type = objectId;
}

@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "发布过程中兼容实现,发布后删除", deprecatedVersion = "3.8.0")
public void setType(String type) {
this.type = type;
this.objectId = type;
Expand Down
Expand Up @@ -49,13 +49,13 @@ public class TaskHostNodeVO {

@ApiModelProperty("机器列表")
private List<HostInfoVO> hostList;
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
@ApiModelProperty("机器IP列表")
private List<HostInfoVO> ipList;

@ApiModelProperty("节点 ID")
private List<TargetNodeVO> nodeList;
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
@ApiModelProperty("节点 ID")
private List<TargetNodeVO> topoNodeList;

Expand Down Expand Up @@ -94,31 +94,31 @@ public boolean validate(boolean isCreate) {
return !allEmpty;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setHostList(List<HostInfoVO> hostList) {
this.hostList = hostList;
this.ipList = hostList;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setIpList(List<HostInfoVO> ipList) {
this.ipList = ipList;
this.hostList = ipList;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setNodeList(List<TargetNodeVO> nodeList) {
this.nodeList = nodeList;
this.topoNodeList = nodeList;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setTopoNodeList(List<TargetNodeVO> topoNodeList) {
this.topoNodeList = topoNodeList;
this.nodeList = topoNodeList;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本修改实现", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本修改实现", deprecatedVersion = "3.8.0")
@JsonIgnore
public List<String> getDynamicGroupIdList() {
if (org.springframework.util.CollectionUtils.isEmpty(dynamicGroupList)) {
Expand All @@ -140,7 +140,7 @@ public List<String> getDynamicGroupIdList() {
return dynamicGroupIdList;
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本修改实现", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本修改实现", deprecatedVersion = "3.8.0")
public void setDynamicGroupIdList(List<String> dynamicGroupIdList) {
if (dynamicGroupIdList == null) {
return;
Expand Down
Expand Up @@ -40,7 +40,7 @@ public class EsbAppScopeDTO {
/**
* 兼容字段,表示cmdb 业务/业务集ID
*/
@CompatibleImplementation(explain = "兼容字段,表示业务ID或者业务集ID", version = "3.6.x")
@CompatibleImplementation(explain = "兼容字段,表示业务ID或者业务集ID", deprecatedVersion = "3.6.x")
@JsonProperty("bk_biz_id")
private Long bizId;

Expand Down
Expand Up @@ -50,7 +50,7 @@ public class EsbAppScopeReq extends EsbJobReq {
/**
* 兼容字段,表示cmdb 业务/业务集ID
*/
@CompatibleImplementation(explain = "兼容字段,表示业务ID或者业务集ID", version = "3.6.x")
@CompatibleImplementation(explain = "兼容字段,表示业务ID或者业务集ID", deprecatedVersion = "3.6.x")
@JsonProperty("bk_biz_id")
@Min(value = 1L, message = "{validation.constraints.InvalidBkBizId.message}", groups = UseBkBizIdParam.class)
private Long bizId;
Expand Down
Expand Up @@ -53,6 +53,7 @@
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

import javax.ws.rs.QueryParam;
import java.util.List;

/**
Expand Down Expand Up @@ -226,7 +227,7 @@ Response<StepExecutionDetailVO> getFastTaskStepExecutionResult(
);

@CompatibleImplementation(name = "ipv6", explain = "考虑到历史记录只有ip数据,所以需要同时兼容hostId/ip两种方式",
version = "3.7.x")
deprecatedVersion = "3.7.x")
@ApiOperation(value = "获取主机对应的脚本日志内容", produces = "application/json")
@GetMapping(value = {"/step-execution-result/log-content/{stepInstanceId}/{executeCount}/{ip}",
"/step-execution-result/log-content/{stepInstanceId}/{executeCount}/host/{hostId}"})
Expand Down Expand Up @@ -258,7 +259,7 @@ Response<IpScriptLogContentVO> getScriptLogContentByHost(
);

@CompatibleImplementation(name = "ipv6", explain = "考虑到历史记录只有ip数据,所以需要同时兼容hostId/ip两种方式",
version = "3.7.x")
deprecatedVersion = "3.7.x")
@ApiOperation(value = "获取文件分发步骤主机对应的日志", produces = "application/json")
@GetMapping(value = {"/step-execution-result/log-content/file/{stepInstanceId}/{executeCount}/{ip}",
"/step-execution-result/log-content/file/{stepInstanceId}/{executeCount}/host/{hostId}"})
Expand Down Expand Up @@ -324,6 +325,8 @@ Response<List<FileDistributionDetailVO>> getFileLogContentByFileTaskIds(

@ApiOperation(value = "获取执行步骤-主机对应的变量列表", produces = "application/json")
@GetMapping(value = {"/step-execution-result/variable/{stepInstanceId}/{ip}"})
@CompatibleImplementation(name = "ipv6", explain = "兼容IPv6版本之前的使用并保存ip的执行历史数据,ipv6发布之后可删除")
@Deprecated
Response<List<ExecuteVariableVO>> getStepVariableByIp(
@ApiParam("用户名,网关自动传入")
@RequestHeader("username")
Expand All @@ -345,6 +348,32 @@ Response<List<ExecuteVariableVO>> getStepVariableByIp(
String ip
);

@ApiOperation(value = "获取执行步骤-主机对应的变量列表", produces = "application/json")
@GetMapping(value = {"/step-execution-result/step/{stepInstanceId}/variables"})
Response<List<ExecuteVariableVO>> getStepVariableByHost(
@ApiParam("用户名,网关自动传入")
@RequestHeader("username")
String username,
@ApiIgnore
@RequestAttribute(value = "appResourceScope")
AppResourceScope appResourceScope,
@ApiParam(value = "资源范围类型", required = true)
@PathVariable(value = "scopeType")
String scopeType,
@ApiParam(value = "资源范围ID", required = true)
@PathVariable(value = "scopeId")
String scopeId,
@ApiParam(value = "步骤实例ID", name = "stepInstanceId", required = true)
@PathVariable("stepInstanceId")
Long stepInstanceId,
@ApiParam(value = "hostId", name = "主机ID")
@QueryParam(value = "hostId")
Long hostId,
@ApiParam(value = "ip", name = "云区域ID:IPv4,为了兼容历史数据的查询保留;如果返回的任务中包含ip,那么需要传入")
@QueryParam(value = "ip")
String ip
);

@ApiOperation(value = "获取执行结果分组下的主机列表", produces = "application/json")
@GetMapping(value = {"/step-execution-result/hosts/{stepInstanceId}/{executeCount}"})
Response<List<HostDTO>> getHostsByResultType(
Expand Down
Expand Up @@ -47,17 +47,19 @@ public class AgentTaskExecutionVO {
@ApiModelProperty("Agent ID")
private String agentId;

/**
* tmp: 暂时返回云区域+ipv4,发布完成之后仅返回ipv4
*/
@ApiModelProperty("Agent ipv4")
@ApiModelProperty("云区域+ipv4,废弃字段,ipv6版本发布后删除")
@Deprecated
private String ip;

@Deprecated
@CompatibleImplementation(name = "ipv6", explain = "兼容字段,发布完成后可删除",
version = "3.7.x")
deprecatedVersion = "3.7.x")
@ApiModelProperty("废弃字段,ipv6版本发布后删除")
private String displayIp;

@ApiModelProperty("Agent ipv4")
private String ipv4;

@ApiModelProperty("Agent ipv6")
private String ipv6;

Expand Down
Expand Up @@ -55,15 +55,15 @@ public class ExecuteHostVO {
@ApiModelProperty("云区域信息")
private ExecuteCloudAreaInfoVO cloudAreaInfo;

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setCloudAreaInfo(ExecuteCloudAreaInfoVO cloudAreaInfo) {
this.cloudAreaInfo = cloudAreaInfo;
if (cloudAreaInfo != null) {
this.cloudId = cloudAreaInfo.getId();
}
}

@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", version = "3.8.0")
@CompatibleImplementation(name = "ipv6", explain = "兼容方法,保证发布过程中无损变更,下个版本删除", deprecatedVersion = "3.8.0")
public void setCloudId(Long cloudId) {
this.cloudId = cloudId;
this.cloudAreaInfo = new ExecuteCloudAreaInfoVO(cloudId, null);
Expand Down

0 comments on commit 502eb54

Please sign in to comment.