[agent-operator] - cmii deploy part
This commit is contained in:
@@ -214,7 +214,7 @@ func RemoveFolderComplete(folderName string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadLineFromFile(fileFullPath string) (result []string) {
|
func ReadAllContentFromFile(fileFullPath string) (result []string) {
|
||||||
|
|
||||||
f, err := os.Open(fileFullPath)
|
f, err := os.Open(fileFullPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -238,3 +238,31 @@ func ReadLineFromFile(fileFullPath string) (result []string) {
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FolderMoveFiles 将源文件夹中除了子文件夹外的所有文件移动到目标文件夹
|
||||||
|
func FolderMoveFiles(srcDir, dstDir string) error {
|
||||||
|
// 读取源文件夹中的所有条目
|
||||||
|
entries, err := os.ReadDir(srcDir)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("读取源文件夹失败: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遍历所有条目
|
||||||
|
for _, entry := range entries {
|
||||||
|
// 跳过子文件夹
|
||||||
|
if entry.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构造源文件路径和目标文件路径
|
||||||
|
srcPath := filepath.Join(srcDir, entry.Name())
|
||||||
|
dstPath := filepath.Join(dstDir, entry.Name())
|
||||||
|
|
||||||
|
// 移动文件
|
||||||
|
if err := os.Rename(srcPath, dstPath); err != nil {
|
||||||
|
return fmt.Errorf("移动文件失败: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -31,13 +31,21 @@ func BeautifulPrintToString(object interface{}) string {
|
|||||||
return string(bytes)
|
return string(bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BeautifulPrintWithTitle(contend any, title string) {
|
||||||
|
|
||||||
|
fmt.Println()
|
||||||
|
fmt.Println(fmt.Sprintf("content tile is => %s", title))
|
||||||
|
bytes, _ := json.MarshalIndent(contend, "", " ")
|
||||||
|
fmt.Println(string(bytes))
|
||||||
|
fmt.Println("---------- end -----------")
|
||||||
|
}
|
||||||
|
|
||||||
func BeautifulPrintListWithTitle(contend []string, title string) {
|
func BeautifulPrintListWithTitle(contend []string, title string) {
|
||||||
|
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Println(fmt.Sprintf("content tile is => %s", title))
|
fmt.Println(fmt.Sprintf("content tile is => %s", title))
|
||||||
for _, line := range contend {
|
for _, line := range contend {
|
||||||
bytes, _ := json.MarshalIndent(line, "", " ")
|
fmt.Println(line)
|
||||||
fmt.Println(string(bytes))
|
|
||||||
}
|
}
|
||||||
fmt.Println("---------- end -----------")
|
fmt.Println("---------- end -----------")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
image2 "wdd.io/agent-common/image"
|
image2 "wdd.io/agent-common/image"
|
||||||
"wdd.io/agent-common/logger"
|
"wdd.io/agent-common/logger"
|
||||||
|
"wdd.io/agent-common/utils"
|
||||||
"wdd.io/agent-deploy/a_dashboard"
|
"wdd.io/agent-deploy/a_dashboard"
|
||||||
"wdd.io/agent-deploy/a_nfs"
|
"wdd.io/agent-deploy/a_nfs"
|
||||||
"wdd.io/agent-deploy/b_middle"
|
"wdd.io/agent-deploy/b_middle"
|
||||||
@@ -166,7 +167,7 @@ func configMapDeploy(common *z_dep.CommonEnvironmentConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CmiiEnvironmentDeploy 部署完整的CMII环境的所有组件
|
// CmiiEnvironmentDeploy 部署完整的CMII环境的所有组件
|
||||||
func CmiiEnvironmentDeploy() {
|
func CmiiEnvironmentDeploy(isCompleteDeploy bool, cmiiNameSpace string, backendImageVersionMap, frontendImageVersionMap map[string]string) (applyYamlFolder string) {
|
||||||
|
|
||||||
// common environment
|
// common environment
|
||||||
common := &z_dep.CommonEnvironmentConfig{
|
common := &z_dep.CommonEnvironmentConfig{
|
||||||
@@ -174,20 +175,55 @@ func CmiiEnvironmentDeploy() {
|
|||||||
WebPort: "",
|
WebPort: "",
|
||||||
HarborIP: image2.CmiiHarborPrefix,
|
HarborIP: image2.CmiiHarborPrefix,
|
||||||
HarborPort: "",
|
HarborPort: "",
|
||||||
Namespace: "devflight",
|
Namespace: cmiiNameSpace,
|
||||||
TagVersion: "5.5.0",
|
TagVersion: "5.5.0",
|
||||||
TenantEnv: "devflight",
|
TenantEnv: cmiiNameSpace,
|
||||||
}
|
}
|
||||||
|
|
||||||
folderPrefix := "/home/wdd/IdeaProjects/ProjectOctopus/agent-deploy/"
|
folderPrefix := "/home/wdd/IdeaProjects/ProjectOctopus/agent-deploy/" + common.Namespace + "/"
|
||||||
|
|
||||||
// clear old apply file
|
// clear old apply file
|
||||||
|
_ = os.Mkdir(folderPrefix, os.ModeDir)
|
||||||
|
|
||||||
|
oldApplyFileFolder := folderPrefix + "old"
|
||||||
|
utils.RemoveFolderComplete(oldApplyFileFolder)
|
||||||
|
_ = os.Mkdir(oldApplyFileFolder, os.ModeDir)
|
||||||
|
|
||||||
|
// move all apply file to old folder
|
||||||
|
_ = utils.FolderMoveFiles(folderPrefix, oldApplyFileFolder)
|
||||||
|
|
||||||
// clear all middleware data
|
// clear all middleware data
|
||||||
// ignore redis rabbitmq mongo nacos emqx
|
// ignore redis rabbitmq mongo nacos emqx
|
||||||
// sync mysql-data
|
// sync mysql-data
|
||||||
|
|
||||||
|
z_dep.ApplyFilePrefix = folderPrefix
|
||||||
// generate new apply file for specific environment
|
// generate new apply file for specific environment
|
||||||
|
if isCompleteDeploy {
|
||||||
|
|
||||||
|
// pvc
|
||||||
|
b_middle.PVCDeploy(common)
|
||||||
|
|
||||||
|
// middlewares
|
||||||
|
b_middle.MidMySQlDeploy(common)
|
||||||
|
b_middle.MidRedisDeploy(common)
|
||||||
|
b_middle.MidEmqxDeploy(common)
|
||||||
|
b_middle.MidMongoDeploy(common)
|
||||||
|
b_middle.MidRabbitMQDeploy(common)
|
||||||
|
b_middle.MidNacosDeploy(common)
|
||||||
|
|
||||||
|
configMapDeploy(common)
|
||||||
|
c_app.IngressDeploy(common)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// frontend
|
||||||
|
|
||||||
|
// frontend
|
||||||
|
frontendDeploy(common, frontendImageVersionMap)
|
||||||
|
// backend
|
||||||
|
backendDeploy(common, backendImageVersionMap)
|
||||||
|
|
||||||
// apply for them
|
// apply for them
|
||||||
|
|
||||||
|
return folderPrefix
|
||||||
}
|
}
|
||||||
|
|||||||
82
agent-operator/CmiiDeployOperator.go
Normal file
82
agent-operator/CmiiDeployOperator.go
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"wdd.io/agent-common/utils"
|
||||||
|
"wdd.io/agent-deploy"
|
||||||
|
"wdd.io/agent-operator/image"
|
||||||
|
)
|
||||||
|
|
||||||
|
func CmiiEnvDeploy() {
|
||||||
|
|
||||||
|
// 完整部署
|
||||||
|
shouldDoCompleteDeploy := true
|
||||||
|
|
||||||
|
// 部署的环境
|
||||||
|
cmiiNamespace := dev
|
||||||
|
|
||||||
|
// 输出特定版本的Tag 或者 从DEMO环境拉取
|
||||||
|
DeploySpecificTag := "5.5.0"
|
||||||
|
|
||||||
|
var backendMap map[string]string
|
||||||
|
var frontendMap map[string]string
|
||||||
|
var srsMap map[string]string
|
||||||
|
|
||||||
|
if DeploySpecificTag == "" {
|
||||||
|
// 从DEMO环境拉取
|
||||||
|
backendMap, frontendMap, srsMap = BackupAllCmiiDeploymentToMap(demo)
|
||||||
|
} else {
|
||||||
|
// 输出特定版本的Tag
|
||||||
|
backendMap, frontendMap, srsMap = image.GenerateCmiiTagVersionImageMap(DeploySpecificTag)
|
||||||
|
}
|
||||||
|
|
||||||
|
utils.BeautifulPrintWithTitle(backendMap, "backendMap")
|
||||||
|
utils.BeautifulPrintWithTitle(frontendMap, "frontendMap")
|
||||||
|
utils.BeautifulPrintWithTitle(srsMap, "srsMap")
|
||||||
|
|
||||||
|
// generate and get all old stuff
|
||||||
|
applyYamlFolder := agent_deploy.CmiiEnvironmentDeploy(shouldDoCompleteDeploy, cmiiNamespace, frontendMap, backendMap)
|
||||||
|
|
||||||
|
// clear old apply file
|
||||||
|
clearOldApplyStuff(applyYamlFolder+"old/", cmiiNamespace)
|
||||||
|
|
||||||
|
// apply new app
|
||||||
|
applyNewAppStuff(applyYamlFolder, cmiiNamespace)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func applyNewAppStuff(applyYamlFolder string, cmiiEnv string) bool {
|
||||||
|
files, err := os.ReadDir(applyYamlFolder)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("failed to read directory: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
|
||||||
|
filePath := filepath.Join(applyYamlFolder, file.Name())
|
||||||
|
ApplyByKubectl(filePath, cmiiEnv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func clearOldApplyStuff(oldApplyYamlFolder string, cmiiEnv string) bool {
|
||||||
|
|
||||||
|
files, err := os.ReadDir(oldApplyYamlFolder)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("failed to read directory: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
|
||||||
|
filePath := filepath.Join(oldApplyYamlFolder, file.Name())
|
||||||
|
DeleteByKubectl(filePath, cmiiEnv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
image2 "wdd.io/agent-common/image"
|
image2 "wdd.io/agent-common/image"
|
||||||
"wdd.io/agent-common/utils"
|
"wdd.io/agent-common/utils"
|
||||||
|
"wdd.io/agent-operator/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DefaultCmiiOperator = CmiiK8sOperator{}
|
var DefaultCmiiOperator = CmiiK8sOperator{}
|
||||||
@@ -193,7 +194,7 @@ func FindCmiiMiddlewarePodInterface(cmiiEnv string) (podList []CmiiPodInterface)
|
|||||||
cmiiPodInterfaces := DefaultCmiiOperator.PodAllInterface(cmiiEnv)
|
cmiiPodInterfaces := DefaultCmiiOperator.PodAllInterface(cmiiEnv)
|
||||||
|
|
||||||
for _, podInterface := range cmiiPodInterfaces {
|
for _, podInterface := range cmiiPodInterfaces {
|
||||||
for key := range CmiiMiddlewareNameMap {
|
for key := range config.CmiiMiddlewareNameMap {
|
||||||
if strings.Contains(podInterface.Name, key) {
|
if strings.Contains(podInterface.Name, key) {
|
||||||
podList = append(podList, podInterface)
|
podList = append(podList, podInterface)
|
||||||
}
|
}
|
||||||
@@ -204,8 +205,8 @@ func FindCmiiMiddlewarePodInterface(cmiiEnv string) (podList []CmiiPodInterface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ScaleCmiiFrontendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
func ScaleCmiiFrontendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
||||||
frontMap := make(map[string]int32, len(CmiiFrontendAppMap))
|
frontMap := make(map[string]int32, len(config.CmiiFrontendAppMap))
|
||||||
for aooName := range CmiiFrontendAppMap {
|
for aooName := range config.CmiiFrontendAppMap {
|
||||||
frontMap[aooName] = desiredReplicas
|
frontMap[aooName] = desiredReplicas
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,8 +214,8 @@ func ScaleCmiiFrontendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplica
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ScaleCmiiBackendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
func ScaleCmiiBackendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
||||||
backMap := make(map[string]int32, len(CmiiBackendAppMap))
|
backMap := make(map[string]int32, len(config.CmiiBackendAppMap))
|
||||||
for aooName := range CmiiBackendAppMap {
|
for aooName := range config.CmiiBackendAppMap {
|
||||||
backMap[aooName] = desiredReplicas
|
backMap[aooName] = desiredReplicas
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,7 +284,7 @@ func RestartCmiiFrontendDeployment(cmiiEnv string) {
|
|||||||
cmiiDeploymentInterfaces := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
cmiiDeploymentInterfaces := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
||||||
|
|
||||||
for _, deploymentInterface := range cmiiDeploymentInterfaces {
|
for _, deploymentInterface := range cmiiDeploymentInterfaces {
|
||||||
_, ok := CmiiFrontendAppMap[deploymentInterface.Name]
|
_, ok := config.CmiiFrontendAppMap[deploymentInterface.Name]
|
||||||
if ok {
|
if ok {
|
||||||
if !DefaultCmiiOperator.DeploymentRestart(deploymentInterface.Namespace, deploymentInterface.Name) {
|
if !DefaultCmiiOperator.DeploymentRestart(deploymentInterface.Namespace, deploymentInterface.Name) {
|
||||||
log.ErrorF("[RestartCmiiFrontendDeployment] - restart of [%s] [%s] failed !", deploymentInterface.Namespace, deploymentInterface.Name)
|
log.ErrorF("[RestartCmiiFrontendDeployment] - restart of [%s] [%s] failed !", deploymentInterface.Namespace, deploymentInterface.Name)
|
||||||
@@ -408,8 +409,8 @@ func RollBackCmiiDeploymentFromUpdateLog(updateLog string) bool {
|
|||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// BackupAllDeploymentFromEnv 从DEMO提取全部的CMII的应用
|
// BackupAllDeploymentFromEnvToFile 从DEMO提取全部的CMII的应用
|
||||||
func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
func BackupAllDeploymentFromEnvToFile(cmiiEnv string) bool {
|
||||||
|
|
||||||
allInterface := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
allInterface := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
||||||
|
|
||||||
@@ -419,7 +420,7 @@ func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
|||||||
//filePath := "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\cmii_operator\\log\\all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
//filePath := "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\cmii_operator\\log\\all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
||||||
filePath := "/home/wdd/IdeaProjects/ProjectOctopus/agent-operator/log/all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
filePath := "/home/wdd/IdeaProjects/ProjectOctopus/agent-operator/log/all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
||||||
|
|
||||||
log.InfoF("[BackupAllDeploymentFromEnv] - backup all image from %s => %s", DefaultCmiiOperator.CurrentNamespace, filePath)
|
log.InfoF("[BackupAllDeploymentFromEnvToFile] - backup all image from %s => %s", DefaultCmiiOperator.CurrentNamespace, filePath)
|
||||||
|
|
||||||
firstCol := 0
|
firstCol := 0
|
||||||
secondCol := 0
|
secondCol := 0
|
||||||
@@ -457,7 +458,7 @@ func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
|||||||
content += "\n"
|
content += "\n"
|
||||||
|
|
||||||
if !utils.AppendContentToFile(content, filePath) {
|
if !utils.AppendContentToFile(content, filePath) {
|
||||||
log.ErrorF("[BackupAllDeploymentFromEnv] - write to file %s error with contend %s", filePath, content)
|
log.ErrorF("[BackupAllDeploymentFromEnvToFile] - write to file %s error with contend %s", filePath, content)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,7 +486,7 @@ func BackupAllCmiiDeploymentToMap(cmiiEnv string) (backendMap, frontendMap, srsM
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add srs part
|
// add srs part
|
||||||
for key, value := range CmiiSrsAppMap {
|
for key, value := range config.CmiiSrsAppMap {
|
||||||
var app *CmiiDeploymentInterface
|
var app *CmiiDeploymentInterface
|
||||||
if strings.Contains(value, "deployment") {
|
if strings.Contains(value, "deployment") {
|
||||||
app = DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
app = DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||||
@@ -545,7 +546,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
|||||||
only := make(map[string]string, 150)
|
only := make(map[string]string, 150)
|
||||||
// front
|
// front
|
||||||
utils.AppendContentToFile("---\n", filePath)
|
utils.AppendContentToFile("---\n", filePath)
|
||||||
for key, value := range CmiiFrontendAppMap {
|
for key, value := range config.CmiiFrontendAppMap {
|
||||||
_, ok := only[key]
|
_, ok := only[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||||
@@ -556,7 +557,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
utils.AppendContentToFile("---\n", filePath)
|
utils.AppendContentToFile("---\n", filePath)
|
||||||
for key, value := range CmiiBackendAppMap {
|
for key, value := range config.CmiiBackendAppMap {
|
||||||
_, ok := only[key]
|
_, ok := only[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||||
@@ -569,7 +570,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
|||||||
// backend
|
// backend
|
||||||
utils.AppendContentToFile("---\n", filePath)
|
utils.AppendContentToFile("---\n", filePath)
|
||||||
// gis server
|
// gis server
|
||||||
for key, value := range CmiiGISAppMap {
|
for key, value := range config.CmiiGISAppMap {
|
||||||
_, ok := only[key]
|
_, ok := only[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||||
@@ -581,7 +582,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
|||||||
}
|
}
|
||||||
// srs
|
// srs
|
||||||
utils.AppendContentToFile("---\n", filePath)
|
utils.AppendContentToFile("---\n", filePath)
|
||||||
for key, value := range CmiiSrsAppMap {
|
for key, value := range config.CmiiSrsAppMap {
|
||||||
_, ok := only[key]
|
_, ok := only[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
var app *CmiiDeploymentInterface
|
var app *CmiiDeploymentInterface
|
||||||
@@ -608,9 +609,9 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
|||||||
func FilterAllCmiiAppStrict(source []CmiiDeploymentInterface) (result []CmiiDeploymentInterface) {
|
func FilterAllCmiiAppStrict(source []CmiiDeploymentInterface) (result []CmiiDeploymentInterface) {
|
||||||
|
|
||||||
for _, c := range source {
|
for _, c := range source {
|
||||||
_, ok := CmiiBackendAppMap[c.ContainerName]
|
_, ok := config.CmiiBackendAppMap[c.ContainerName]
|
||||||
if !ok {
|
if !ok {
|
||||||
_, ok = CmiiFrontendAppMap[c.ContainerName]
|
_, ok = config.CmiiFrontendAppMap[c.ContainerName]
|
||||||
if !ok {
|
if !ok {
|
||||||
log.WarnF("[FilterAllCmiiAppStrict] - [%s] not cmii pod !", c.ContainerName)
|
log.WarnF("[FilterAllCmiiAppStrict] - [%s] not cmii pod !", c.ContainerName)
|
||||||
continue
|
continue
|
||||||
@@ -662,9 +663,9 @@ func FilterAllCmiiAppSoft(source []CmiiDeploymentInterface) (result []CmiiDeploy
|
|||||||
|
|
||||||
func FilterAllCmiiPodStrict(podList []CmiiPodInterface) (result []CmiiPodInterface) {
|
func FilterAllCmiiPodStrict(podList []CmiiPodInterface) (result []CmiiPodInterface) {
|
||||||
for _, c := range podList {
|
for _, c := range podList {
|
||||||
_, ok := CmiiBackendAppMap[c.ContainerName]
|
_, ok := config.CmiiBackendAppMap[c.ContainerName]
|
||||||
if !ok {
|
if !ok {
|
||||||
_, ok = CmiiFrontendAppMap[c.ContainerName]
|
_, ok = config.CmiiFrontendAppMap[c.ContainerName]
|
||||||
if !ok {
|
if !ok {
|
||||||
log.WarnF("[FilterAllCmiiPodStrict] - [%s] not cmii pod !", c.ContainerName)
|
log.WarnF("[FilterAllCmiiPodStrict] - [%s] not cmii pod !", c.ContainerName)
|
||||||
continue
|
continue
|
||||||
@@ -734,9 +735,9 @@ func FilterAllCmiiNodeSoft(nodeList []CmiiNodeInterface) (result []CmiiNodeInter
|
|||||||
}
|
}
|
||||||
|
|
||||||
func AppNameBelongsToCmiiImage(appName string) bool {
|
func AppNameBelongsToCmiiImage(appName string) bool {
|
||||||
_, ok := CmiiBackendAppMap[appName]
|
_, ok := config.CmiiBackendAppMap[appName]
|
||||||
if !ok {
|
if !ok {
|
||||||
_, ok = CmiiFrontendAppMap[appName]
|
_, ok = config.CmiiFrontendAppMap[appName]
|
||||||
if !ok {
|
if !ok {
|
||||||
log.WarnF("[AppNameBelongsToCmiiImage] - [%s] not cmii app !", appName)
|
log.WarnF("[AppNameBelongsToCmiiImage] - [%s] not cmii app !", appName)
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ func TestScaleCmiiBackendDeploymentToDesiredReplicas(t *testing.T) {
|
|||||||
|
|
||||||
func TestBackupAllDeploymentFromEnv(t *testing.T) {
|
func TestBackupAllDeploymentFromEnv(t *testing.T) {
|
||||||
|
|
||||||
BackupAllDeploymentFromEnv(demo)
|
BackupAllDeploymentFromEnvToFile(demo)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
"wdd.io/agent-operator/config"
|
||||||
|
|
||||||
image2 "wdd.io/agent-common/image"
|
image2 "wdd.io/agent-common/image"
|
||||||
"wdd.io/agent-common/utils"
|
"wdd.io/agent-common/utils"
|
||||||
@@ -330,7 +331,7 @@ func parseAndDownloadFromOss(ossUrlPrefix, ossFileName, localGzipFolder string)
|
|||||||
if strings.HasSuffix(ossFileName, ".txt") {
|
if strings.HasSuffix(ossFileName, ".txt") {
|
||||||
// download from gzip file list txt
|
// download from gzip file list txt
|
||||||
// download all files in the txt file
|
// download all files in the txt file
|
||||||
result := utils.ReadLineFromFile(localGzipFolder + ossFileName)
|
result := utils.ReadAllContentFromFile(localGzipFolder + ossFileName)
|
||||||
for _, gzipFileName := range result {
|
for _, gzipFileName := range result {
|
||||||
DefaultCmiiMinioOperator.DemoMinioOperator.DownloadFileFromOssFullUrl(ossUrlPrefix+gzipFileName, localGzipFolder)
|
DefaultCmiiMinioOperator.DemoMinioOperator.DownloadFileFromOssFullUrl(ossUrlPrefix+gzipFileName, localGzipFolder)
|
||||||
}
|
}
|
||||||
@@ -421,8 +422,8 @@ func buildAllCmiiImageNameListFromVersion(cmiiVersion string) []string {
|
|||||||
|
|
||||||
var realCmiiImageName []string
|
var realCmiiImageName []string
|
||||||
|
|
||||||
backendMap := CmiiBackendAppMap
|
backendMap := config.CmiiBackendAppMap
|
||||||
frontendMap := CmiiFrontendAppMap
|
frontendMap := config.CmiiFrontendAppMap
|
||||||
|
|
||||||
for app := range backendMap {
|
for app := range backendMap {
|
||||||
backendMap[app] = cmiiVersion
|
backendMap[app] = cmiiVersion
|
||||||
@@ -434,7 +435,7 @@ func buildAllCmiiImageNameListFromVersion(cmiiVersion string) []string {
|
|||||||
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(backendMap)...)
|
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(backendMap)...)
|
||||||
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(frontendMap)...)
|
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(frontendMap)...)
|
||||||
|
|
||||||
for key, value := range CmiiSrsAppMap {
|
for key, value := range config.CmiiSrsAppMap {
|
||||||
var app *CmiiDeploymentInterface
|
var app *CmiiDeploymentInterface
|
||||||
if strings.Contains(value, "deployment") {
|
if strings.Contains(value, "deployment") {
|
||||||
app = DefaultCmiiOperator.DeploymentOneInterface(demo, key)
|
app = DefaultCmiiOperator.DeploymentOneInterface(demo, key)
|
||||||
@@ -469,12 +470,12 @@ func DownloadCompressUploadDependency(shouldGzip bool, shouldOss bool, shouldDow
|
|||||||
|
|
||||||
if isRKE {
|
if isRKE {
|
||||||
log.Info("DCU for rke!")
|
log.Info("DCU for rke!")
|
||||||
fulleImageNameList = image.Rancher1204Amd64
|
fulleImageNameList = config.Rancher1204Amd64
|
||||||
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "rke/"
|
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "rke/"
|
||||||
} else {
|
} else {
|
||||||
log.Info("DCU for middle!")
|
log.Info("DCU for middle!")
|
||||||
|
|
||||||
fulleImageNameList = image.MiddlewareAmd64
|
fulleImageNameList = config.MiddlewareAmd64
|
||||||
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "middle/"
|
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "middle/"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -487,7 +488,7 @@ func LoadSplitCmiiGzipImageToTargetHarbor(projectName, targetHarborHost string)
|
|||||||
projectGzipFolder := image.OfflineImageGzipFolderPrefix + projectName
|
projectGzipFolder := image.OfflineImageGzipFolderPrefix + projectName
|
||||||
errorLoadImageNameList = append(errorLoadImageNameList, image.LoadFromFolderPath(projectGzipFolder)...)
|
errorLoadImageNameList = append(errorLoadImageNameList, image.LoadFromFolderPath(projectGzipFolder)...)
|
||||||
// read from json
|
// read from json
|
||||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.Cmii520DemoImageList, targetHarborHost)...)
|
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.Cmii520DemoImageList, targetHarborHost)...)
|
||||||
|
|
||||||
// re-tag
|
// re-tag
|
||||||
// push
|
// push
|
||||||
@@ -505,8 +506,8 @@ func LoadSplitDepGzipImageToTargetHarbor(targetHarborHost string) (errorLoadImag
|
|||||||
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(middle)...)
|
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(middle)...)
|
||||||
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(rke)...)
|
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(rke)...)
|
||||||
|
|
||||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.MiddlewareAmd64, targetHarborHost)...)
|
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.MiddlewareAmd64, targetHarborHost)...)
|
||||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.Rancher1204Amd64, targetHarborHost)...)
|
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.Rancher1204Amd64, targetHarborHost)...)
|
||||||
|
|
||||||
return errorLoadImageNameList, errorPushImageNameList
|
return errorLoadImageNameList, errorPushImageNameList
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
v1 "k8s.io/api/apps/v1"
|
v1 "k8s.io/api/apps/v1"
|
||||||
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
@@ -13,12 +14,16 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
"k8s.io/client-go/tools/remotecommand"
|
"k8s.io/client-go/tools/remotecommand"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
image2 "wdd.io/agent-common/image"
|
image2 "wdd.io/agent-common/image"
|
||||||
"wdd.io/agent-common/logger"
|
"wdd.io/agent-common/logger"
|
||||||
"wdd.io/agent-common/utils"
|
"wdd.io/agent-common/utils"
|
||||||
|
"wdd.io/agent-operator/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logger.Log
|
var log = logger.Log
|
||||||
@@ -45,11 +50,83 @@ const (
|
|||||||
workerThread = 4
|
workerThread = 4
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var CmiiDevClusterK8sConfig string
|
||||||
|
var CmiiCoreClusterK8sConfig string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
|
||||||
|
switch runtime.GOOS {
|
||||||
|
case "windows":
|
||||||
|
CmiiDevClusterK8sConfig = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-operator\\config\\cmii-dev-cluster.yaml"
|
||||||
|
CmiiCoreClusterK8sConfig = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-operator\\config\\cmii-core-cluster.yaml"
|
||||||
|
case "linux":
|
||||||
|
CmiiDevClusterK8sConfig = ""
|
||||||
|
CmiiCoreClusterK8sConfig = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetK8sConfigByEnv(cmiiEnv string) string {
|
||||||
|
switch cmiiEnv {
|
||||||
|
case dev:
|
||||||
|
return CmiiDevClusterK8sConfig
|
||||||
|
case devFlight:
|
||||||
|
return CmiiDevClusterK8sConfig
|
||||||
|
case devOperation:
|
||||||
|
return CmiiDevClusterK8sConfig
|
||||||
|
case integration:
|
||||||
|
return CmiiCoreClusterK8sConfig
|
||||||
|
case uat:
|
||||||
|
return CmiiCoreClusterK8sConfig
|
||||||
|
case validation:
|
||||||
|
return CmiiCoreClusterK8sConfig
|
||||||
|
case uavms:
|
||||||
|
return CmiiCoreClusterK8sConfig
|
||||||
|
case demo:
|
||||||
|
return CmiiCoreClusterK8sConfig
|
||||||
|
default:
|
||||||
|
return CmiiDevClusterK8sConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteByKubectl(applyFilePath string, cmiiEnv string) bool {
|
||||||
|
|
||||||
|
kubeconfig := GetK8sConfigByEnv(cmiiEnv)
|
||||||
|
|
||||||
|
cmd := exec.Command("/usr/local/bin/kubectl", "delete", "-f", applyFilePath)
|
||||||
|
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", kubeconfig))
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("failed to delete resources in file %s: %v\n%s", applyFilePath, err, output)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
log.InfoF("successfully deleted resources in file %s\n%s", applyFilePath, output)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApplyByKubectl(applyFilePath string, cmiiEnv string) bool {
|
||||||
|
|
||||||
|
kubeconfig := GetK8sConfigByEnv(cmiiEnv)
|
||||||
|
|
||||||
|
cmd := exec.Command("/usr/local/bin/kubectl", "apply", "-f", applyFilePath)
|
||||||
|
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", kubeconfig))
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("failed to apply resources in file %s: %v\n%s", applyFilePath, err, output)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
log.InfoF("successfully apply resources in file %s\n%s", applyFilePath, output)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
|
func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
|
||||||
|
|
||||||
if op.DevClient == nil {
|
if op.DevClient == nil {
|
||||||
log.InfoF("[client] - build devFlight k8s operator client !")
|
log.InfoF("[client] - build devFlight k8s operator client !")
|
||||||
devConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiDevK8sConfig))
|
devConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(config.CmiiDevK8sConfig))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := "[client] - build devFlight k8s operator error !"
|
msg := "[client] - build devFlight k8s operator error !"
|
||||||
log.Error(msg)
|
log.Error(msg)
|
||||||
@@ -64,7 +141,7 @@ func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
|
|||||||
|
|
||||||
if op.CoreClient == nil {
|
if op.CoreClient == nil {
|
||||||
log.InfoF("[client] - build core k8s operator client !")
|
log.InfoF("[client] - build core k8s operator client !")
|
||||||
coreConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiCoreK8sConfig))
|
coreConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(config.CmiiCoreK8sConfig))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg := "[client] - build devFlight k8s operator error !"
|
msg := "[client] - build devFlight k8s operator error !"
|
||||||
log.Error(msg)
|
log.Error(msg)
|
||||||
|
|||||||
@@ -1,4 +1,95 @@
|
|||||||
package image
|
package config
|
||||||
|
|
||||||
|
var CmiiBackendAppMap = map[string]string{
|
||||||
|
"cmii-admin-data": "5.2.0",
|
||||||
|
"cmii-admin-gateway": "5.2.0",
|
||||||
|
"cmii-admin-user": "5.2.0",
|
||||||
|
"cmii-app-release": "4.2.0-validation",
|
||||||
|
"cmii-open-gateway": "5.2.0",
|
||||||
|
"cmii-suav-supervision": "5.2.0",
|
||||||
|
"cmii-uav-airspace": "5.2.0",
|
||||||
|
"cmii-uav-alarm": "5.2.0",
|
||||||
|
"cmii-uav-autowaypoint": "4.1.6-cm-0828",
|
||||||
|
"cmii-uav-brain": "5.2.0",
|
||||||
|
"cmii-uav-cloud-live": "5.2.0",
|
||||||
|
"cmii-uav-clusters": "5.2.0",
|
||||||
|
"cmii-uav-cms": "5.2.0",
|
||||||
|
"cmii-uav-data-post-process": "5.2.0",
|
||||||
|
"cmii-uav-depotautoreturn": "4.2.0",
|
||||||
|
"cmii-uav-developer": "5.2.0-25858",
|
||||||
|
"cmii-uav-device": "5.2.0",
|
||||||
|
"cmii-uav-emergency": "5.2.0",
|
||||||
|
"cmii-uav-gateway": "5.2.0",
|
||||||
|
"cmii-uav-industrial-portfolio": "5.2.0-25268-10",
|
||||||
|
"cmii-uav-integration": "5.2.0-25447",
|
||||||
|
"cmii-uav-kpi-monitor": "5.2.0",
|
||||||
|
"cmii-uav-logger": "5.2.0",
|
||||||
|
"cmii-uav-material-warehouse": "5.2.0",
|
||||||
|
"cmii-uav-mission": "5.2.0-25840",
|
||||||
|
"cmii-uav-mqtthandler": "5.2.0-25340",
|
||||||
|
"cmii-uav-notice": "5.2.0",
|
||||||
|
"cmii-uav-oauth": "5.2.0",
|
||||||
|
"cmii-uav-process": "5.2.0",
|
||||||
|
"cmii-uav-surveillance": "5.2.0-25854",
|
||||||
|
"cmii-uav-threedsimulation": "5.2.0",
|
||||||
|
"cmii-uav-tower": "5.2.0",
|
||||||
|
"cmii-uav-user": "5.2.0",
|
||||||
|
"cmii-uav-waypoint": "5.2.0",
|
||||||
|
"cmii-uav-multilink": "5.2.0",
|
||||||
|
"cmii-uav-bridge": "5.2.0",
|
||||||
|
"cmii-uas-lifecycle": "5.2.0",
|
||||||
|
"cmii-uas-gateway": "5.2.0",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiFrontendAppMap = map[string]string{
|
||||||
|
"cmii-suav-platform-supervision": "5.2.0",
|
||||||
|
"cmii-suav-platform-supervisionh5": "5.2.0",
|
||||||
|
"cmii-uav-platform": "5.2.0-011004",
|
||||||
|
"cmii-uav-platform-ai-brain": "5.2.0",
|
||||||
|
"cmii-uav-platform-armypeople": "5.2.0-24538",
|
||||||
|
"cmii-uav-platform-base": "5.2.0",
|
||||||
|
"cmii-uav-platform-cms-portal": "5.2.0",
|
||||||
|
"cmii-uav-platform-detection": "5.2.0",
|
||||||
|
"cmii-uav-platform-emergency-rescue": "5.2.0",
|
||||||
|
"cmii-uav-platform-hljtt": "5.2.0",
|
||||||
|
"cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427",
|
||||||
|
"cmii-uav-platform-logistics": "5.2.0",
|
||||||
|
"cmii-uav-platform-media": "5.2.0",
|
||||||
|
"cmii-uav-platform-multiterminal": "5.2.0",
|
||||||
|
"cmii-uav-platform-mws": "5.2.0",
|
||||||
|
"cmii-uav-platform-oms": "5.2.0",
|
||||||
|
"cmii-uav-platform-open": "5.2.0",
|
||||||
|
"cmii-uav-platform-qingdao": "4.1.6-24238-qingdao",
|
||||||
|
"cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508",
|
||||||
|
"cmii-uav-platform-security": "4.1.6",
|
||||||
|
"cmii-uav-platform-securityh5": "5.2.0",
|
||||||
|
"cmii-uav-platform-seniclive": "5.2.0",
|
||||||
|
"cmii-uav-platform-share": "5.2.0",
|
||||||
|
"cmii-uav-platform-splice": "5.2.0",
|
||||||
|
"cmii-uav-platform-threedsimulation": "5.2.0-21392",
|
||||||
|
"cmii-uav-platform-visualization": "5.2.0",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiMiddlewareNameMap = map[string]string{
|
||||||
|
"helm-nacos": "single",
|
||||||
|
"helm-emqxs": "single",
|
||||||
|
"helm-mysql": "single",
|
||||||
|
"helm-redis": "replication",
|
||||||
|
"helm-rabbitmq": "single",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiSrsAppMap = map[string]string{
|
||||||
|
"helm-live-op-v2": "deployment",
|
||||||
|
"helm-live-rtsp-op": "4.1.6",
|
||||||
|
"helm-live-srs-rtc": "statefulset",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiGISAppMap = map[string]string{
|
||||||
|
"cmii-uav-gis-server": "5.4.0",
|
||||||
|
"cmii-uav-grid-datasource": "5.4.0",
|
||||||
|
"cmii-uav-grid-engine": "5.4.0",
|
||||||
|
"cmii-uav-grid-manage": "5.4.0",
|
||||||
|
}
|
||||||
|
|
||||||
var MiddlewareAmd64 = []string{
|
var MiddlewareAmd64 = []string{
|
||||||
"bitnami/redis:6.2.6-debian-10-r0",
|
"bitnami/redis:6.2.6-debian-10-r0",
|
||||||
@@ -1,95 +1,4 @@
|
|||||||
package main
|
package config
|
||||||
|
|
||||||
var CmiiBackendAppMap = map[string]string{
|
|
||||||
"cmii-admin-data": "5.2.0",
|
|
||||||
"cmii-admin-gateway": "5.2.0",
|
|
||||||
"cmii-admin-user": "5.2.0",
|
|
||||||
"cmii-app-release": "4.2.0-validation",
|
|
||||||
"cmii-open-gateway": "5.2.0",
|
|
||||||
"cmii-suav-supervision": "5.2.0",
|
|
||||||
"cmii-uav-airspace": "5.2.0",
|
|
||||||
"cmii-uav-alarm": "5.2.0",
|
|
||||||
"cmii-uav-autowaypoint": "4.1.6-cm-0828",
|
|
||||||
"cmii-uav-brain": "5.2.0",
|
|
||||||
"cmii-uav-cloud-live": "5.2.0",
|
|
||||||
"cmii-uav-clusters": "5.2.0",
|
|
||||||
"cmii-uav-cms": "5.2.0",
|
|
||||||
"cmii-uav-data-post-process": "5.2.0",
|
|
||||||
"cmii-uav-depotautoreturn": "4.2.0",
|
|
||||||
"cmii-uav-developer": "5.2.0-25858",
|
|
||||||
"cmii-uav-device": "5.2.0",
|
|
||||||
"cmii-uav-emergency": "5.2.0",
|
|
||||||
"cmii-uav-gateway": "5.2.0",
|
|
||||||
"cmii-uav-industrial-portfolio": "5.2.0-25268-10",
|
|
||||||
"cmii-uav-integration": "5.2.0-25447",
|
|
||||||
"cmii-uav-kpi-monitor": "5.2.0",
|
|
||||||
"cmii-uav-logger": "5.2.0",
|
|
||||||
"cmii-uav-material-warehouse": "5.2.0",
|
|
||||||
"cmii-uav-mission": "5.2.0-25840",
|
|
||||||
"cmii-uav-mqtthandler": "5.2.0-25340",
|
|
||||||
"cmii-uav-notice": "5.2.0",
|
|
||||||
"cmii-uav-oauth": "5.2.0",
|
|
||||||
"cmii-uav-process": "5.2.0",
|
|
||||||
"cmii-uav-surveillance": "5.2.0-25854",
|
|
||||||
"cmii-uav-threedsimulation": "5.2.0",
|
|
||||||
"cmii-uav-tower": "5.2.0",
|
|
||||||
"cmii-uav-user": "5.2.0",
|
|
||||||
"cmii-uav-waypoint": "5.2.0",
|
|
||||||
"cmii-uav-multilink": "5.2.0",
|
|
||||||
"cmii-uav-bridge": "5.2.0",
|
|
||||||
"cmii-uas-lifecycle": "5.2.0",
|
|
||||||
"cmii-uas-gateway": "5.2.0",
|
|
||||||
}
|
|
||||||
|
|
||||||
var CmiiFrontendAppMap = map[string]string{
|
|
||||||
"cmii-suav-platform-supervision": "5.2.0",
|
|
||||||
"cmii-suav-platform-supervisionh5": "5.2.0",
|
|
||||||
"cmii-uav-platform": "5.2.0-011004",
|
|
||||||
"cmii-uav-platform-ai-brain": "5.2.0",
|
|
||||||
"cmii-uav-platform-armypeople": "5.2.0-24538",
|
|
||||||
"cmii-uav-platform-base": "5.2.0",
|
|
||||||
"cmii-uav-platform-cms-portal": "5.2.0",
|
|
||||||
"cmii-uav-platform-detection": "5.2.0",
|
|
||||||
"cmii-uav-platform-emergency-rescue": "5.2.0",
|
|
||||||
"cmii-uav-platform-hljtt": "5.2.0",
|
|
||||||
"cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427",
|
|
||||||
"cmii-uav-platform-logistics": "5.2.0",
|
|
||||||
"cmii-uav-platform-media": "5.2.0",
|
|
||||||
"cmii-uav-platform-multiterminal": "5.2.0",
|
|
||||||
"cmii-uav-platform-mws": "5.2.0",
|
|
||||||
"cmii-uav-platform-oms": "5.2.0",
|
|
||||||
"cmii-uav-platform-open": "5.2.0",
|
|
||||||
"cmii-uav-platform-qingdao": "4.1.6-24238-qingdao",
|
|
||||||
"cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508",
|
|
||||||
"cmii-uav-platform-security": "4.1.6",
|
|
||||||
"cmii-uav-platform-securityh5": "5.2.0",
|
|
||||||
"cmii-uav-platform-seniclive": "5.2.0",
|
|
||||||
"cmii-uav-platform-share": "5.2.0",
|
|
||||||
"cmii-uav-platform-splice": "5.2.0",
|
|
||||||
"cmii-uav-platform-threedsimulation": "5.2.0-21392",
|
|
||||||
"cmii-uav-platform-visualization": "5.2.0",
|
|
||||||
}
|
|
||||||
|
|
||||||
var CmiiMiddlewareNameMap = map[string]string{
|
|
||||||
"helm-nacos": "single",
|
|
||||||
"helm-emqxs": "single",
|
|
||||||
"helm-mysql": "single",
|
|
||||||
"helm-redis": "replication",
|
|
||||||
"helm-rabbitmq": "single",
|
|
||||||
}
|
|
||||||
|
|
||||||
var CmiiSrsAppMap = map[string]string{
|
|
||||||
"helm-live-op-v2": "deployment",
|
|
||||||
"helm-live-rtsp-op": "4.1.6",
|
|
||||||
"helm-live-srs-rtc": "statefulset",
|
|
||||||
}
|
|
||||||
|
|
||||||
var CmiiGISAppMap = map[string]string{
|
|
||||||
"cmii-uav-gis-server": "5.4.0",
|
|
||||||
"cmii-uav-grid-datasource": "5.4.0",
|
|
||||||
"cmii-uav-grid-engine": "5.4.0",
|
|
||||||
"cmii-uav-grid-manage": "5.4.0",
|
|
||||||
}
|
|
||||||
|
|
||||||
var CmiiDevK8sConfig = `apiVersion: v1
|
var CmiiDevK8sConfig = `apiVersion: v1
|
||||||
clusters:
|
clusters:
|
||||||
0
agent-operator/config/cmii-core-cluster.yaml
Normal file
0
agent-operator/config/cmii-core-cluster.yaml
Normal file
18
agent-operator/config/cmii-dev-cluster.yaml
Normal file
18
agent-operator/config/cmii-dev-cluster.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
clusters:
|
||||||
|
- cluster:
|
||||||
|
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1ERXhPREEyTURZeU5Gb1hEVE14TURFeE5qQTJNRFl5TkZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZNCjFjTjBNUnhUTkRGdEZxcnRIZ0RPM29SV0dicmVob3VFcDJ3VUVRbU8yRUFyZDdkMUFReTJsSm9WM0RUVmhXbUwKcUFUOFcxaWRaS0x0Wm5mNjEva3JPeDd0U2lJeU4xa1ErN3NYRUhnTjVMc01EOVlKcndpUFdFY2FXdU9HVmI1aApMWDZWOTRjN0U5UlFDOENtd09iSkRCNG45ZE8zcDVlTDJHaFRpMkNrRWt3ZkRPR0tEL1IxeUNaK0tFcDRWWlplCnpwcnUzRG5zOUNqZHVOT1VBWTZzUGxjazNvdEdIVnhnRC9IRlRjUEhNbGhvUVQ4dmNDOTZwc0FtYXZPR1BZQ0YKa3RtN0VWYkZDOHN5Q1BMT3AwWWhTWHRkbGtKaC9UWHBaM0hSUWJxSzVPNXR4K1dGL05qMGJVc202ZldSMzZWQgpKQVVscUJIeFhSTzhGTFNrVHkwQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKeWZ2T3hHVVYvT2wybGRQNnYxeWFSTkd5RVkKWkVxTmM2Y29LSklsd0VQNUxNYzdZNGFReWorZCtVTE4zYmIrOXZsZXdHamluTHRrUW5HZ1R3Q3pKTU5ZNlNJNQo2NzJGZEtQTE85Szdpalhway9qRE9FVHJWS25aMXJBTytOUVBmSVhpcXQ3Y1RyVHlaVzdKTVl3emZNa2VlTGErCnREdmY1Rm5vQTBLN2U3a0ZXNTBpN2pXcGh4RXRMNEJpNzAwNnU4NEpqTU5weVp1MzhKMjFXZkR1RjBoU0NQREgKS0x4cnZIZ0FOYzJWU1c2L3JPaVVCQjdiV0JkcWcyQUNVRWZwN0V3UGs2S1BsdGNiNTJtdFhCU2xiQ3pRWWw4UQpmNmVGRFIrbnRjeXNGbU1FMFI3M1lNSHJwR0dGdlduSDVaTmEyVEJYdHpwN2tNNkVPREE5a2R4WkI1dz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||||
|
server: https://192.168.11.170:16443
|
||||||
|
name: kubernetes
|
||||||
|
contexts:
|
||||||
|
- context:
|
||||||
|
cluster: kubernetes
|
||||||
|
user: kubernetes-admin
|
||||||
|
name: kubernetes-admin@kubernetes
|
||||||
|
current-context: kubernetes-admin@kubernetes
|
||||||
|
kind: Config
|
||||||
|
preferences: { }
|
||||||
|
users:
|
||||||
|
- name: kubernetes-admin
|
||||||
|
user:
|
||||||
|
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4ekNDQWR1Z0F3SUJBZ0lKQU9SWThQZlhadWQyTUEwR0NTcUdTSWIzRFFFQkN3VUFNQlV4RXpBUkJnTlYKQkFNVENtdDFZbVZ5Ym1WMFpYTXdIaGNOTWpJd01URTRNRFl6TmpRMFdoY05Nekl3TVRFMk1EWXpOalEwV2pBMApNUmN3RlFZRFZRUUtEQTV6ZVhOMFpXMDZiV0Z6ZEdWeWN6RVpNQmNHQTFVRUF3d1FhM1ZpWlhKdVpYUmxjeTFoClpHMXBiakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPNTZ0ZG51M24rWUsxM3oKZmNlTzNiSmhBL2J0SGpoQXpvRnNObmZjeEY3dlRTZGczSUxySmVNVkFGbG50MHpUL2xacFBlU0ZUN25iL1g1Ygo4RjErSHA2dVR0b0hRVGJHR2VzbEprdkpFMjB3OGJ0Z3VrdlNmTnROOS9NNlFTWWkvTGlHeTZpd2kveGdBVUtKClFtVW1vZmhZSHNKMllFbXJCcExOVFhtenl2a2lUTlJZVC9iNlJJRzNiT3lIVm1Lc1cwQkNQNVZTTFJsLzErZlMKM0dCUUZ2UTNXdTdmVWlzMW9DSXhsc1k5V2VJUmpGOWJDbWtKNnZsT3BWbGlsTlA0cEtSSnl4aXNBNzExNENNWAprRGJvRFBXb2lxMktubzYveXI2L0xwMktsVVVSa1JhQklodEl5eXV2TldPbjhiTW90SUpCNWNOems4UkxYTm5TCklPZEtMVDhDQXdFQUFhTW5NQ1V3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUYKQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1lwVk9NemlGRUFta1A4S3B2ZWttR3laVGV3dzQreVhyUwo3TEpoWTdTR2pGY210ZldMSW9PWEhmWmZlZWNsN3M5Snh1SytPZlhqU0d0UU9jWXk0WHo5OVFWY2FRandJMEg5Cnc3aWJiYUw3M093RGZrRDMrdlNhME9ZRWZKSFlsNXErQXBnQVpLVWRWazMvZHpJSmhRR0V6L0UxcjdYTlNabDUKL1hOT3pwbzl0VHV2dDAxRlllV0RMN01DeWZGRHFTelpQdnNyWW81bDFiTE5yeEZHb1dvSTdUMlJzR205VXJyYwoyTy84R2hMYTkwZ2tLeE9JTEpYdlJCY2RrOUN4N01ROGFGVHBuSmtPMXJzVzUxMTFoTG5hNm9WRHhISlVrbjRkCmNhODFDV3R1Yk44dkpSYlFwVmkySTJ5K3ljZ3lrNTMzR21GQXNVS3dkdm5rVjNqTVJVbFYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||||
|
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcGdJQkFBS0NBUUVBN25xMTJlN2VmNWdyWGZOOXg0N2RzbUVEOXUwZU9FRE9nV3cyZDl6RVh1OU5KMkRjCmd1c2w0eFVBV1dlM1ROUCtWbWs5NUlWUHVkdjlmbHZ3WFg0ZW5xNU8yZ2RCTnNZWjZ5VW1TOGtUYlREeHUyQzYKUzlKODIwMzM4enBCSmlMOHVJYkxxTENML0dBQlFvbENaU2FoK0ZnZXduWmdTYXNHa3MxTmViUEsrU0pNMUZoUAo5dnBFZ2JkczdJZFdZcXhiUUVJL2xWSXRHWC9YNTlMY1lGQVc5RGRhN3Q5U0t6V2dJakdXeGoxWjRoR01YMXNLCmFRbnErVTZsV1dLVTAvaWtwRW5MR0t3RHZYWGdJeGVRTnVnTTlhaUtyWXFlanIvS3ZyOHVuWXFWUlJHUkZvRWkKRzBqTEs2ODFZNmZ4c3lpMGdrSGx3M09UeEV0YzJkSWc1MG90UHdJREFRQUJBb0lCQVFDdTE5YldGbFNZdGNjdAoxYVJsRi9DZ3BKSlVpcHA2WWNGRmtFSUs5UmdnQmxESnl6RkE1d2hiQ2YyOGp0Y01BKzFZQzBidWNYTDNjRHZWClZiRFB5dlRHSUVQOWhBNGpDM0RiUHR4cCtkMDlWQUlYQUI3MkVqZXFUZXE1TC8rdDV6N2tSeWV2NE9oeE95NFIKU3pNYm1BeHVXS1VNcTkrQ2cxcUpiTzRkaVYwSjg5cUtidExsclFCeDFxcHNnUjNES1VhVGVNKzVpeFYyQ1Y1bApSNDV4aU43NWRrSkpaZlY2UUV5K3V2UVd0VHk4NUN3R1U2T2hjOXA4d2s0MmFrQS9qM05FTUZiTjdDaDFKbi9RCjRhNUJpMituRUE4dGVvV2FRSzdoeU5CRENWbTFsamFjaFFveGRSNGhCWVUxdkhTbkt4a0c4bDA1K1BpRTZmZFkKaUtyemhGR0JBb0dCQVBwOStKTExzZXJ6dFQ4a2VLU2FSMXBMOHB5MTQ3cmdjdEVhckxJL2ZqY1VMU3c3OUk3UAovWWhIWnhmdm9TZEZ2QTZwNy81eHFCRitaNTM5L1NKNDlLeWFOdGNJbW01UTZKSW9aRGgzWmVVS3lMKzA1YTdRCkNqMU1wZ2hKMlZDT2VPamNxd0NVQkFhcjNWSjd0cXRxRVFCQk9jMnlWU3dzbU5wclMyYmU1S3RCQW9HQkFQTzUKSG9ZVTBMK2tzdzJKUVM5ODF1ZWtrbDMzR1ZWQ2dPUFdGWThhR3VGRGt3Sm84WGk2TmhtKzh2TjlNaGg3WkYzeQpTU3E1U2RJd01pR0IvKzVJaWp1V25DbWszY2RPdGU0VFBsZHFvdjc3Q1FUUmxPNWJCekR0L1VqYVBBam5GS0FpClg4K0V6NUVXOXFSclN2ZXplZHFDRVRBVDhRWThqNk1WY0VCRW96aC9Bb0dCQUphcVRHZ25RdVdhSHF0VENZbWcKRGtqZW81Zmt3NHcwMG5xNWU2UmZFbENZdnk3N0JQY2RYVmFwOC9WdXVkVEFXZ1BMN1VGekpXOFlROFRBNzQvYgpodmVHYm5QYWhlRFNvNEM5OE1JUjl1VFVIcmxJV2xwU1ljWkxJeGFiTEs0S2MrbEVTVXE0dk04eWNwWFpPWjlTCjFkVDhab00xdjRzcGErcjhYRWNNekNmQkFvR0JBSXVuaXI4SDFHbk1CVEYvY1pPMWRDczkyUVR3MzFwRWhqaUgKWnNrZUMwTURCb3o5OTBmWFk4S3k4T0htM2pxN0VkTG5UMWVrM3BFTFB0NkdjRkZvelpUQmczQTFZVU9nYlkwagpCN2p0aU1LVXRDRkh1cEF1SnR1NXMwWDRqeWdHeVlITTBKdkhuV3lrL09WUCthQWYvblhmeTl1QndiMXlIRmcxCm82R2Y4dXNmQW9HQkFKeGlQcGdDODJPckoxazE3V3dyOFI2ZXpxR2VYb0JPRzFlOEN6ZG1UbWFrN3prWDJJelEKSTVjT3dGaTlnREhTbUVMa0dYZnRHZ01EcXF1VHVLdS9OdW9DQS94Z2FrdTQvVHplNktqbzRjc0NDTmFza3VrRQozYnhwSnU5cElYRU5tMXVuNXBZRy90QTF0V1Rtc3dnRjY1anc2RFpTQUFUTFZMSXg3RVRDR0RlOQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
|
||||||
@@ -5,7 +5,6 @@ go 1.22.1
|
|||||||
require (
|
require (
|
||||||
github.com/docker/docker v20.10.17+incompatible
|
github.com/docker/docker v20.10.17+incompatible
|
||||||
github.com/docker/go-units v0.4.0
|
github.com/docker/go-units v0.4.0
|
||||||
github.com/go-playground/validator/v10 v10.19.0
|
|
||||||
github.com/klauspost/pgzip v1.2.6
|
github.com/klauspost/pgzip v1.2.6
|
||||||
github.com/minio/minio-go v6.0.14+incompatible
|
github.com/minio/minio-go v6.0.14+incompatible
|
||||||
github.com/mittwald/goharbor-client/v5 v5.5.3
|
github.com/mittwald/goharbor-client/v5 v5.5.3
|
||||||
@@ -15,10 +14,13 @@ require (
|
|||||||
k8s.io/apimachinery v0.29.1
|
k8s.io/apimachinery v0.29.1
|
||||||
k8s.io/client-go v0.29.1
|
k8s.io/client-go v0.29.1
|
||||||
wdd.io/agent-common v0.0.0
|
wdd.io/agent-common v0.0.0
|
||||||
|
wdd.io/agent-deploy v0.0.0
|
||||||
)
|
)
|
||||||
|
|
||||||
replace wdd.io/agent-common => ../agent-common
|
replace wdd.io/agent-common => ../agent-common
|
||||||
|
|
||||||
|
replace wdd.io/agent-deploy => ../agent-deploy
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||||
github.com/Microsoft/go-winio v0.6.1 // indirect
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||||
@@ -43,6 +45,7 @@ require (
|
|||||||
github.com/go-openapi/validate v0.22.1 // indirect
|
github.com/go-openapi/validate v0.22.1 // indirect
|
||||||
github.com/go-playground/locales v0.14.1 // indirect
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
|
github.com/go-playground/validator/v10 v10.21.0 // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/goharbor/harbor/src v0.0.0-20230220075213-6015b3efa7d0 // indirect
|
github.com/goharbor/harbor/src v0.0.0-20230220075213-6015b3efa7d0 // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o
|
|||||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||||
github.com/go-playground/validator/v10 v10.19.0 h1:ol+5Fu+cSq9JD7SoSqe04GMI92cbn0+wvQ3bZ8b/AU4=
|
github.com/go-playground/validator/v10 v10.21.0 h1:4fZA11ovvtkdgaeev9RGWPgc1uj3H8W+rNYyH/ySBb0=
|
||||||
github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
github.com/go-playground/validator/v10 v10.21.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
|
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"wdd.io/agent-operator/config"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
@@ -544,6 +546,31 @@ func FrontendBackendSrsImageMapFromCmiiImageMap(cmiiImageVersionMap map[string]s
|
|||||||
return frontendImageVersionMap, backendImageVersionMap, srsImageVersionMap
|
return frontendImageVersionMap, backendImageVersionMap, srsImageVersionMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GenerateCmiiTagVersionImageMap 生成特定版本的ImageTagMap
|
||||||
|
func GenerateCmiiTagVersionImageMap(specificTag string) (backendMap, frontendMap, srsMap map[string]string) {
|
||||||
|
matched, _ := regexp.MatchString(`^\d+\.\d+\.\d+$`, specificTag)
|
||||||
|
if !matched {
|
||||||
|
log.ErrorF("srs tag is not match ! %s", specificTag)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
backendMap = make(map[string]string, len(config.CmiiBackendAppMap))
|
||||||
|
frontendMap = make(map[string]string, len(config.CmiiFrontendAppMap))
|
||||||
|
srsMap = make(map[string]string, len(config.CmiiSrsAppMap))
|
||||||
|
|
||||||
|
for imageName, _ := range config.CmiiBackendAppMap {
|
||||||
|
backendMap[imageName] = specificTag
|
||||||
|
}
|
||||||
|
for imageName, _ := range config.CmiiFrontendAppMap {
|
||||||
|
frontendMap[imageName] = specificTag
|
||||||
|
}
|
||||||
|
for imageName, imageTag := range config.CmiiSrsAppMap {
|
||||||
|
srsMap[imageName] = imageTag
|
||||||
|
}
|
||||||
|
|
||||||
|
return backendMap, frontendMap, srsMap
|
||||||
|
}
|
||||||
|
|
||||||
func loginToDockerHub(HarborFullHost string) {
|
func loginToDockerHub(HarborFullHost string) {
|
||||||
|
|
||||||
if HarborFullHost == "" {
|
if HarborFullHost == "" {
|
||||||
@@ -568,13 +595,13 @@ func WriteDependencyImageToFile() {
|
|||||||
|
|
||||||
middleFile := imageFilePrefix + "middle-image.txt"
|
middleFile := imageFilePrefix + "middle-image.txt"
|
||||||
_ = os.Remove(middleFile)
|
_ = os.Remove(middleFile)
|
||||||
for _, image := range MiddlewareAmd64 {
|
for _, image := range config.MiddlewareAmd64 {
|
||||||
utils.AppendContentToFile(image+"\n", middleFile)
|
utils.AppendContentToFile(image+"\n", middleFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
rkeFile := imageFilePrefix + "rke-image.txt"
|
rkeFile := imageFilePrefix + "rke-image.txt"
|
||||||
_ = os.Remove(rkeFile)
|
_ = os.Remove(rkeFile)
|
||||||
for _, image := range Rancher1204Amd64 {
|
for _, image := range config.Rancher1204Amd64 {
|
||||||
utils.AppendContentToFile(image+"\n", rkeFile)
|
utils.AppendContentToFile(image+"\n", rkeFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"wdd.io/agent-common/assert"
|
"wdd.io/agent-common/assert"
|
||||||
"wdd.io/agent-common/image"
|
"wdd.io/agent-common/image"
|
||||||
"wdd.io/agent-common/utils"
|
"wdd.io/agent-common/utils"
|
||||||
|
"wdd.io/agent-operator/config"
|
||||||
"wdd.io/agent-operator/real_project/zjjt"
|
"wdd.io/agent-operator/real_project/zjjt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -128,7 +129,7 @@ func TestImageFullNameToGzipFileName(t *testing.T) {
|
|||||||
"busybox",
|
"busybox",
|
||||||
}
|
}
|
||||||
|
|
||||||
test = append(test, MiddlewareAmd64...)
|
test = append(test, config.MiddlewareAmd64...)
|
||||||
|
|
||||||
for _, s := range test {
|
for _, s := range test {
|
||||||
gzipFileName := image.ImageFullNameToGzipFileName(s)
|
gzipFileName := image.ImageFullNameToGzipFileName(s)
|
||||||
@@ -94,7 +94,7 @@ func main() {
|
|||||||
//
|
//
|
||||||
//BuildDefaultK8sOperator()
|
//BuildDefaultK8sOperator()
|
||||||
//
|
//
|
||||||
//BackupAllDeploymentFromEnv(mode)
|
//BackupAllDeploymentFromEnvToFile(mode)
|
||||||
|
|
||||||
//解析命令行参数
|
//解析命令行参数
|
||||||
var mode string
|
var mode string
|
||||||
|
|||||||
38
agent-operator/mysql/MysqlOperator.go
Normal file
38
agent-operator/mysql/MysqlOperator.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package mysql
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
var AllCmiiTableList = []string{}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cmd := exec.Command("/root/wdd/mysql/bin/mysqldump",
|
||||||
|
"-uroot",
|
||||||
|
"-pQzfXQhd3bQ",
|
||||||
|
"-h172.28.0.251",
|
||||||
|
"-P33306",
|
||||||
|
"-t",
|
||||||
|
"--set-gtid-purged=OFF",
|
||||||
|
"cmii_nacos_config",
|
||||||
|
"config_info",
|
||||||
|
"his_config_info",
|
||||||
|
"roles",
|
||||||
|
"users",
|
||||||
|
)
|
||||||
|
|
||||||
|
outputFile, err := os.Create("cmii_nacos_config.sql")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to create output file: %v", err)
|
||||||
|
}
|
||||||
|
defer outputFile.Close()
|
||||||
|
|
||||||
|
cmd.Stdout = outputFile
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
log.Fatalf("Command execution failed: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
43
agent-operator/mysql/cmii_mysql_dump.sh
Normal file
43
agent-operator/mysql/cmii_mysql_dump.sh
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_airspace airport >uav_airspace.sql
|
||||||
|
sed -i '1s/^/use uav_airspace;\n/' uav_airspace.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_notice mail_provider_cfg msg_tpl msg_tpl_lang open_app >uav_notice.sql
|
||||||
|
sed -i '1s/^/use uav_notice;\n/' uav_notice.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_process uav_proc_cfg >uav_process.sql
|
||||||
|
sed -i '1s/^/use uav_process;\n/' uav_process.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF admin_user sys_weak_password sys_platform sys_platform_attr sys_resource sys_resource_api sys_resource_attr sys_action_api xxl_job_group xxl_job_info xxl_job_lock sys_resource_group sys_resource_group_template sys_tenant_config sys_group_resource_mapping >admin_user.sql
|
||||||
|
sed -i '1s/^/use admin_user;\n/' admin_user.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_user sys_weak_password sys_resource sys_resource_api sys_resource_attr sys_action_api sys_group_resource_mapping sys_resource_group sys_resource_group_template >uav_user.sql
|
||||||
|
sed -i '1s/^/use uav_user;\n/' uav_user.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_oauth oauth_client_details >uav_oauth.sql
|
||||||
|
sed -i '1s/^/use uav_oauth;\n/' uav_oauth.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_mission calendar num >uav_mission.sql
|
||||||
|
sed -i '1s/^/use uav_mission;\n/' uav_mission.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF admin_data sys_area_config sys_area_pinyin sys_dictionary sys_dictionary_attr sys_dictionary_type sys_language uav_dev_action_match uav_dev_type_match uav_hangar_model uav_load_cam_model uav_load_spk_model uav_plane_model >admin_data.sql
|
||||||
|
sed -i '1s/^/use admin_data;\n/' admin_data.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF cmii_material_warehouse mw_scr >cmii_material_warehouse.sql
|
||||||
|
sed -i '1s/^/use cmii_material_warehouse;\n/' cmii_material_warehouse.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_brain scene_category_config scene_type_config >uav_brain.sql
|
||||||
|
sed -i '1s/^/use uav_brain;\n/' uav_brain.sql
|
||||||
|
|
||||||
|
#/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF nacos_config config_info his_config_info roles users > nacos_config.sql
|
||||||
|
#sed -i '1s/^/use nacos_config;\n/' nacos_config.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF cmii_live_srs_op live_hls_sync_hq live_hub >cmii_live_srs_op.sql
|
||||||
|
sed -i '1s/^/use cmii_live_srs_op;\n/' cmii_live_srs_op.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF suav_supervision airport sys_area_config sys_area_pinyin >suav_supervision.sql
|
||||||
|
sed -i '1s/^/use suav_supervision;\n/' suav_supervision.sql
|
||||||
|
|
||||||
|
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_gis emergence >uav_gis.sql
|
||||||
|
sed -i '1s/^/use uav_gis;\n/' uav_gis.sql
|
||||||
Reference in New Issue
Block a user