[ Server ] [ Harbor ] - sync status - 1

This commit is contained in:
zeaslity
2023-11-16 14:33:26 +08:00
parent 96a871d371
commit d9572ea8ce
4 changed files with 134 additions and 10 deletions

View File

@@ -16,7 +16,12 @@ public enum HarborFunctionEnum {
SYNC_PROJECT_BETWEEN_HARBOR(
"SYNC_PROJECT_BETWEEN_HARBOR",
"在源Harbor和目标Harbor之间同步Project args 为目标Harbor的HostName不带端口 源Harbor的HostName不带端口"
"在源Harbor和目标Harbor之间同步Project args 为目标Harbor的HostName不带端口; 源Harbor的HostName不带端口"
),
SYNC_STATUS_HARBOR(
"SYNC_STATUS_HARBOR",
"查询目标Harbor的同步状态进度, args 为目标Harbor的HostName不带端口;"
);

View File

@@ -11,6 +11,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Service
@Slf4j
@@ -31,13 +32,28 @@ public class HarborFuncScheduler {
// after run
afterRunProcedure();
afterRunProcedure(projectDeployContext);
return true;
}
private void afterRunProcedure() {
private void afterRunProcedure(ProjectDeployContext projectDeployContext) {
int maxSyncStatusCheckCount = 1000;
int timePinch = 2;
int waitCount = 0;
while (waitCount < maxSyncStatusCheckCount && !checkHarborSyncStatus(projectDeployContext)) {
waitCount++;
try {
TimeUnit.SECONDS.sleep(timePinch);
} catch (InterruptedException e) {
log.error("wait for sync status error !");
}
}
// 检查是否安装完成, 对安装环境进行判定
log.debug("afterRunProcedure complete!");
@@ -202,6 +218,27 @@ public class HarborFuncScheduler {
}
private boolean checkHarborSyncStatus(ProjectDeployContext projectDeployContext) {
ServerInfoPO masterNode = projectDeployContext.getMasterNode();
ArrayList<String> syncHarborArgList = new ArrayList<>();
syncHarborArgList.add(HarborFunctionEnum.SYNC_STATUS_HARBOR.getOpName());
syncHarborArgList.add(masterNode.getServerIpInV4());
log.info(
"{} start ! args are => {}",
HarborFunctionEnum.SYNC_STATUS_HARBOR.getOpName(),
syncHarborArgList
);
return funcService.callHarborFuncAndJudge(
masterNode.getTopicName(),
HarborFunctionEnum.SYNC_STATUS_HARBOR,
syncHarborArgList
);
}
private void beforeRunProcedure(ProjectDeployContext projectDeployContext) {

View File

@@ -0,0 +1,22 @@
package io.wdd.func.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController("/auto")
@Api("Octopus自动化介入")
public class AutoController {
@GetMapping("/harbor/status")
@ApiOperation("查看Harbor的Sync的同步状态")
public void GetHarborSyncStatus(
@RequestParam(name = "projectId") @ApiParam("projectId") Long projectId
) {
}
}