[ Server ] [ Harbor ] - sync status - 7

This commit is contained in:
zeaslity
2023-11-16 17:29:55 +08:00
parent 80b36d0c6e
commit f1b8f8efc8
4 changed files with 69 additions and 29 deletions

View File

@@ -16,7 +16,7 @@ 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不带端口; 需要同步的仓库project(rancher cmii)名称"
),
SYNC_STATUS_HARBOR(

View File

@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.ArrayList;
import java.util.List;
@Data
@@ -26,7 +27,14 @@ public class ProjectDeployContext {
boolean agentBaseProcedureAccomplished;
boolean harborSynchronized;
public static final ArrayList<String> PROJECT_NEED_TO_BY_SYNCHRONIZED = new ArrayList<>(
List.of(
"rancher",
"cmii"
)
);
boolean rancherHarborSynchronized;
boolean cmiiHarborSynchronized;
String currentSynchronizingProject;
}

View File

@@ -13,6 +13,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static io.wdd.func.auto.beans.ProjectDeployContext.PROJECT_NEED_TO_BY_SYNCHRONIZED;
@Service
@Slf4j
public class HarborFuncScheduler {
@@ -40,20 +42,6 @@ public class HarborFuncScheduler {
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!");
@@ -77,12 +65,46 @@ public class HarborFuncScheduler {
log.error("list harbor project failed !");
}
// 1 - sync harbor
if (!SyncBetweenHarbor(projectDeployContext)) {
log.error("sync harbor project failed !");
}
int maxSyncStatusCheckCount = 1000;
int timePinch = 2;
// 1 - load image from tar.gz
for (String project : PROJECT_NEED_TO_BY_SYNCHRONIZED) {
// 1 - sync harbor
log.info(
"start to sync project of [ {} ]",
project
);
projectDeployContext.setCurrentSynchronizingProject(project);
if (!SyncBetweenHarbor(projectDeployContext)) {
log.error(
"sync harbor project [ {} ] failed !",
project
);
}
int waitCount = 0;
while (waitCount < maxSyncStatusCheckCount && !checkHarborSyncStatus(projectDeployContext)) {
waitCount++;
try {
TimeUnit.SECONDS.sleep(timePinch);
} catch (InterruptedException e) {
log.error(
"wait for project of [ {} ] sync status error !",
project
);
}
}
if (waitCount == maxSyncStatusCheckCount) {
continue;
}
log.info(
"project of [ {} ] has sync success !",
project
);
}
log.info("Harbor Image Synchronized Succeed !");
}
@@ -158,9 +180,14 @@ public class HarborFuncScheduler {
syncHarborArgList.add(HarborFunctionEnum.SYNC_PROJECT_BETWEEN_HARBOR.getOpName());
syncHarborArgList.add(masterNode.getServerIpInV4());
// second arg sourceHarborHost
String sourceHarborHost = getIPv4Address();
syncHarborArgList.add(sourceHarborHost);
// third arg sync project name
syncHarborArgList.add(projectDeployContext.getCurrentSynchronizingProject());
log.info(
"{} start ! args are => {}",
HarborFunctionEnum.SYNC_PROJECT_BETWEEN_HARBOR.getOpName(),