[agent-operator]-无聊的更新内容

This commit is contained in:
zeaslity
2024-12-02 18:04:13 +08:00
parent 88cb1e1bb1
commit 8f5f85826c
70 changed files with 45926 additions and 34521 deletions

558
agent-operator/CmiiK8sOperator_test.go Executable file → Normal file
View File

@@ -1,313 +1,321 @@
package main
import (
"bufio"
"fmt"
"strconv"
"testing"
"time"
"wdd.io/agent-common/assert"
"wdd.io/agent-common/pusher"
"wdd.io/agent-common/utils"
"wdd.io/agent-operator/config"
)
var CmiiDevNamespaceList = []string{
"uavcloud-dev",
"uavcloud-devflight",
"uavcloud-devoperation",
func TestCmiiK8sOperator_DeploymentAll(t *testing.T) {
start := time.Now()
deploymentList := DefaultCmiiOperator.DeploymentAll("devflight")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
var nameList []string
count := 1
for _, deployment := range deploymentList {
if deployment.Spec.Replicas != nil {
count++
}
nameList = append(nameList, deployment.Name)
}
t.Logf("deployment list lenght is => %d", count)
t.Logf("deployment name list are => %d", count)
utils.BeautifulPrint(nameList)
//for _, deployment := range deploymentList {
// utils.BeautifulPrint(deployment)
// println()
//}
}
func TestCmiiK8sOperator_DeploymentAllInterface(t *testing.T) {
start := time.Now()
deploymentList := DefaultCmiiOperator.DeploymentAllInterface("devflight")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
t.Logf("deployment list lenght is => %d", len(deploymentList))
for _, deployment := range deploymentList {
utils.BeautifulPrint(deployment)
println()
}
}
func TestFindAppNotHealthyOrRestartCountGreaterThanN(t *testing.T) {
func TestCmiiK8sOperator_DeploymentFizz(t *testing.T) {
deploymentRestartCountGreaterThanN := FindAppNotHealthyOrRestartCountGreaterThanN("devflight", 10)
deploymentRestartCountGreaterThanN = FilterAllCmiiAppSoft(deploymentRestartCountGreaterThanN)
start := time.Now()
deploymentFizz := DefaultCmiiOperator.DeploymentFizz("int", "cmii-suav-supervision")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
for _, deploymentInterface := range deploymentRestartCountGreaterThanN {
t.Logf("deployment list lenght is => %d", len(deploymentFizz))
cmiiDeploymentInterface := config.CmiiDeploymentInterface{}
for _, pod := range deploymentFizz {
convert := cmiiDeploymentInterface.Convert(pod)
utils.BeautifulPrint(convert)
utils.BeautifulPrint(pod)
}
// elastic search
}
func TestCmiiK8sOperator_DeploymentScale(t *testing.T) {
start := time.Now()
DefaultCmiiOperator.DeploymentScale(config.Demo, "cmii-uav-industrial-portfolio", 1)
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
}
func TestCmiiK8sOperator_DeploymentUpdateTag(t *testing.T) {
start := time.Now()
DefaultCmiiOperator.DeploymentUpdateTag("Demo", "cmii-uav-gateway", "5.7.0")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
}
func TestCmiiK8sOperator_DeploymentRestart(t *testing.T) {
cmiiEnv := config.Integration
appName := "cmii-uav-data-post-process"
DefaultCmiiOperator.DeploymentRestart(cmiiEnv, appName)
utils.SplitLinePrint()
check := DefaultCmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "deployment run failed!")
}
func TestCmiiK8sOperator_DeploymentRestartByKill(t *testing.T) {
cmiiEnv := "Demo"
appName := "cmii-uav-platform"
kill := DefaultCmiiOperator.DeploymentRestartByKill(cmiiEnv, appName)
assert.Equal(t, kill, true, "deployment restart by kill failed !")
utils.SplitLinePrint()
check := DefaultCmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "deployment run failed!")
}
func TestCmiiK8sOperator_DeploymentOneInterface(t *testing.T) {
start := time.Now()
deploy := DefaultCmiiOperator.DeploymentOneInterface("devflight", "cmii-uav-depotautoreturn")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
utils.BeautifulPrint(*deploy)
}
func TestCmiiK8sOperator_ReplicaSetExists(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
appName := "cmii-admin-data-bf8f87cb7"
exists := DefaultCmiiOperator.ReplicaSetExists(cmiiEnv, appName)
utils.BeautifulPrint(*exists)
}
func TestCmiiK8sOperator_ReplicaSetByAppName(t *testing.T) {
cmiiEnv := "uavcloud-devflight"
appName := "cmii-admin-data"
exists := DefaultCmiiOperator.ReplicaSetByAppName(cmiiEnv, appName)
for _, replicaSet := range exists {
utils.BeautifulPrint(replicaSet)
}
}
func TestCmiiK8sOperator_PodAll(t *testing.T) {
start := time.Now()
podList := DefaultCmiiOperator.PodAll("devflight")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
for _, pod := range podList {
println()
utils.BeautifulPrint(deploymentInterface)
utils.BeautifulPrint(pod)
println()
break
}
}
func TestCmiiK8sOperator_PodFizz(t *testing.T) {
start := time.Now()
podList := DefaultCmiiOperator.PodFizz("devflight", "cmii-uav-data-post-process")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
t.Logf("pod list lenght is => %d", len(podList))
cmiiPodInterface := config.CmiiPodInterface{}
for _, pod := range podList {
println()
utils.BeautifulPrint(pod)
println()
convert := cmiiPodInterface.Convert(pod)
utils.BeautifulPrint(convert)
}
}
func TestCmiiK8sOperator_PodByAppName(t *testing.T) {
cmiiEnv := "Uat"
appName := "cmii-admin-data"
exists := DefaultCmiiOperator.PodByNodeName(cmiiEnv, appName)
for _, podInterface := range exists {
utils.BeautifulPrint(podInterface)
}
}
func TestCmiiK8sOperator_PodFizz2(t *testing.T) {
start := time.Now()
podList := DefaultCmiiOperator.PodFizz("devflight", "notice")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
t.Logf("pod list lenght is => %d", len(podList))
podInterface := config.CmiiPodInterface{}
for _, pod := range podList {
convert := podInterface.Convert(pod)
println()
utils.BeautifulPrint(&convert)
println()
}
}
func TestFindDeploymentReplicasSmallerThanN(t *testing.T) {
func TestCmiiK8sOperator_PodByNodeName(t *testing.T) {
deploymentReplicasSmallerThanN := FindDeploymentReplicasSmallerThanN("devflight", 0)
cmiiEnv := config.DevOperation
nodeName := "Dev-master-01"
for _, deploymentInterface := range deploymentReplicasSmallerThanN {
println()
utils.BeautifulPrint(deploymentInterface)
println()
}
exists := DefaultCmiiOperator.PodByNodeName(cmiiEnv, nodeName)
exists = FilterAllCmiiPodSoft(exists)
for _, podInterface := range exists {
utils.BeautifulPrint(podInterface)
}
func TestFindCmiiMiddlewarePodInterface(t *testing.T) {
middlewarePodInterface := FindCmiiMiddlewarePodInterface(integration)
for _, middlePod := range middlewarePodInterface {
println()
utils.BeautifulPrint(middlePod)
println()
}
}
func TestRollBackCmiiDeploymentFromUpdateLog(t *testing.T) {
updateLog := RollBackCmiiDeploymentFromUpdateLog("2024-01-10-14-37-07 uavcloud-devflight cmii-uav-depotautoreturn 12345678 123sdsa45678")
assert.Equal(t, updateLog, true, "roll back from update log failed !")
}
func TestRestartCmiiBackendDeployment(t *testing.T) {
RestartCmiiBackendDeployment("dev")
}
func TestRestartCmiiFrontendDeployment(t *testing.T) {
RestartCmiiFrontendDeployment("dev")
}
func TestFindDeploymentNotHealthy(t *testing.T) {
for _, devNamespace := range CmiiDevNamespaceList {
notHealthy := FindDeploymentNotHealthy(devNamespace)
notHealthy = FilterAllCmiiAppSoft(notHealthy)
for _, deploymentInterface := range notHealthy {
utils.BeautifulPrint(deploymentInterface)
if !podInterface.PodStatus {
podDelete := DefaultCmiiOperator.PodDelete(podInterface.Namespace, podInterface.Name)
assert.Equal(t, podDelete, true, "delete pod failed !")
}
}
}
func TestFindAllNodeNotHealthy(t *testing.T) {
func TestCmiiK8sOperator_NodeCordon(t *testing.T) {
cmiiEnv := config.DevOperation
nodeName := "Dev-master-01"
cordon := DefaultCmiiOperator.NodeCordon(cmiiEnv, nodeName)
assert.Equal(t, cordon, true, "cordon node failed !")
}
func TestCmiiK8sOperator_NodeUnCordon(t *testing.T) {
cmiiEnv := config.DevOperation
nodeName := "Dev-06.ecs.io"
uncordon := DefaultCmiiOperator.NodeUnCordon(cmiiEnv, nodeName)
assert.Equal(t, uncordon, true, "uncordon node failed !")
}
func TestCmiiK8sOperator_PodEvictFromNode(t *testing.T) {
cmiiEnv := config.DevOperation
nodeName := "Dev-04.ecs.io"
podList := DefaultCmiiOperator.PodEvictFromNode(cmiiEnv, nodeName)
for _, podInterface := range podList {
utils.BeautifulPrint(podInterface)
}
}
func TestCmiiK8sOperator_PodExec(t *testing.T) {
podList := DefaultCmiiOperator.PodByAppName(config.DevFlight, "cmii-uav-gateway")
stdout, stderr := DefaultCmiiOperator.PodExec(config.DevFlight, podList[0], []string{
"env",
})
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
// Get the current line
line := scanner.Text()
// Check if the current line contains the search term
fmt.Println(line)
}
utils.SplitLinePrint()
scanner = bufio.NewScanner(stderr)
for scanner.Scan() {
// Get the current line
line := scanner.Text()
// Check if the current line contains the search term
fmt.Println(line)
}
}
func TestCmiiK8sOperator_DeploymentStatusCheck(t *testing.T) {
cmiiEnv := "devflight"
appName := "cmii-uav-gateway"
check := DefaultCmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "deployment run failed!")
}
func TestCmiiK8sOperator_NodeAll(t *testing.T) {
start := time.Now()
allNodeNotHealthy := FindAllNodeNotHealthy()
nodeList := DefaultCmiiOperator.NodeAll("Dev")
elapsed := time.Since(start).Milliseconds()
fmt.Printf("执行耗时: %d ms\n", elapsed)
allNodeNotHealthy = FilterAllCmiiNodeSoft(allNodeNotHealthy)
for _, node := range nodeList {
assert.Equal(t, len(allNodeNotHealthy), 0, "have unhealthy pod !")
println()
utils.BeautifulPrint(node)
println()
}
}
for _, nodeInterface := range allNodeNotHealthy {
func TestCmiiK8sOperator_NodeAllInterface(t *testing.T) {
cmiiNodeInterfaces := DefaultCmiiOperator.NodeAllInterface(config.Demo)
for _, nodeInterface := range cmiiNodeInterfaces {
println()
utils.BeautifulPrint(nodeInterface)
println()
}
}
func TestFindPodNotHealthy(t *testing.T) {
podNotHealthy := FindPodNotHealthy("devfl")
podNotHealthy = FilterAllCmiiPodSoft(podNotHealthy)
for _, podInterface := range podNotHealthy {
t.Logf("[%s] [%s]", podInterface.Name, podInterface.PodPhase)
}
}
func TestFindPodNotHealthy_And_Delete(t *testing.T) {
podNotHealthy := FindPodNotHealthy("devf")
podNotHealthy = FilterAllCmiiPodSoft(podNotHealthy)
for _, podInterface := range podNotHealthy {
t.Logf("[%s] [%s]", podInterface.Name, podInterface.PodPhase)
podDelete := DefaultCmiiOperator.PodDelete(podInterface.Namespace, podInterface.Name)
assert.Equal(t, podDelete, true, "delete of ", podInterface.Namespace, podInterface.Name, " failed !")
}
}
func TestFilterAllCmiiAppStrict(t *testing.T) {
allInterface := DefaultCmiiOperator.DeploymentAllInterface("devflight")
FilterAllCmiiAppStrict(allInterface)
}
func TestRestartDeploymentFromList(t *testing.T) {
allInterface := DefaultCmiiOperator.DeploymentAllInterface("devflight")
allInterface = FilterAllCmiiAppSoft(allInterface)
RestartDeploymentFromList(allInterface)
}
func TestBackupAllCmiiDeploymentToMap(t *testing.T) {
backendMap, frontendMap, srsMap := BackupAllCmiiDeploymentToMap(demo)
utils.BeautifulPrint(backendMap)
utils.BeautifulPrint(frontendMap)
utils.BeautifulPrint(srsMap)
}
func TestBackupAllCmiiDeploymentToList(t *testing.T) {
allCmiiImageList := BackupAllCmiiDeploymentToList(demo, true)
utils.BeautifulPrint(allCmiiImageList)
}
// Update DEMO by Tag Update
func TestUpdateCmiiImageTagFromNameTagMap(t *testing.T) {
backendMap := map[string]string{
"cmii-admin-data": "6.0.0",
"cmii-admin-gateway": "6.0.0",
"cmii-admin-user": "6.0.0",
"cmii-open-gateway": "6.0.0",
"cmii-suav-supervision": "6.0.0",
"cmii-uav-airspace": "6.0.0",
"cmii-uav-alarm": "6.0.0",
"cmii-uav-brain": "6.0.0",
"cmii-uav-cloud-live": "6.0.0",
"cmii-uav-cms": "6.0.0",
"cmii-uav-data-post-process": "6.0.0",
"cmii-uav-developer": "6.0.0",
"cmii-uav-device": "6.0.0",
"cmii-uav-emergency": "6.0.0",
"cmii-uav-gateway": "6.0.0",
"cmii-uav-gis-server": "6.0.0",
"cmii-uav-industrial-portfolio": "6.0.0",
"cmii-uav-integration": "6.0.0",
"cmii-uav-logger": "6.0.0",
"cmii-uav-material-warehouse": "6.0.0",
"cmii-uav-mission": "6.0.0",
"cmii-uav-mqtthandler": "6.0.0",
"cmii-uav-notice": "6.0.0",
"cmii-uav-oauth": "6.0.0",
"cmii-uav-process": "6.0.0",
"cmii-uav-surveillance": "6.0.0",
"cmii-uav-threedsimulation": "6.0.0",
"cmii-uav-tower": "6.0.0",
"cmii-uav-user": "6.0.0",
"cmii-uav-waypoint": "6.0.0",
"cmii-uav-sense-adapter": "6.0.0",
"cmii-uas-lifecycle": "6.0.0",
"cmii-uas-gateway": "6.0.0",
}
frontendMap := map[string]string{
"cmii-suav-platform-supervision": "6.0.0",
"cmii-suav-platform-supervisionh5": "6.0.0",
"cmii-uav-platform": "6.0.0",
"cmii-uav-platform-media": "6.0.0",
"cmii-uav-platform-ai-brain": "6.0.0",
"cmii-uav-platform-cms-portal": "6.0.0",
"cmii-uav-platform-armypeople": "6.0.0",
"cmii-uav-platform-mws": "6.0.0",
"cmii-uav-platform-oms": "6.0.0",
"cmii-uav-platform-open": "6.0.0",
"cmii-uav-platform-securityh5": "6.0.0",
"cmii-uav-platform-share": "6.0.0",
"cmii-uav-platform-uasms": "6.0.0",
"cmii-uav-platform-uas": "6.0.0",
//"cmii-uav-platform-base": "5.7.0",
//"cmii-uav-platform-detection": "5.7.0",
//"cmii-uav-platform-emergency-rescue": "5.7.0",
//"cmii-uav-platform-logistics": "5.7.0",
//"cmii-uav-platform-multiterminal": "5.7.0",
//"cmii-uav-platform-seniclive": "5.7.0",
//"cmii-uav-platform-splice": "5.7.0",
//"cmii-uav-platform-threedsimulation": "5.7.0",
//"cmii-uav-platform-visualization": "5.7.0",
//"cmii-uav-platform-security": "4.1.6",
}
result := UpdateCmiiImageTagFromNameTagMap(demo, backendMap)
utils.BeautifulPrint(result)
result = UpdateCmiiImageTagFromNameTagMap(demo, frontendMap)
utils.BeautifulPrint(result)
}
func TestScaleCmiiFrontendDeploymentToDesiredReplicas(t *testing.T) {
ScaleCmiiFrontendDeploymentToDesiredReplicas(dev, 0)
}
func TestScaleCmiiBackendDeploymentToDesiredReplicas(t *testing.T) {
ScaleCmiiBackendDeploymentToDesiredReplicas(dev, 0)
}
func TestBackupAllDeploymentFromEnv(t *testing.T) {
BackupAllDeploymentFromEnvToFile(demo)
}
func TestBackUpAllCmiiAppImageNameFromEnv(t *testing.T) {
BackUpAllCmiiAppImageNameFromEnv(demo)
}
func TestRestartCmiiDeployment(t *testing.T) {
cmiiEnv := integration
appName := "cmii-uav-platform"
kill := DefaultCmiiOperator.DeploymentRestartByKill(cmiiEnv, appName)
assert.Equal(t, kill, true, "have unhealthy pod !")
check := DefaultCmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 180)
assert.Equal(t, check, true, "DeploymentStatusCheck failed !")
}
func TestUpdateCmiiDeploymentImageTag(t *testing.T) {
//计算20:00的时间
now := time.Now()
targetTime := time.Date(now.Year(), now.Month(), now.Day(), 9, 28, 00, 0, now.Location())
duration := time.Duration(0)
if !now.After(targetTime) {
// 计算到20:00的剩余时间
duration = targetTime.Sub(now)
} else {
// 如果当前时间已经过了20:00那么就跳到下一天
//targetTime = targetTime.Add(24 * time.Hour)
}
fmt.Println(duration)
// 等待到20:00
time.Sleep(duration)
cmiiEnv := demo
appNameTagMap := map[string]string{
"cmii-uas-lifecycle": "6.0.0-111201",
}
for appName, newTag := range appNameTagMap {
ok, oldImageTag, newImageTag := UpdateCmiiDeploymentImageTag(cmiiEnv, appName, newTag)
if !ok {
log.ErrorF("update image tag failed !")
UpdateCmiiDeploymentImageTag(cmiiEnv, appName, oldImageTag)
}
utils.SplitLinePrint()
check := DefaultCmiiOperator.DeploymentStatusCheck(cmiiEnv, appName, 300)
assert.Equal(t, check, true, "deployment run failed!")
if !check {
UpdateCmiiDeploymentImageTag(cmiiEnv, appName, oldImageTag)
}
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, appName)
// push message
message := pusher.CmiiUpdateMessage{
Namespace: cmiiEnv,
AppName: appName,
FromTag: oldImageTag,
ToTag: newImageTag,
Replicas: strconv.FormatInt(int64(deploy.Replicas), 10),
DeployStatus: check,
}
message.SendMessage()
}
}