This commit is contained in:
zeaslity
2023-11-15 15:27:32 +08:00
2 changed files with 49 additions and 22 deletions

View File

@@ -218,32 +218,59 @@ func (hOp *HarborOperator) SyncProjectExec(funcArgs []string) (bool, []string) {
// 创建复制策略 // 创建复制策略
newPolicy := &model.ReplicationPolicy{ newPolicy := &model.ReplicationPolicy{
Name: "sync-repositories-to-target", CopyByChunk: nil,
Enabled: true, Deletion: false,
Deletion: false, Description: "",
Override: true, DestNamespace: "", // 可以指定目标 Harbor 中的特定项目,如果为空,则使用源项目名称
SrcRegistry: &model.Registry{ DestNamespaceReplaceCount: nil,
Name: "cmii", // 源 Harbor 实例的注册表 ID通常为 0
},
DestRegistry: &model.Registry{ DestRegistry: &model.Registry{
Name: "cmii", // 目标 Harbor 实例的注册表 ID需要根据实际情况设置 Credential: &model.RegistryCredential{
AccessKey: "admin",
AccessSecret: "V2ryStr@ngPss",
Type: "basic",
},
Description: "",
ID: 4,
Insecure: true,
Name: "cmii", // 源 Harbor 实例的注册表 ID通常为 0
Type: "harbor",
URL: "10.250.0.1268033",
},
Enabled: true,
//Filters: []*model.ReplicationFilter{
// {
// Type: "name",
// Value: "cmii/**", // 根据需要同步的仓库进行调整
// },
// {
// Type: "name",
// Value: "rancher/**", // 根据需要同步的仓库进行调整
// },
//},
Filters: nil,
ID: 0,
Name: "sync-repositories-to-target",
Override: true,
ReplicateDeletion: false,
Speed: nil,
SrcRegistry: &model.Registry{
Credential: &model.RegistryCredential{
AccessKey: "admin",
AccessSecret: "V2ryStr@ngPss",
Type: "basic",
},
Description: "",
ID: 4,
Insecure: true,
Name: "cmii", // 源 Harbor 实例的注册表 ID通常为 0
Type: "harbor",
URL: "10.250.0.1008033",
}, },
DestNamespace: "", // 可以指定目标 Harbor 中的特定项目,如果为空,则使用源项目名称
Trigger: &model.ReplicationTrigger{ Trigger: &model.ReplicationTrigger{
Type: "manual", // 可以是 "manual", "scheduled", 或 "event_based" Type: "manual", // 可以是 "manual", "scheduled", 或 "event_based"
// 如果是 "scheduled",还需要设置 Cron 表达式 // 如果是 "scheduled",还需要设置 Cron 表达式
// TriggerSettings: &model.TriggerSettings{Cron: "0 * * * *"}, // TriggerSettings: &model.TriggerSettings{Cron: "0 * * * *"},
}, },
Filters: []*model.ReplicationFilter{
{
Type: "name",
Value: "cmii/**", // 根据需要同步的仓库进行调整
},
{
Type: "name",
Value: "rancher/**", // 根据需要同步的仓库进行调整
},
},
} }
// 在源 Harbor 中创建复制策略 // 在源 Harbor 中创建复制策略
@@ -251,7 +278,7 @@ func (hOp *HarborOperator) SyncProjectExec(funcArgs []string) (bool, []string) {
err := sourceClient.NewReplicationPolicy(ctx, newPolicy.DestRegistry, newPolicy.SrcRegistry, newPolicy.Deletion, newPolicy.Override, newPolicy.Enabled, newPolicy.Filters, newPolicy.Trigger, newPolicy.DestNamespace, newPolicy.Name, newPolicy.Name) err := sourceClient.NewReplicationPolicy(ctx, newPolicy.DestRegistry, newPolicy.SrcRegistry, newPolicy.Deletion, newPolicy.Override, newPolicy.Enabled, newPolicy.Filters, newPolicy.Trigger, newPolicy.DestNamespace, newPolicy.Name, newPolicy.Name)
if err != nil { if err != nil {
syncErrorMessage := fmt.Sprintf("[Harbor Sync Project ] - Sync Project Failed !: %v\n", err) syncErrorMessage := fmt.Sprintf("[Harbor Sync Project ] - Sync Project Failed !: %s\n", err.Error())
log.Error(syncErrorMessage) log.Error(syncErrorMessage)
return false, []string{ return false, []string{
syncErrorMessage, syncErrorMessage,

View File

@@ -34,10 +34,10 @@ public class TestBaseFuncScheduler {
ServerQueryEntity serverQueryEntity = new ServerQueryEntity(); ServerQueryEntity serverQueryEntity = new ServerQueryEntity();
// exsi server // exsi server
// serverQueryEntity.setServerName("Chengdu-amd64-99"); serverQueryEntity.setServerName("Chengdu-amd64-99");
// lappro // lappro
serverQueryEntity.setServerName("Chengdu-amd64-65"); // serverQueryEntity.setServerName("Chengdu-amd64-65");
ServerInfoPO serverInfoPO = serverService ServerInfoPO serverInfoPO = serverService
.serverGetByPage(serverQueryEntity) .serverGetByPage(serverQueryEntity)