Files
ProjectOctopus/agent-operator/main.go
2024-06-13 15:06:33 +08:00

172 lines
4.1 KiB
Go

package main
import (
"bufio"
"flag"
"fmt"
"os"
"strings"
"wdd.io/agent-common/utils"
)
var LocalKubeConfigFile = "/root/.kube/config"
// build for offline usage
// C:\Users\wddsh\go\bin\gox.exe -osarch="linux/amd64" -output "build/agent-operator_{{.OS}}_{{.Arch}}"
// C:\Users\wddsh\go\bin\gox.exe -osarch="linux/amd64 linux/arm64" -output "build/agent-operator_{{.OS}}_{{.Arch}}"
//
func BuildDefaultK8sOperator() {
// build from local LocalKubeConfigFile
if !utils.FileExists(LocalKubeConfigFile) {
log.ErrorF("%s not exits! error!", LocalKubeConfigFile)
return
}
readFile, err := os.ReadFile(LocalKubeConfigFile)
if err != nil {
log.ErrorF("error reading %s, error %s", LocalKubeConfigFile, err.Error())
return
}
op := CmiiK8sOperator{}
op.BuildCurrentClientFromConfig(readFile)
DefaultCmiiOperator = op
}
func RealProjectRunner() {
// ops
// update
//result := UpdateCmiiImageTagFromNameTagList(realNamespace, bgtg.AllCmiiImageTagList)
//result := UpdateCmiiImageTagFromNameTagMap(realNamespace, xmyd.Real540ImageTagMap)
//utils.BeautifulPrint(result)
//for _, imageFullName := range xmyd.AllCmiiImageTagList {
// appName := image.ImageFullNameToAppName(imageFullName)
// if appName == "" {
// log.InfoF("can't update %s", imageFullName)
// continue
// }
// exists := op.DeploymentExist(realNamespace, appName)
// if exists == nil {
// log.InfoF("app of %s not eixts", appName)
// continue
// }
//
// _ = op.DeploymentUpdateTag(realNamespace, appName, image.ImageFullNameToImageTag(imageFullName))
//
//}
// backup system app tag
//backendMap, frontendMap, srsMap := BackupAllCmiiDeploymentToMap(realNamespace)
//utils.BeautifulPrint(backendMap)
//utils.BeautifulPrint(frontendMap)
//utils.BeautifulPrint(srsMap)
// scale deployment
//ScaleCmiiFrontendDeploymentToDesiredReplicas(realNamespace, 1)
//ScaleCmiiBackendDeploymentToDesiredReplicas(realNamespace, 1)
// update from map
}
func CmiiRunner() {
}
var DLTUHelp = `
DLTUHelp
dltu [ossUrlPrefix] [ossFileName] [localGzipFolderOrGzipFile] [harborHostFullName] [namespace]
`
func main() {
// C:\Users\wddsh\go\bin\gox.exe -osarch="linux/amd64" -output "build/operator_{{.OS}}_{{.Arch}}"
//RealProjectRunner()
//var mode string
//flag.StringVar(&mode, "mode", "mode", "agent run mode")
//flag.Parse()
//
//BuildDefaultK8sOperator()
//
//BackupAllDeploymentFromEnvToFile(mode)
//解析命令行参数
var mode string
flag.StringVar(&mode, "mode", "mode", "agent run mode")
flag.Parse()
if mode == "image" {
BuildDefaultK8sOperator()
// 堡垒机模式 的 镜像美容
// 初始化堡垒机模式
for {
reader := bufio.NewReader(os.Stdin)
for {
fmt.Printf(DLTUHelp)
fmt.Print("enter ==> ")
text, _ := reader.ReadString('\n')
split := strings.Split(text, " ")
var result []string
for _, s := range split {
text = strings.TrimSpace(s)
if text == "" {
continue
}
result = append(result, text)
}
if len(result) != 6 {
fmt.Println("input error!")
fmt.Printf(DLTUHelp)
return
}
ossUrlPrefix := result[1]
ossFileName := result[2]
localGzipFolderOrGzipFile := result[3]
harborHostFullName := result[4]
namespace := result[5]
fmt.Println("ossUrlPrefix: ", ossUrlPrefix)
fmt.Println("ossFileName: ", ossFileName)
fmt.Println("localGzipFolderOrGzipFile: ", localGzipFolderOrGzipFile)
fmt.Println("harborHostFullName: ", harborHostFullName)
fmt.Println("namespace: ", namespace)
fmt.Println()
downloadFromOss := true
if ossFileName == "0" {
downloadFromOss = false
}
// DLTU
targetImageFullNameList := DownloadLoadTagUpload(downloadFromOss, ossUrlPrefix, ossFileName, localGzipFolderOrGzipFile, harborHostFullName)
// 是否需要更新
if namespace != "" {
for _, targetImageFullName := range targetImageFullNameList {
if !DefaultCmiiOperator.DeploymentUpdateTagByImageFullName(namespace, targetImageFullName) {
fmt.Printf("[Update] update [%s] [%s] failed", namespace, targetImageFullName)
}
}
}
fmt.Println()
}
}
} else if mode == "operator" {
}
}