[ Cmii ] [ Octopus ] - add Image Function - 1
This commit is contained in:
@@ -17,9 +17,10 @@ const PublicDeployHarborHost = "42.192.52.227"
|
||||
const DirectPushDeployHarborHost = "36.134.71.138"
|
||||
|
||||
type ImageSyncEntity struct {
|
||||
ProjectName string
|
||||
ProjectVersion string
|
||||
DirectHarborHost string //此参数决定是否能够直连目标主机,如果有则代表直连,可以直接推送景象
|
||||
ProjectName string // 3
|
||||
ProjectVersion string // 2
|
||||
CmiiImageList map[string]string // 1
|
||||
DirectHarborHost string //此参数决定是否能够直连目标主机,如果有则代表直连,可以直接推送景象
|
||||
PushToDemoMinio bool
|
||||
}
|
||||
|
||||
@@ -32,7 +33,7 @@ type ImageSyncResult struct {
|
||||
AllCmiiImageNameList []string
|
||||
}
|
||||
|
||||
// PullFromEntityAndSyncConditionally 根据ImageSyncEntity拉取特定的镜像,然后上传到特定的目标机器
|
||||
// PullFromEntityAndSyncConditionally 根据ImageSyncEntity拉取特定的镜像,然后上传到特定的目标机器(或者上传的minio中)
|
||||
func (sync ImageSyncEntity) PullFromEntityAndSyncConditionally() (imageSyncResult ImageSyncResult) {
|
||||
|
||||
var realCmiiImageList []string
|
||||
@@ -122,20 +123,6 @@ func (sync ImageSyncEntity) PullFromEntityAndSyncConditionally() (imageSyncResul
|
||||
return imageSyncResult
|
||||
}
|
||||
|
||||
func remove(s1, s2 []string) []string {
|
||||
m := make(map[string]struct{}, len(s2))
|
||||
for _, v := range s2 {
|
||||
m[v] = struct{}{}
|
||||
}
|
||||
res := make([]string, 0, len(s1))
|
||||
for _, v := range s1 {
|
||||
if _, ok := m[v]; !ok {
|
||||
res = append(res, v)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func FetchDemoImages(projectName string, gzipSplit bool) (errorPullImageList, errorGzipImageList, allCmiiImageName []string) {
|
||||
|
||||
// generate a project folder
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
image2 "wdd.io/agent-common/image"
|
||||
"wdd.io/agent-common/logger"
|
||||
"wdd.io/agent-common/utils"
|
||||
)
|
||||
@@ -22,8 +23,6 @@ import (
|
||||
var apiClient = newClient()
|
||||
var log = logger.Log
|
||||
|
||||
const CmiiHarborPrefix = "harbor.cdcyy.com.cn/cmii/"
|
||||
|
||||
func newClient() *client.Client {
|
||||
apiClient, err := client.NewClientWithOpts(client.FromEnv)
|
||||
|
||||
@@ -140,7 +139,7 @@ func PruneAllCmiiImages() (errorRemoveImageNameList []string) {
|
||||
|
||||
for _, imageSummary := range imageGetAll {
|
||||
for _, repoTag := range imageSummary.RepoTags {
|
||||
if strings.HasPrefix(repoTag, CmiiHarborPrefix) {
|
||||
if strings.HasPrefix(repoTag, image2.CmiiHarborPrefix) {
|
||||
for _, tag := range imageSummary.RepoTags {
|
||||
_, err := apiClient.ImageRemove(context.TODO(), imageSummary.ID, types.ImageRemoveOptions{
|
||||
Force: true,
|
||||
@@ -209,7 +208,7 @@ func TagFromListAndPushToCHarbor(referenceImageList []string, targetHarborHost s
|
||||
cmiiImageFullName := imageName
|
||||
|
||||
if strings.HasPrefix(imageName, "cmii") {
|
||||
cmiiImageFullName = CmiiHarborPrefix + imageName
|
||||
cmiiImageFullName = image2.CmiiHarborPrefix + imageName
|
||||
}
|
||||
|
||||
targetProject := "cmii"
|
||||
@@ -217,9 +216,9 @@ func TagFromListAndPushToCHarbor(referenceImageList []string, targetHarborHost s
|
||||
targetProject = "rancher"
|
||||
}
|
||||
|
||||
if strings.HasPrefix(imageName, CmiiHarborPrefix) {
|
||||
if strings.HasPrefix(imageName, image2.CmiiHarborPrefix) {
|
||||
//
|
||||
imageName = strings.TrimPrefix(imageName, CmiiHarborPrefix)
|
||||
imageName = strings.TrimPrefix(imageName, image2.CmiiHarborPrefix)
|
||||
} else {
|
||||
// todo
|
||||
if strings.Contains(imageName, "/") {
|
||||
@@ -355,7 +354,7 @@ func PullFromListAndCompressSplit(fullImageNameList []string, gzipFolder string)
|
||||
errorGzipImageList = append(errorGzipImageList, image)
|
||||
continue
|
||||
}
|
||||
tarGzipFileNameList = append(tarGzipFileNameList, ImageFullNameToGzipFileName(image))
|
||||
tarGzipFileNameList = append(tarGzipFileNameList, image2.ImageFullNameToGzipFileName(image))
|
||||
}
|
||||
|
||||
utils.BeautifulPrintListWithTitle(tarGzipFileNameList, "image gzip name list")
|
||||
@@ -431,7 +430,7 @@ func SaveToTarGZ(targetImageName, folderPathPrefix string) bool {
|
||||
}
|
||||
}
|
||||
|
||||
gzipImageFile := ImageFullNameToGzipFileName(realImageTag)
|
||||
gzipImageFile := image2.ImageFullNameToGzipFileName(realImageTag)
|
||||
if !strings.HasSuffix(folderPathPrefix, "/") {
|
||||
folderPathPrefix += "/"
|
||||
}
|
||||
@@ -466,7 +465,7 @@ func SaveToTarGZ(targetImageName, folderPathPrefix string) bool {
|
||||
func ConvertCMiiImageMapToList(cmiiImageVersionMap map[string]string) (fullImageNameList []string) {
|
||||
|
||||
for image, tag := range cmiiImageVersionMap {
|
||||
s := CmiiHarborPrefix + image + ":" + tag
|
||||
s := image2.CmiiHarborPrefix + image + ":" + tag
|
||||
fullImageNameList = append(fullImageNameList, s)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
"wdd.io/agent-common/assert"
|
||||
"wdd.io/agent-common/image"
|
||||
"wdd.io/agent-common/utils"
|
||||
)
|
||||
|
||||
@@ -130,7 +131,7 @@ func TestImageFullNameToGzipFileName(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, s := range test {
|
||||
gzipFileName := ImageFullNameToGzipFileName(s)
|
||||
gzipFileName := image.ImageFullNameToGzipFileName(s)
|
||||
fmt.Printf(" %s to %s \n", s, gzipFileName)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
package image
|
||||
|
||||
import "strings"
|
||||
|
||||
var unSupported = "UN-SUPPORT-APP-NAME"
|
||||
|
||||
func ImageFullNameToAppName(imageFullName string) (appName string) {
|
||||
|
||||
// harbor.cdcyy.cn/cmii/cmii-uav-platform:5.4.0 ==> cmii-uav-platform
|
||||
|
||||
// 10.1.1.1:8033/cmii/ok:1.2 不支持 不允许存在
|
||||
// rancher/fleet:v0.3.4
|
||||
|
||||
// ossr/srs:v5.0.1 ==> docker=cmii=srs=v5.0.1.tar.gz
|
||||
// nginx:latest
|
||||
// bitnami/minio:2022.5.4
|
||||
// simonrupf/chronyd:0.4.3
|
||||
|
||||
if strings.HasPrefix(imageFullName, CmiiHarborPrefix) {
|
||||
return strings.Split(strings.TrimPrefix(imageFullName, CmiiHarborPrefix), ":")[0]
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func ImageFullNameToImageTag(imageFullName string) (imageTag string) {
|
||||
s := strings.Split(imageFullName, ":")[1]
|
||||
|
||||
if strings.Contains(s, ":") {
|
||||
// 10.1.1.1:8033/cmii/ok:1.2
|
||||
return strings.Split(imageFullName, ":")[2]
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
// ImageFullNameToGzipFileName 必须输出长度为4的内容 =出现得次数为3
|
||||
func ImageFullNameToGzipFileName(imageFullName string) (gzipFileName string) {
|
||||
|
||||
// harbor.cdcyy.cn/cmii/cmii-uav-platform:5.4.0 ==> cmlc=cmii=cmii-uav-platform=5.4.0.tar.gz
|
||||
// rancher/fleet:v0.3.4
|
||||
|
||||
// ossr/srs:v5.0.1 ==> docker=cmii=srs=v5.0.1.tar.gz
|
||||
// nginx:latest
|
||||
// bitnami/minio:2022.5.4
|
||||
// simonrupf/chronyd:0.4.3
|
||||
|
||||
// 10.1.1.1:8033/cmii/ok:1.2 不支持 不允许存在
|
||||
|
||||
split := strings.Split(imageFullName, ":")
|
||||
//log.DebugF(" %s to %s", imageRepoTag, split)
|
||||
if len(split) == 1 {
|
||||
// nginx
|
||||
return "docker=library=" + imageFullName + "=latest.tar.gz"
|
||||
}
|
||||
|
||||
first := strings.Split(split[0], "/")
|
||||
//log.DebugF(" split[0] %s to %s", split[0], first)
|
||||
if len(first) == 3 {
|
||||
// harbor.cdcyy.cn/cmii/cmii-uav-platform:5.4.0
|
||||
// docker.io/ossr/srs:v5.0.1
|
||||
if strings.HasPrefix(split[0], CmiiHarborPrefix) {
|
||||
gzipFileName += "cmlc=cmii="
|
||||
} else {
|
||||
gzipFileName += "docker=cmii="
|
||||
}
|
||||
gzipFileName += first[2]
|
||||
gzipFileName += "="
|
||||
|
||||
} else if len(first) == 4 {
|
||||
// harbor.cdcyy.cn/cmii/ossr/srs:v5.0.1
|
||||
// harbor.cdcyy.com.cn/cmii/cmlc-ai/cmlc-ai-operator:v5.2.0-t4-no-dino
|
||||
if !strings.HasPrefix(split[0], CmiiHarborPrefix) {
|
||||
return imageFullName
|
||||
}
|
||||
gzipFileName += "cmlc=cmii="
|
||||
gzipFileName += first[3]
|
||||
gzipFileName += "="
|
||||
} else if len(first) == 2 {
|
||||
// bitnami/redis
|
||||
// ossrs/srs
|
||||
gzipFileName += "docker="
|
||||
gzipFileName += first[0]
|
||||
gzipFileName += "="
|
||||
gzipFileName += first[1]
|
||||
gzipFileName += "="
|
||||
} else if len(first) == 1 {
|
||||
// nginx:latest
|
||||
return "docker=library=" + split[0] + "=" + split[1] + ".tar.gz"
|
||||
}
|
||||
|
||||
gzipFileName += split[1]
|
||||
gzipFileName += ".tar.gz"
|
||||
|
||||
return gzipFileName
|
||||
}
|
||||
|
||||
func GzipFileNameToImageFullName(gzipFileName string) (imageFullName string) {
|
||||
|
||||
return gzipFileName
|
||||
}
|
||||
Reference in New Issue
Block a user