diff --git a/agent-operator/CmiiK8sOperator.go b/agent-operator/CmiiK8sOperator.go index 4cbe3ea..cb12a82 100644 --- a/agent-operator/CmiiK8sOperator.go +++ b/agent-operator/CmiiK8sOperator.go @@ -459,6 +459,7 @@ func BackupAllDeploymentFromEnv(cmiiEnv string) bool { return true } +// BackupAllCmiiDeploymentToMap 备份DEMO环境全部的镜像名称为Map 包括SRS 前端 后端 func BackupAllCmiiDeploymentToMap(cmiiEnv string) (backendMap, frontendMap, srsMap map[string]string) { allInterface := CmiiOperator.DeploymentAllInterface(cmiiEnv) diff --git a/agent-operator/CmiiOperator.go b/agent-operator/CmiiOperator.go index a26be72..9df32e2 100644 --- a/agent-operator/CmiiOperator.go +++ b/agent-operator/CmiiOperator.go @@ -55,21 +55,18 @@ func (sync ImageSyncEntity) PullFromEntityAndSyncConditionally() (imageSyncResul // pull images // compress if sync.ProjectVersion != "" { - // get version - if sync.DirectHarborHost == "" { - errorPullImageList, errorGzipImageList, allCmiiImageNameList = DownloadCompressUploadFromVersion(sync.ProjectVersion, true, sync.UploadToDemoMinio) - gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectVersion - } else { - errorPullImageList, errorGzipImageList, allCmiiImageNameList = DownloadCompressUploadFromVersion(sync.ProjectVersion, false, sync.UploadToDemoMinio) - } + + // get version images + errorPullImageList, errorGzipImageList, allCmiiImageNameList, allGzipFileNameList = DownloadCompressUploadFromVersion(sync.ProjectVersion, sync.CompressImageToGzip, sync.UploadToDemoMinio) + + gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectVersion + } else { // get demo images - if sync.DirectHarborHost == "" { - errorPullImageList, errorGzipImageList, allCmiiImageNameList = DownloadCompressUploadFromDemo(sync.ProjectName, sync.CompressImageToGzip, sync.UploadToDemoMinio) - gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectName - } else { - errorPullImageList, errorGzipImageList, allCmiiImageNameList = DownloadCompressUploadFromDemo(sync.ProjectName, false, sync.UploadToDemoMinio) - } + + errorPullImageList, errorGzipImageList, allCmiiImageNameList, allGzipFileNameList = DownloadCompressUploadFromDemo(sync.ProjectName, sync.CompressImageToGzip, sync.UploadToDemoMinio) + gzipFolderFullPath = OfflineImageGzipFolderPrefix + sync.ProjectName + } } else { // 拉取特定的镜像 @@ -198,23 +195,30 @@ func uploadGzipFileToDemoMinio() { } // DownloadCompressUploadFromDemo 获取DEMO环境的全部镜像 -func DownloadCompressUploadFromDemo(projectName string, shouldGzip bool, shouldOss bool) (errorPullImageList, errorGzipImageList, realCmiiImageName []string) { +func DownloadCompressUploadFromDemo(projectName string, shouldGzip bool, shouldOss bool) (errorPullImageList, errorGzipImageList, realCmiiImageName, allGzipFileNameList []string) { // generate a project folder err := os.MkdirAll(OfflineImageGzipFolderPrefix+projectName, os.ModeDir) if err != nil { if !errors.Is(err, os.ErrExist) { log.ErrorF("[Download_Compress_Upload_From_Demo] - create folder of %s error %s", OfflineImageGzipFolderPrefix+projectName, err.Error()) - return errorPullImageList, errorGzipImageList, realCmiiImageName + return errorPullImageList, errorGzipImageList, realCmiiImageName, allGzipFileNameList } } // get demo image version map - backendMap, frontendMap, srsMap := BackupAllCmiiDeploymentToMap(demo) + allCmiiImageNameListFromDemo := buildAllCmiiImageNameListFromDemo(projectName) - utils.BeautifulPrint(backendMap) - utils.BeautifulPrint(frontendMap) - utils.BeautifulPrint(srsMap) + // do work + // DCU + return DownloadCompressUploadFromFullNameList(allCmiiImageNameListFromDemo, shouldGzip, OfflineImageGzipFolderPrefix+projectName, shouldOss) +} + +func buildAllCmiiImageNameListFromDemo(projectName string) []string { + + var realCmiiImageName []string + + backendMap, frontendMap, srsMap := BackupAllCmiiDeploymentToMap(demo) // save map to file backendMapFile := OfflineImageGzipFolderPrefix + projectName + "-backend-app.json" @@ -224,69 +228,53 @@ func DownloadCompressUploadFromDemo(projectName string, shouldGzip bool, shouldO _ = os.Remove(frontendMapFile) _ = os.Remove(srsMapFile) - utils.AppendContentToFile( - utils.BeautifulPrintToString(backendMap), - backendMapFile, - ) - utils.AppendContentToFile( - utils.BeautifulPrintToString(frontendMap), - frontendMapFile, - ) - utils.AppendContentToFile( - utils.BeautifulPrintToString(srsMapFile), - srsMapFile, - ) + //utils.AppendContentToFile( + // utils.BeautifulPrintToString(backendMap), + // backendMapFile, + //) + //utils.AppendContentToFile( + // utils.BeautifulPrintToString(frontendMap), + // frontendMapFile, + //) + //utils.AppendContentToFile( + // utils.BeautifulPrintToString(srsMapFile), + // srsMapFile, + //) - // download image - backendFullNameList, backendPull := image.PullFromCmiiHarborByMap(backendMap, true) - frontendFullNameList, frontendPull := image.PullFromCmiiHarborByMap(frontendMap, true) - srsFullNameList, srsPull := image.PullFromCmiiHarborByMap(srsMap, true) + realCmiiImageName = append(realCmiiImageName, image.ConvertCMiiImageMapToList(backendMap)...) + realCmiiImageName = append(realCmiiImageName, image.ConvertCMiiImageMapToList(frontendMap)...) + realCmiiImageName = append(realCmiiImageName, image.ConvertCMiiImageMapToList(srsMap)...) - realCmiiImageName = append(realCmiiImageName, backendFullNameList...) - realCmiiImageName = append(realCmiiImageName, frontendFullNameList...) - realCmiiImageName = append(realCmiiImageName, srsFullNameList...) + utils.BeautifulPrintListWithTitle(realCmiiImageName, "Cmii Project Image => "+projectName) - // compress image - if shouldGzip { - for imageName, tag := range backendMap { - if !image.SaveToTarGZ(imageName+":"+tag, OfflineImageGzipFolderPrefix+projectName+"/app/") { - errorGzipImageList = append(errorGzipImageList, image2.CmiiHarborPrefix+imageName+":"+tag) - } - } - for imageName, tag := range frontendMap { - if !image.SaveToTarGZ(imageName+":"+tag, OfflineImageGzipFolderPrefix+projectName+"/app/") { - errorGzipImageList = append(errorGzipImageList, image2.CmiiHarborPrefix+imageName+":"+tag) - } - } - for imageName, tag := range srsMap { - if !image.SaveToTarGZ(imageName+":"+tag, OfflineImageGzipFolderPrefix+projectName+"/app/") { - errorGzipImageList = append(errorGzipImageList, image2.CmiiHarborPrefix+imageName+":"+tag) - } - } - } - // upload to harbor - - // clean up images - - errorPullImageList = append(errorPullImageList, backendPull...) - errorPullImageList = append(errorPullImageList, frontendPull...) - errorPullImageList = append(errorPullImageList, srsPull...) - - return errorPullImageList, errorGzipImageList, realCmiiImageName + return realCmiiImageName } // DownloadCompressUploadFromVersion 根据版本下载全部的CMII镜像 -func DownloadCompressUploadFromVersion(cmiiVersion string, shouldGzip bool, shouldOss bool) (errorPullImageList, errorGzipImageList, realCmiiImageName []string) { +func DownloadCompressUploadFromVersion(cmiiVersion string, shouldGzip bool, shouldOss bool) (errorPullImageList, errorGzipImageList, realCmiiImageName, allGzipFileNameList []string) { // generate a project folder err := os.MkdirAll(OfflineImageGzipFolderPrefix+cmiiVersion, os.ModeDir) if err != nil { if !errors.Is(err, os.ErrExist) { log.ErrorF("[Download_Compress_Upload_From_Demo] - create folder of %s error %s", OfflineImageGzipFolderPrefix+cmiiVersion, err.Error()) - return errorPullImageList, errorGzipImageList, realCmiiImageName + return errorPullImageList, errorGzipImageList, realCmiiImageName, allGzipFileNameList } } + // build all cmii image name list + realCmiiImageName = buildAllCmiiImageNameListFromVersion(cmiiVersion) + + // do work + // DCU procedure + return DownloadCompressUploadFromFullNameList(realCmiiImageName, shouldGzip, OfflineImageGzipFolderPrefix+cmiiVersion, shouldOss) + +} + +func buildAllCmiiImageNameListFromVersion(cmiiVersion string) []string { + + var realCmiiImageName []string + backendMap := CmiiBackendAppMap frontendMap := CmiiFrontendAppMap @@ -316,17 +304,8 @@ func DownloadCompressUploadFromVersion(cmiiVersion string, shouldGzip bool, shou } } } - utils.BeautifulPrintListWithTitle(realCmiiImageName, "Cmii Version Image => "+cmiiVersion) - - // do work - if shouldGzip { - errorPullImageList, errorGzipImageList = image.PullFromListAndCompressSplit(realCmiiImageName, OfflineImageGzipFolderPrefix+cmiiVersion) - } else { - errorPullImageList = image.PullFromFullNameList(realCmiiImageName) - } - - return errorPullImageList, errorGzipImageList, realCmiiImageName + return realCmiiImageName } func DownloadCompressUploadDependency(shouldGzip bool, shouldOss bool) (errorPullImageList, errorGzipImageList []string) {