[ Agent ] [ CMII ] - 完成工具类的代码
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,7 +2,6 @@ HELP.md
|
|||||||
target/
|
target/
|
||||||
!.mvn/wrapper/maven-wrapper.jar
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
!**/src/main/**/target/
|
!**/src/main/**/target/
|
||||||
!**/src/test/**/target/
|
|
||||||
|
|
||||||
### STS ###
|
### STS ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
|
|||||||
@@ -353,7 +353,7 @@ func (op *AgentOsOperator) deployTestNFS(funcArgs []string) (bool, []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 下载模板文件
|
// 下载模板文件
|
||||||
k8sNFSYamlFile := "/root/wdd/install/k8s-nfs-test.yaml"
|
k8sNFSYamlFile := "/root/wdd/install/k8s-nfs-test.json"
|
||||||
ok, resultLog := BasicDownloadFile(op.OssOfflinePrefix+nfsTemplateFile, k8sNFSYamlFile)
|
ok, resultLog := BasicDownloadFile(op.OssOfflinePrefix+nfsTemplateFile, k8sNFSYamlFile)
|
||||||
if !ok {
|
if !ok {
|
||||||
return false, resultLog
|
return false, resultLog
|
||||||
|
|||||||
@@ -1244,7 +1244,7 @@ func (op *AgentOsOperator) installNFSServerOfflineExec() (bool, []string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for version
|
// check for the version
|
||||||
executor, i := HardCodeCommandExecutor("grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '\"' | sed 's/ /-/g'")
|
executor, i := HardCodeCommandExecutor("grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '\"' | sed 's/ /-/g'")
|
||||||
if !executor {
|
if !executor {
|
||||||
return false, append(i, "[installNFSServerOfflineExec]- get offline package name suffix error !")
|
return false, append(i, "[installNFSServerOfflineExec]- get offline package name suffix error !")
|
||||||
|
|||||||
@@ -503,3 +503,17 @@ func BasicAppendNullToFile(targetFile string) bool {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BasicWordSpaceCompletion(source string, totalLength int) string {
|
||||||
|
sourceLength := len(source)
|
||||||
|
|
||||||
|
if sourceLength >= totalLength {
|
||||||
|
return source
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < totalLength-sourceLength; i++ {
|
||||||
|
source += " "
|
||||||
|
}
|
||||||
|
|
||||||
|
return source
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,11 +25,12 @@ const (
|
|||||||
|
|
||||||
// 创建协程池子
|
// 创建协程池子
|
||||||
var pool, _ = ants.NewPool(
|
var pool, _ = ants.NewPool(
|
||||||
100,
|
20,
|
||||||
ants.WithNonblocking(false),
|
ants.WithNonblocking(false),
|
||||||
ants.WithLogger(logger2.Log),
|
ants.WithLogger(logger2.Log),
|
||||||
ants.WithMaxBlockingTasks(30),
|
ants.WithMaxBlockingTasks(10),
|
||||||
ants.WithDisablePurge(true),
|
ants.WithDisablePurge(true),
|
||||||
|
ants.WithPreAlloc(true),
|
||||||
)
|
)
|
||||||
|
|
||||||
var G = NewGlobal(
|
var G = NewGlobal(
|
||||||
|
|||||||
115
agent-go/k8s_exec/CmiiK8sConfig.go
Normal file
115
agent-go/k8s_exec/CmiiK8sConfig.go
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
var CmiiFrontendAppName = []string{
|
||||||
|
"cmii-uav-platform",
|
||||||
|
"cmii-uav-platform-oms",
|
||||||
|
"cmii-uav-platform-mws",
|
||||||
|
"cmii-uav-platform-cms-portal",
|
||||||
|
"cmii-uav-platform-armypeople",
|
||||||
|
"cmii-uav-platform-share",
|
||||||
|
"cmii-suav-platform-supervisionh5",
|
||||||
|
"cmii-suav-platform-supervision",
|
||||||
|
"cmii-uav-platform-ai-brain",
|
||||||
|
"cmii-uav-platform-base",
|
||||||
|
"cmii-uav-platform-detection",
|
||||||
|
"cmii-uav-platform-emergency-rescue",
|
||||||
|
"cmii-uav-platform-logistics",
|
||||||
|
"cmii-uav-platform-media",
|
||||||
|
"cmii-uav-platform-open",
|
||||||
|
"cmii-uav-platform-security",
|
||||||
|
"cmii-uav-platform-securityh5",
|
||||||
|
"cmii-uav-platform-seniclive",
|
||||||
|
"cmii-uav-platform-threedsimulation",
|
||||||
|
"cmii-uav-platform-visualization",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiBackendAppName = []string{
|
||||||
|
"cmii-uav-gateway",
|
||||||
|
"cmii-uav-oauth",
|
||||||
|
"cmii-uav-user",
|
||||||
|
"cmii-uav-material-warehouse",
|
||||||
|
"cmii-uav-device",
|
||||||
|
"cmii-uav-mission",
|
||||||
|
"cmii-uav-mqtthandler",
|
||||||
|
"cmii-uav-surveillance",
|
||||||
|
"cmii-uav-waypoint",
|
||||||
|
"cmii-uav-airspace",
|
||||||
|
"cmii-uav-industrial-portfolio",
|
||||||
|
"cmii-uav-integration",
|
||||||
|
"cmii-admin-data",
|
||||||
|
"cmii-admin-gateway",
|
||||||
|
"cmii-admin-user",
|
||||||
|
"cmii-uav-cloud-live",
|
||||||
|
"cmii-uav-emergency",
|
||||||
|
"cmii-uav-cms",
|
||||||
|
"cmii-open-gateway",
|
||||||
|
"cmii-uav-cloud-live",
|
||||||
|
"cmii-uav-alarm",
|
||||||
|
"cmii-uav-brain",
|
||||||
|
"cmii-app-release",
|
||||||
|
"cmii-uav-notice",
|
||||||
|
"cmii-suav-supervision",
|
||||||
|
"cmii-uav-autowaypoint",
|
||||||
|
"cmii-uav-data-post-process",
|
||||||
|
"cmii-uav-depotautoreturn",
|
||||||
|
"cmii-uav-developer",
|
||||||
|
"cmii-uav-kpi-monitor",
|
||||||
|
"cmii-uav-logger",
|
||||||
|
"cmii-uav-process",
|
||||||
|
"cmii-uav-threedsimulation",
|
||||||
|
"cmii-uav-tower",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiStreamAppName = []string{
|
||||||
|
"cmii-uav-cloud-live",
|
||||||
|
"helm-live-op-v2",
|
||||||
|
"helm-live-rtsp-op",
|
||||||
|
"helm-live-rtsp-zlm",
|
||||||
|
"helm-vms-deploy",
|
||||||
|
}
|
||||||
|
|
||||||
|
var CmiiGISAppName = []string{
|
||||||
|
"cmii-uav-gis-server",
|
||||||
|
"cmii-uav-grid-datasource",
|
||||||
|
"cmii-uav-grid-engine",
|
||||||
|
"cmii-uav-grid-manage",
|
||||||
|
}
|
||||||
|
var CmiiDevK8sConfig = `apiVersion: v1
|
||||||
|
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=`
|
||||||
|
|
||||||
|
var CmiiCoreK8sConfig = `apiVersion: v1
|
||||||
|
clusters:
|
||||||
|
- cluster:
|
||||||
|
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01URXhOakUwTURJd09Wb1hEVE13TVRFeE5ERTBNREl3T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTEZhCjV4N0M2MisrZjA5UXUzVWR6UUFXRDN4NDRkTVV6bkxvTjc5Y0RTbzduYjhTd0JmMzk2aFEwaEdiT2lDUXhLc1IKczJhcXl2N0dLUXAvdTVNbUU0bXF1YWEybE1yUkc1UWFJOWhHNlp5SDdxYkFlU0dZSVplZGVoMWF6bzVnblBWRwoyck5aVWR3WU5tUXYvemF6V3dSbi9QQUNuNEt4MkxjYVVJUm16YkZHRnJ2VXl3UDl4UTc2MlNvRWZoMENycEpvCmltTHR3ZGFOU3dweGRCTFpkcXlRY05xRVV0dUI2VXVVM0Z3Y2FBckJpNTZ1OTFJbHVEWS9Dd1UyeDJCSHR1WkwKR2RuQUM0c1VhWm9oZzRFZ0U3UEp6RnFXTUtyaGRmekRzc05EK1VhV2sxRmhvRzViVWZiQ051Zy9KUnNlRzJBZQpodjAvU1ZNcSs5WWYyR0dheC9NQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFGdVYxK3Z4UGVrUm82T2U2YTI4NmFHQjduWG0KMUlGVllwSWUxeTVoZy9aTlhKN1RndXFPb2Zjc3JnZ1h2MmdaQkdFN0pheTM0SkhuRFB3Y3ZCMzhHQUxtZmZWeAo2THJVN2ZtSWlpajRIc1NyaHRrMWQzcmhjdFkwMEw2dGJMMzVvTWJnUGwzSERUbGh0M0wxM0gvUVFScXR3TXFOCnBHeWk3VWprbFNpNWVsRWJrbnlUUy9OWTA1Y1JyMTU2N0p4N3F3QlpmUlZaZURUOHdidHpMZ05UWlFZRzVoM2EKQmp6dnlINFoyR2YrNnM4aXZlbGFUMjdPbGpOUTJvUUdyenhHV0ErZGJKSzNIdDVRRkVCeDdVaEsrNWtwYXViNwpWZTB1ekdGK1ZDb2ZFV2FtNk9CUFAycE51SW85d0Jsa24vbU9FUW5SU1FNMW15dmlIWHBaMnVKd1ozbz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||||
|
server: https://vip.ecs.io:6444
|
||||||
|
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: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4ekNDQWR1Z0F3SUJBZ0lKQU5ZM0hyTXZseUZjTUEwR0NTcUdTSWIzRFFFQkN3VUFNQlV4RXpBUkJnTlYKQkFNVENtdDFZbVZ5Ym1WMFpYTXdIaGNOTWpFd01URTFNRGd6T0RNNFdoY05NekV3TVRFek1EZ3pPRE00V2pBMApNUmN3RlFZRFZRUUtEQTV6ZVhOMFpXMDZiV0Z6ZEdWeWN6RVpNQmNHQTFVRUF3d1FhM1ZpWlhKdVpYUmxjeTFoClpHMXBiakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMS21TZDJIeVdYN2VTdnYKdS8yRnBZQWM5SWRBcFlQbmtESk5wR0Z1SEVlOUJWVXMyL1o3L3BQWGY3NTljVFdZUkV2V0dybDBNS1dTajhycAowQ2JTN3dvdkg2NnpTcWNKRDUzMW11OTgvaE0zenZzaTVqalIxOU5yTEFIL0QzbEZ6d2VnVHpNUWFvenNPc2VOCm0vNmI5cGRLNUcwYkNPRkJlZTRzeW1VdnVjT1NKblg5YkpZUnhNbVI5WHl3REowcnpTSHJrVE9ocVErUXYzdTAKMGZvVk9NSm9BdWkvR2JEV3ZpTEQrRmlDMnFJY0FYRGhNaGd2eVJwTFBPNFlZc0tCc2xjUVJwbkpjei9heFRBUQovM0c3T1pYWjJkNWVDQmRDY0pqL2orNlkyNVJsVXNDNDZzZWR1cTR0SGMrbEJ3UG5FSDYvTG53SUE0VHVaRXBpCkI3Q3RyU0VDQXdFQUFhTW5NQ1V3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUYKQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ0llSU0wSllLVjNiNUhISEdzMmV0eEt0VnQwaGNBTzNmcgpCcU5Ba3lPNkpvWkU2dnh3Nm5lQXNhc3V5RXh1NDFiMmlwYTJFdFlsTUNWbHE0anhjQWptMnU4b0xWb3NoWWIxClU4MkRqMkJuV2Z6TnhKV3dqSnQ5UzFhUXZmOXFxaDhueGJTeUVhNmxMZmEvTEpFQURzMDZNR05tQUJxbk5ZUVEKcEh1UnNXQlhwT3lSaWhtMHdlK21UNGwxYklMZ0Zpa2ZSaUw1WkRnWVlTNG9BRVpGY1NBbldKRFhSVTI0S0JIRQppYXk4SlNIcks1Ym12TWVpR1ZkL054WlhmSFdCcUcvZUI1SDRuaFhtVzhWbEdjQnhvdDBvckVta2FsblFpYnEwCnBWNUlwcXFBU3JjcjZnVUxrRmtvdWo1aG9rNWdIdWpqakFkenVSa3hyYTJiNERFa05jTTQKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||||
|
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBc3FaSjNZZkpaZnQ1SysrNy9ZV2xnQnowaDBDbGcrZVFNazJrWVc0Y1I3MEZWU3piCjluditrOWQvdm4xeE5aaEVTOVlhdVhRd3BaS1B5dW5RSnRMdkNpOGZyck5LcHdrUG5mV2E3M3orRXpmTyt5TG0KT05IWDAyc3NBZjhQZVVYUEI2QlBNeEJxak93Nng0MmIvcHYybDBya2JSc0k0VUY1N2l6S1pTKzV3NUltZGYxcwpsaEhFeVpIMWZMQU1uU3ZOSWV1Uk02R3BENUMvZTdUUitoVTR3bWdDNkw4WnNOYStJc1A0V0lMYW9od0JjT0V5CkdDL0pHa3M4N2hoaXdvR3lWeEJHbWNselA5ckZNQkQvY2JzNWxkblozbDRJRjBKd21QK1A3cGpibEdWU3dManEKeDUyNnJpMGR6NlVIQStjUWZyOHVmQWdEaE81a1NtSUhzSzJ0SVFJREFRQUJBb0lCQUdCam1EY09ySHQ1MDBjQgpja3kzYnpSUWF4OE9vajhwRVlRU29ENXhTcERxUzVaSlBlVWZ3WnZEQ2dtZFpSZWxzRE82c1hDZVlDRDFrdC9JCmg2WnE2TTUxM29KRCttTmxZQ2U1L0g1NjBodE1ZVURlODVoMG9CNVNGTXgrOGJwZEQvYnRaODRGYlhmYmZWdHQKN0Z6VGlaalhyNmV1am52NjkrNnAvQW5jVmo1T0ZRNTZOeHZjbGpxWitlNVM4TDhtZzFUWkpPS3ZRck4vRkRBSAplSHVNeldEcTlLVURXaU9LN0d3aDFGWHdoVTV2T3BwMTRtZjVCVmp4Y3Qvek9DcHdLd2NYaE5NUVRTTVhYUHFsCllBTjBOKzMzb1pkenRxUEtJWHVjaGp3aFhQOWJCZ2REc0M3MTgzNDlWZFRMblZBN2doQlRCcUJRVFVlWitrVnMKU2xwcENvRUNnWUVBNlRteEJyWXMybDExWmtNUDhyenRtcXhiRlNaU0t0bnh1Rk5LNTlRU3ZPQkVFMmlGUCtxMQpwdHY2elhQWkVaVFBoeUowWU83VFcxQk5mZjJUaVdpNzA1TDFlUTVIVlU3QjVMQkthSkV6RFdPYmt6NWxOWk5GCmxWdnM0UGg3SzJvdjBuNjJkMnZlclpZQzBCOWlpUGlFbHFLaFRialF4QzZJYzM3YWtVQytmb01DZ1lFQXhCaEgKUXJ0ZzlrMHVlejJ6ek5SQ1dXb0Jsa0xwdjhEWU1pUFB5aWZUS0dHZDN5c0hIc05RQVZVTDR1YngzdFkrUjdzeApUS2pRb2dSd2tobTJmQUMvN0VRenZNbXMrYWtEai9wUWVXUDU5VVlOK1ptUUFPbDBtQUx2NnovM0RGMnl6RHI5Ckx4eDBieTJXMERpMGs1N0lER3lIV3ZKUHROcmRBZkY1NlV5VVZJc0NnWUJyNnNNTVBQMnlLUzZxbS90a01hR3MKUVhaLzZkUjVlWkdNM2hXNkFmcU5wU1E2NnRGRml5QjB6ak5XSC9YZ1djQlJZbE1CaTJFSFRyZ2N4Vm9nYWZNSAphbWZsbFFMUzZYZDBqMUpPNG1rQ0dBWWo4dW80Q1NaWWYwbXpxNmFxcHg3cndyQkJ3QXN3dlVvZDdYZlZzMUQrCnRzLzJ1NzcyR0NZUmN6QkZwL1M5YXdLQmdGdXd6b0ZSaElFbWpibHFuSXdHSkJBVEZUTGhqdEx1cFNpc3ZoaFUKanRPdThWYk1rOE82cDhvM3Joc215YW5jbTdxR3VRS1RYUnFrNE00djM3Z1QwYW4wS2d6NGNEMDgza0dRVmRpcworcy9KTmZlajZrWEM0NVhBcWRaaVRtNGwwZGpWTEZXL0JHS0grcURhSXZWenBTN0tBSEJ5SlByMzY2ZGc5aFEwCmpwY0pBb0dBRE50eWMrSlVTSmVhQUd5ZlluUEFkRnBSakZQNUZ6ZGdod1JLNVR2WVI0c2Qwd1lyTXVVNnRPSVQKMHpGMUEwTlRSbmI0SStpUklzU3plZ0xzSHg1OXJKNnY2d3Q3NlIwUEFjWlB6cDVkemxTbXYybGRPNEE5MVRLegp2dEIxRGZHUm5pQ1dpOURjRkJpaVRVZlZUbXRtU3pCRGdsREVQUE51Q0txaGkvamRvQVU9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==`
|
||||||
135
agent-go/k8s_exec/CmiiK8sOperator.go
Normal file
135
agent-go/k8s_exec/CmiiK8sOperator.go
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"agent-go/executor"
|
||||||
|
"agent-go/utils"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var CmiiOperator = CmiiK8sOperator{}
|
||||||
|
|
||||||
|
// FindDeploymentRestartCountGreaterThanN 重启次数大于N的所有Deployment
|
||||||
|
func FindDeploymentRestartCountGreaterThanN(cmiiEnv string, restartCount int32) []CmiiDeploymentInterface {
|
||||||
|
|
||||||
|
//podInterface := CmiiPodInterface{}
|
||||||
|
|
||||||
|
// get all pods
|
||||||
|
podAll := CmiiOperator.PodAll(cmiiEnv)
|
||||||
|
|
||||||
|
// restart map
|
||||||
|
restartMap := make(map[string]int32, len(podAll))
|
||||||
|
|
||||||
|
// restart count
|
||||||
|
for _, pod := range podAll {
|
||||||
|
for _, containerStatus := range pod.Status.ContainerStatuses {
|
||||||
|
if containerStatus.RestartCount > restartCount {
|
||||||
|
restart, exists := restartMap[containerStatus.Name]
|
||||||
|
if exists {
|
||||||
|
restartMap[containerStatus.Name] = utils.MaxInt32(containerStatus.RestartCount, restart)
|
||||||
|
} else {
|
||||||
|
restartMap[containerStatus.Name] = containerStatus.RestartCount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result := make([]CmiiDeploymentInterface, len(restartMap))
|
||||||
|
cmiiDeploymentInterface := CmiiDeploymentInterface{}
|
||||||
|
index := 0
|
||||||
|
|
||||||
|
//log.DebugF("[FindDeploymentRestartCountGreaterThanN] - restart map is => %v", restartMap)
|
||||||
|
// find deployment convert to interface
|
||||||
|
for key, value := range restartMap {
|
||||||
|
deployment := CmiiOperator.DeploymentExist(cmiiEnv, key)
|
||||||
|
if deployment != nil {
|
||||||
|
// deployment exists
|
||||||
|
log.DebugF("[FindDeploymentRestartCountGreaterThanN] - restart [%s] [%s] is [%d]", cmiiEnv, key, value)
|
||||||
|
|
||||||
|
convert := cmiiDeploymentInterface.Convert(*deployment)
|
||||||
|
result[index] = convert
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result[:index]
|
||||||
|
}
|
||||||
|
|
||||||
|
func RestartDeploymentFromList(deploymentList []CmiiDeploymentInterface) bool {
|
||||||
|
|
||||||
|
result := true
|
||||||
|
|
||||||
|
for _, deployment := range deploymentList {
|
||||||
|
result = CmiiOperator.DeploymentScale(deployment.Namespace, deployment.Name, 0)
|
||||||
|
if !result {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
time.Sleep(time.Second)
|
||||||
|
result = CmiiOperator.DeploymentScale(deployment.Namespace, deployment.Name, deployment.Replicas)
|
||||||
|
if !result {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func RestartCmiiBackendDeployment(cmiiEnv string) {
|
||||||
|
|
||||||
|
cmiiDeploymentInterfaces := CmiiOperator.DeploymentAllInterface(cmiiEnv)
|
||||||
|
|
||||||
|
for _, deploymentInterface := range cmiiDeploymentInterfaces {
|
||||||
|
if strings.Contains(deploymentInterface.Name, "platform") {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCmiiAllDeploymentFromDemo 从DEMO提取全部的CMII的应用
|
||||||
|
func GetCmiiAllDeploymentFromDemo() {
|
||||||
|
allInterface := CmiiOperator.DeploymentAllInterface("demo")
|
||||||
|
|
||||||
|
filePath := "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-go\\k8s_exec\\all-cmii-image.txt"
|
||||||
|
|
||||||
|
firstCol := 0
|
||||||
|
secondCol := 0
|
||||||
|
thirdCol := 0
|
||||||
|
|
||||||
|
for _, deploymentInterface := range allInterface {
|
||||||
|
if strings.Contains(deploymentInterface.Name, "proxy") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
firstCol = utils.MaxInt(len(deploymentInterface.Name), firstCol)
|
||||||
|
|
||||||
|
for name, image := range deploymentInterface.ContainerImageMap {
|
||||||
|
secondCol = utils.MaxInt(len(name), secondCol)
|
||||||
|
thirdCol = utils.MaxInt(len(image), thirdCol)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
firstCol += 4
|
||||||
|
secondCol += 4
|
||||||
|
secondCol += firstCol
|
||||||
|
thirdCol += 4
|
||||||
|
thirdCol += secondCol
|
||||||
|
|
||||||
|
for _, deploymentInterface := range allInterface {
|
||||||
|
if strings.Contains(deploymentInterface.Name, "proxy") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
content := executor.BasicWordSpaceCompletion(deploymentInterface.Name, firstCol)
|
||||||
|
|
||||||
|
for name, image := range deploymentInterface.ContainerImageMap {
|
||||||
|
content = executor.BasicWordSpaceCompletion(content+name, secondCol)
|
||||||
|
content = executor.BasicWordSpaceCompletion(content+image, thirdCol)
|
||||||
|
content += "\n"
|
||||||
|
|
||||||
|
if !executor.BasicAppendContentToFile(content, filePath) {
|
||||||
|
log.ErrorF("[GetCmiiAllDeploymentFromDemo] - write to file %s error with contend %s", filePath, content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
23
agent-go/k8s_exec/CmiiK8sOperator_test.go
Normal file
23
agent-go/k8s_exec/CmiiK8sOperator_test.go
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"agent-go/utils"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestFindDeploymentRestartCountGreaterThanN(t *testing.T) {
|
||||||
|
|
||||||
|
deploymentRestartCountGreaterThanN := FindDeploymentRestartCountGreaterThanN("devflight", 10)
|
||||||
|
|
||||||
|
for _, deploymentInterface := range deploymentRestartCountGreaterThanN {
|
||||||
|
println()
|
||||||
|
utils.BeautifulPrint(deploymentInterface)
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetCmiiAllDeploymentFromDemo(t *testing.T) {
|
||||||
|
|
||||||
|
GetCmiiAllDeploymentFromDemo()
|
||||||
|
}
|
||||||
76
agent-go/k8s_exec/CmiiStatus.go
Normal file
76
agent-go/k8s_exec/CmiiStatus.go
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1 "k8s.io/api/apps/v1"
|
||||||
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CmiiInterfaceConvert interface {
|
||||||
|
}
|
||||||
|
|
||||||
|
type CmiiPodInterface struct {
|
||||||
|
Name string
|
||||||
|
Namespace string
|
||||||
|
//ReplicaSetName string
|
||||||
|
ContainerImageMap map[string]string
|
||||||
|
PodIP string
|
||||||
|
HostIP string
|
||||||
|
NodeName string
|
||||||
|
RestartCountMap map[string]int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type CmiiDeploymentInterface struct {
|
||||||
|
Name string
|
||||||
|
Namespace string
|
||||||
|
AvailableReplicas int32
|
||||||
|
Replicas int32
|
||||||
|
ContainerImageMap map[string]string
|
||||||
|
StatusOk bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (deploy CmiiDeploymentInterface) Convert(deployment v1.Deployment) CmiiDeploymentInterface {
|
||||||
|
|
||||||
|
containers := deployment.Spec.Template.Spec.Containers
|
||||||
|
|
||||||
|
containerImageMap := make(map[string]string, len(containers))
|
||||||
|
for _, container := range containers {
|
||||||
|
containerImageMap[container.Name] = container.Image
|
||||||
|
}
|
||||||
|
|
||||||
|
deploy.Name = deployment.Name
|
||||||
|
deploy.Namespace = deployment.Namespace
|
||||||
|
deploy.AvailableReplicas = deployment.Status.AvailableReplicas
|
||||||
|
deploy.Replicas = *deployment.Spec.Replicas
|
||||||
|
deploy.ContainerImageMap = containerImageMap
|
||||||
|
deploy.StatusOk = deployment.Status.AvailableReplicas == *deployment.Spec.Replicas
|
||||||
|
|
||||||
|
return deploy
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pod CmiiPodInterface) Convert(podDetail corev1.Pod) CmiiPodInterface {
|
||||||
|
|
||||||
|
containers := podDetail.Spec.Containers
|
||||||
|
containerImageMap := make(map[string]string, len(containers))
|
||||||
|
for _, container := range containers {
|
||||||
|
containerImageMap[container.Name] = container.Image
|
||||||
|
}
|
||||||
|
|
||||||
|
containerStatuses := podDetail.Status.ContainerStatuses
|
||||||
|
containerStatusMap := make(map[string]int32, len(containerStatuses))
|
||||||
|
for _, containerStatus := range containerStatuses {
|
||||||
|
containerStatusMap[containerStatus.Name] = containerStatus.RestartCount
|
||||||
|
}
|
||||||
|
|
||||||
|
pod.Name = podDetail.Name
|
||||||
|
pod.Namespace = podDetail.Namespace
|
||||||
|
pod.ContainerImageMap = containerImageMap
|
||||||
|
pod.RestartCountMap = containerStatusMap
|
||||||
|
pod.PodIP = podDetail.Status.PodIP
|
||||||
|
pod.HostIP = podDetail.Status.HostIP
|
||||||
|
pod.NodeName = podDetail.Spec.NodeName
|
||||||
|
//if len(podDetail.ObjectMeta.OwnerReferences) > 0 {
|
||||||
|
// pod.ReplicaSetName = podDetail.ObjectMeta.OwnerReferences[0].Name
|
||||||
|
//}
|
||||||
|
|
||||||
|
return pod
|
||||||
|
}
|
||||||
403
agent-go/k8s_exec/K8sOperator.go
Normal file
403
agent-go/k8s_exec/K8sOperator.go
Normal file
@@ -0,0 +1,403 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"agent-go/g"
|
||||||
|
"agent-go/logger"
|
||||||
|
"agent-go/utils"
|
||||||
|
"context"
|
||||||
|
"k8s.io/api/apps/v1"
|
||||||
|
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
||||||
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/client-go/kubernetes"
|
||||||
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
var log = logger.Log
|
||||||
|
var pool = g.G.P
|
||||||
|
|
||||||
|
type CmiiK8sOperator struct {
|
||||||
|
DevClient *kubernetes.Clientset
|
||||||
|
CoreClient *kubernetes.Clientset
|
||||||
|
CurrentNamespace string
|
||||||
|
CurrentClient *kubernetes.Clientset
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
dev = "uavcloud-dev"
|
||||||
|
devFlight = "uavcloud-devflight"
|
||||||
|
devOperation = "uavcloud-devoperation"
|
||||||
|
validation = "uavcloud-feature"
|
||||||
|
integration = "uavcloud-test"
|
||||||
|
demo = "uavcloud-demo"
|
||||||
|
workerThread = 4
|
||||||
|
)
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
|
||||||
|
|
||||||
|
if op.DevClient == nil {
|
||||||
|
log.InfoF("[client] - build devFlight k8s operator client !")
|
||||||
|
devConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiDevK8sConfig))
|
||||||
|
if err != nil {
|
||||||
|
msg := "[client] - build devFlight k8s operator error !"
|
||||||
|
log.Error(msg)
|
||||||
|
panic(msg)
|
||||||
|
}
|
||||||
|
op.DevClient, err = kubernetes.NewForConfig(devConfig)
|
||||||
|
if err != nil {
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if op.CoreClient == nil {
|
||||||
|
log.InfoF("[client] - build core k8s operator client !")
|
||||||
|
coreConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiCoreK8sConfig))
|
||||||
|
if err != nil {
|
||||||
|
msg := "[client] - build devFlight k8s operator error !"
|
||||||
|
log.Error(msg)
|
||||||
|
panic(msg)
|
||||||
|
}
|
||||||
|
op.CoreClient, err = kubernetes.NewForConfig(coreConfig)
|
||||||
|
if err != nil {
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) changeOperatorEnv(cmiiEnv string) {
|
||||||
|
|
||||||
|
// ok
|
||||||
|
op.checkAndBuildCmiiK8sOperator()
|
||||||
|
|
||||||
|
if strings.Contains(cmiiEnv, "dev") {
|
||||||
|
op.CurrentClient = op.DevClient
|
||||||
|
} else {
|
||||||
|
op.CurrentClient = op.CoreClient
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(cmiiEnv, "dev") {
|
||||||
|
if strings.Contains(cmiiEnv, "f") {
|
||||||
|
op.CurrentNamespace = devFlight
|
||||||
|
} else if strings.Contains(cmiiEnv, "o") {
|
||||||
|
op.CurrentNamespace = devOperation
|
||||||
|
} else {
|
||||||
|
op.CurrentNamespace = dev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(cmiiEnv, "int") || strings.Contains(cmiiEnv, "test") {
|
||||||
|
op.CurrentNamespace = integration
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(cmiiEnv, "fe") || strings.Contains(cmiiEnv, "val") {
|
||||||
|
op.CurrentNamespace = validation
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Contains(cmiiEnv, "demo") {
|
||||||
|
op.CurrentNamespace = demo
|
||||||
|
}
|
||||||
|
|
||||||
|
if op.CurrentNamespace == "" {
|
||||||
|
op.CurrentNamespace = dev
|
||||||
|
}
|
||||||
|
|
||||||
|
log.InfoF("[k8s env] - current env is => %s", op.CurrentNamespace)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) DeploymentAll(cmiiEnv string) []v1.Deployment {
|
||||||
|
|
||||||
|
op.changeOperatorEnv(cmiiEnv)
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
deploymentList, err := client.AppsV1().Deployments(op.CurrentNamespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[DeploymentAll] - list deployment in [%s] [%s] error => %s", cmiiEnv, op.CurrentNamespace, err.Error())
|
||||||
|
}
|
||||||
|
deployments := deploymentList.Items
|
||||||
|
|
||||||
|
length := len(deployments)
|
||||||
|
log.InfoF("[DeploymentAll] - deployment in [%s] count is => %d", op.CurrentNamespace, length)
|
||||||
|
results := make([]v1.Deployment, length)
|
||||||
|
//var results []v1.Deployment
|
||||||
|
//ccc := make(chan v1.Deployment, length)
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
//var mutex sync.Mutex
|
||||||
|
|
||||||
|
worker := workerThread
|
||||||
|
if length <= worker {
|
||||||
|
for i, deployment := range deployments {
|
||||||
|
objectMeta := deployment.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
deployment.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
results[i] = deployment
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
pinch := (length + worker - 1) / worker
|
||||||
|
wg.Add(worker)
|
||||||
|
for splice := 0; splice < worker; splice++ {
|
||||||
|
|
||||||
|
// 计算每个goroutine处理的切片段
|
||||||
|
start := splice * pinch
|
||||||
|
end := start + pinch
|
||||||
|
if end > length {
|
||||||
|
end = length
|
||||||
|
}
|
||||||
|
//log.DebugF("[DeploymentAll] - deployment pinch from [%d - %d]", start, end)
|
||||||
|
|
||||||
|
go func(deploymentList []v1.Deployment, start int, results *[]v1.Deployment) {
|
||||||
|
|
||||||
|
for index, deployment := range deploymentList {
|
||||||
|
objectMeta := deployment.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
deployment.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
//ccc <- deployment
|
||||||
|
i := *results
|
||||||
|
i[index+start] = deployment
|
||||||
|
}
|
||||||
|
|
||||||
|
wg.Done()
|
||||||
|
}(deployments[start:end], start, &results)
|
||||||
|
}
|
||||||
|
|
||||||
|
//go func() {
|
||||||
|
// wg.Wait()
|
||||||
|
// close(ccc)
|
||||||
|
//}()
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
//for deployment := range ccc {
|
||||||
|
// results = append(results, deployment)
|
||||||
|
//}
|
||||||
|
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) DeploymentAllInterface(cmiiEnv string) []CmiiDeploymentInterface {
|
||||||
|
op.changeOperatorEnv(cmiiEnv)
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
deploymentList, err := client.AppsV1().Deployments(op.CurrentNamespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[DeploymentAllInterface] - list deployment in [%s] [%s] error => %s", cmiiEnv, op.CurrentNamespace, err.Error())
|
||||||
|
}
|
||||||
|
deployments := deploymentList.Items
|
||||||
|
|
||||||
|
length := len(deployments)
|
||||||
|
|
||||||
|
results := make([]CmiiDeploymentInterface, length)
|
||||||
|
ccc := make(chan CmiiDeploymentInterface, length)
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
worker := workerThread
|
||||||
|
if length <= worker {
|
||||||
|
for i, deployment := range deployments {
|
||||||
|
objectMeta := deployment.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
deployment.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
results[i] = CmiiDeploymentInterface{}.Convert(deployment)
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
pinch := length / worker
|
||||||
|
wg.Add(worker)
|
||||||
|
for splice := 0; splice < worker; splice++ {
|
||||||
|
go func(deploymentList []v1.Deployment) {
|
||||||
|
defer wg.Done()
|
||||||
|
for _, deployment := range deploymentList {
|
||||||
|
objectMeta := deployment.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
deployment.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
ccc <- CmiiDeploymentInterface{}.Convert(deployment)
|
||||||
|
}
|
||||||
|
|
||||||
|
}(deployments[splice*pinch : utils.MinInt((splice+1)*pinch, length)])
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
close(ccc)
|
||||||
|
}()
|
||||||
|
|
||||||
|
index := 0
|
||||||
|
for deployment := range ccc {
|
||||||
|
results[index] = deployment
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) DeploymentFizz(cmiiEnv, appFizz string) (fizzDeployment []v1.Deployment) {
|
||||||
|
|
||||||
|
deploymentAll := op.DeploymentAll(cmiiEnv)
|
||||||
|
|
||||||
|
if deploymentAll == nil {
|
||||||
|
log.ErrorF("[DeploymentFizz] - namespace [%s] can not get deployment [%s]", cmiiEnv, appFizz)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, deployment := range deploymentAll {
|
||||||
|
if strings.Contains(deployment.Name, appFizz) {
|
||||||
|
fizzDeployment = append(fizzDeployment, deployment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fizzDeployment
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) DeploymentExist(cmiiEnv, appName string) (exists *v1.Deployment) {
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
deployment, err := client.AppsV1().Deployments(op.CurrentNamespace).Get(context.TODO(), appName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[DeploymentExist] - deployments [%s] [%s] not exists ! %s", cmiiEnv, appName, err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return deployment
|
||||||
|
}
|
||||||
|
func (op *CmiiK8sOperator) DeploymentScale(cmiiEnv, appFizz string, scaleCount int32) bool {
|
||||||
|
|
||||||
|
deploymentFizz := op.DeploymentFizz(cmiiEnv, appFizz)
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
for _, deployment := range deploymentFizz {
|
||||||
|
log.DebugF("[DeploymentScale] - start to scale [%s] [%s] to %d", deployment.Namespace, deployment.Name, scaleCount)
|
||||||
|
|
||||||
|
scale := &autoscalingv1.Scale{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: deployment.Name,
|
||||||
|
Namespace: deployment.Namespace,
|
||||||
|
},
|
||||||
|
Spec: autoscalingv1.ScaleSpec{
|
||||||
|
Replicas: int32(scaleCount),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
updateScale, err := client.AppsV1().Deployments(deployment.Namespace).UpdateScale(
|
||||||
|
context.TODO(),
|
||||||
|
deployment.Name,
|
||||||
|
scale,
|
||||||
|
metav1.UpdateOptions{},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[DeploymentScale] - scale error %s", err.Error())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
log.InfoF("[DeploymentScale] - scale of [%s] [%s] to %d success !", updateScale.Namespace, updateScale.Name, scaleCount)
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) ReplicaSet(cmiiEnv, replicaSetName string) *v1.ReplicaSet {
|
||||||
|
|
||||||
|
op.changeOperatorEnv(cmiiEnv)
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
replicaSet, err := client.AppsV1().ReplicaSets(op.CurrentNamespace).Get(context.TODO(), replicaSetName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return replicaSet
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) PodAll(cmiiEnv string) []corev1.Pod {
|
||||||
|
op.changeOperatorEnv(cmiiEnv)
|
||||||
|
|
||||||
|
client := op.CurrentClient
|
||||||
|
|
||||||
|
podList, err := client.CoreV1().Pods(op.CurrentNamespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[PodAll] - list c in [%s] [%s] error => %s", cmiiEnv, op.CurrentNamespace, err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
pods := podList.Items
|
||||||
|
|
||||||
|
length := len(pods)
|
||||||
|
results := make([]corev1.Pod, length)
|
||||||
|
ccc := make(chan corev1.Pod, length)
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
worker := workerThread
|
||||||
|
if length <= worker {
|
||||||
|
for i, pod := range pods {
|
||||||
|
objectMeta := pod.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
pod.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
results[i] = pod
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
pinch := length / worker
|
||||||
|
wg.Add(worker)
|
||||||
|
for splice := 0; splice < worker; splice++ {
|
||||||
|
go func(podList []corev1.Pod) {
|
||||||
|
defer wg.Done()
|
||||||
|
for _, pod := range podList {
|
||||||
|
objectMeta := pod.ObjectMeta
|
||||||
|
objectMeta.SetAnnotations(nil)
|
||||||
|
objectMeta.SetManagedFields(nil)
|
||||||
|
pod.ObjectMeta = objectMeta
|
||||||
|
|
||||||
|
ccc <- pod
|
||||||
|
}
|
||||||
|
|
||||||
|
}(pods[splice*pinch : utils.MinInt((splice+1)*pinch, length)])
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
close(ccc)
|
||||||
|
}()
|
||||||
|
|
||||||
|
index := 0
|
||||||
|
for c := range ccc {
|
||||||
|
results[index] = c
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
func (op *CmiiK8sOperator) PodFizz(cmiiEnv, appFizz string) (fizzPod []corev1.Pod) {
|
||||||
|
|
||||||
|
podAll := op.PodAll(cmiiEnv)
|
||||||
|
|
||||||
|
if podAll == nil {
|
||||||
|
log.ErrorF("[DeploymentFizz] - no app find in [%s] !", cmiiEnv)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pod := range podAll {
|
||||||
|
if strings.Contains(pod.Name, appFizz) {
|
||||||
|
fizzPod = append(fizzPod, pod)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fizzPod
|
||||||
|
}
|
||||||
134
agent-go/k8s_exec/K8sOperator_test.go
Normal file
134
agent-go/k8s_exec/K8sOperator_test.go
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
package k8s_exec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"agent-go/utils"
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCmiiK8sOperator_DeploymentAll(t *testing.T) {
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
deploymentList := CmiiOperator.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 := CmiiOperator.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 TestCmiiK8sOperator_DeploymentFizz(t *testing.T) {
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
deploymentFizz := CmiiOperator.DeploymentFizz("devflight", "")
|
||||||
|
elapsed := time.Since(start).Milliseconds()
|
||||||
|
fmt.Printf("执行耗时: %d ms\n", elapsed)
|
||||||
|
|
||||||
|
t.Logf("deployment list lenght is => %d", len(deploymentFizz))
|
||||||
|
|
||||||
|
deploymentInterface := CmiiDeploymentInterface{}
|
||||||
|
for _, pod := range deploymentFizz {
|
||||||
|
convert := deploymentInterface.Convert(pod)
|
||||||
|
utils.BeautifulPrint(convert)
|
||||||
|
}
|
||||||
|
|
||||||
|
// elastic search
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmiiK8sOperator_DeploymentScale(t *testing.T) {
|
||||||
|
start := time.Now()
|
||||||
|
|
||||||
|
CmiiOperator.DeploymentScale("devflight", "cmii-uav-gis-server", 0)
|
||||||
|
elapsed := time.Since(start).Milliseconds()
|
||||||
|
fmt.Printf("执行耗时: %d ms\n", elapsed)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmiiK8sOperator_PodAll(t *testing.T) {
|
||||||
|
start := time.Now()
|
||||||
|
podList := CmiiOperator.PodAll("devflight")
|
||||||
|
elapsed := time.Since(start).Milliseconds()
|
||||||
|
fmt.Printf("执行耗时: %d ms\n", elapsed)
|
||||||
|
|
||||||
|
for _, pod := range podList {
|
||||||
|
println()
|
||||||
|
utils.BeautifulPrint(pod)
|
||||||
|
println()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmiiK8sOperator_PodFizz(t *testing.T) {
|
||||||
|
start := time.Now()
|
||||||
|
podList := CmiiOperator.PodFizz("devflight", "notice")
|
||||||
|
elapsed := time.Since(start).Milliseconds()
|
||||||
|
fmt.Printf("执行耗时: %d ms\n", elapsed)
|
||||||
|
t.Logf("pod list lenght is => %d", len(podList))
|
||||||
|
|
||||||
|
for _, pod := range podList {
|
||||||
|
println()
|
||||||
|
utils.BeautifulPrint(pod)
|
||||||
|
println()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmiiDeploymentInterface_Convert(t *testing.T) {
|
||||||
|
|
||||||
|
log.DebugF("dadasdadasd")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmiiK8sOperator_PodFizz2(t *testing.T) {
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
podList := CmiiOperator.PodFizz("devflight", "notice")
|
||||||
|
elapsed := time.Since(start).Milliseconds()
|
||||||
|
fmt.Printf("执行耗时: %d ms\n", elapsed)
|
||||||
|
t.Logf("pod list lenght is => %d", len(podList))
|
||||||
|
|
||||||
|
podInterface := CmiiPodInterface{}
|
||||||
|
|
||||||
|
for _, pod := range podList {
|
||||||
|
convert := podInterface.Convert(pod)
|
||||||
|
|
||||||
|
println()
|
||||||
|
utils.BeautifulPrint(&convert)
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
67
agent-go/k8s_exec/all-cmii-image.txt
Normal file
67
agent-go/k8s_exec/all-cmii-image.txt
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
cmii-uav-platform-security cmii-uav-platform-security harbor.cdcyy.com.cn/cmii/cmii-uav-platform-security:4.1.6
|
||||||
|
cmii-uav-developer cmii-uav-developer harbor.cdcyy.com.cn/cmii/cmii-uav-developer:5.2.0-25858
|
||||||
|
cmii-admin-data cmii-admin-data harbor.cdcyy.com.cn/cmii/cmii-admin-data:5.2.0
|
||||||
|
cmii-uav-device cmii-uav-device harbor.cdcyy.com.cn/cmii/cmii-uav-device:5.2.0
|
||||||
|
cmii-uav-emergency cmii-uav-emergency harbor.cdcyy.com.cn/cmii/cmii-uav-emergency:5.2.0
|
||||||
|
cmii-admin-gateway cmii-admin-gateway harbor.cdcyy.com.cn/cmii/cmii-admin-gateway:5.2.0
|
||||||
|
cmii-uav-gateway cmii-uav-gateway harbor.cdcyy.com.cn/cmii/cmii-uav-gateway:5.2.0
|
||||||
|
cmii-admin-user cmii-admin-user harbor.cdcyy.com.cn/cmii/cmii-admin-user:5.2.0
|
||||||
|
cmii-uav-gis-server cmii-uav-gis-server harbor.cdcyy.com.cn/cmii/cmii-uav-gis-server:5.2.0
|
||||||
|
cmii-app-release cmii-app-release harbor.cdcyy.com.cn/cmii/cmii-app-release:4.2.0-validation
|
||||||
|
cmii-uav-grid-datasource cmii-uav-grid-datasource harbor.cdcyy.com.cn/cmii/cmii-uav-grid-datasource:5.2.0-24810
|
||||||
|
cmii-open-gateway cmii-open-gateway harbor.cdcyy.com.cn/cmii/cmii-open-gateway:5.2.0
|
||||||
|
cmii-uav-grid-engine cmii-uav-grid-engine harbor.cdcyy.com.cn/cmii/cmii-uav-grid-engine:5.1.0
|
||||||
|
cmii-suav-platform-supervision cmii-suav-platform-supervision harbor.cdcyy.com.cn/cmii/cmii-suav-platform-supervision:5.2.0
|
||||||
|
cmii-uav-grid-manage cmii-uav-grid-manage harbor.cdcyy.com.cn/cmii/cmii-uav-grid-manage:5.1.0
|
||||||
|
cmii-suav-platform-supervisionh5 cmii-suav-platform-supervisionh5 harbor.cdcyy.com.cn/cmii/cmii-suav-platform-supervisionh5:5.2.0
|
||||||
|
cmii-uav-industrial-portfolio cmii-uav-industrial-portfolio harbor.cdcyy.com.cn/cmii/cmii-uav-industrial-portfolio:5.2.0-25268-10
|
||||||
|
cmii-suav-supervision cmii-suav-supervision harbor.cdcyy.com.cn/cmii/cmii-suav-supervision:5.2.0
|
||||||
|
cmii-uav-integration cmii-uav-integration harbor.cdcyy.com.cn/cmii/cmii-uav-integration:5.2.0-25447
|
||||||
|
cmii-uav-platform-securityh5 cmii-uav-platform-securityh5 harbor.cdcyy.com.cn/cmii/cmii-uav-platform-securityh5:5.2.0
|
||||||
|
cmii-uav-airspace cmii-uav-airspace harbor.cdcyy.com.cn/cmii/cmii-uav-airspace:5.2.0
|
||||||
|
cmii-uav-kpi-monitor cmii-uav-kpi-monitor harbor.cdcyy.com.cn/cmii/cmii-uav-kpi-monitor:5.2.0
|
||||||
|
cmii-uav-alarm cmii-uav-alarm harbor.cdcyy.com.cn/cmii/cmii-uav-alarm:5.2.0
|
||||||
|
cmii-uav-platform-seniclive cmii-uav-platform-seniclive harbor.cdcyy.com.cn/cmii/cmii-uav-platform-seniclive:5.2.0
|
||||||
|
cmii-uav-autowaypoint cmii-uav-autowaypoint harbor.cdcyy.com.cn/cmii/cmii-uav-autowaypoint:4.1.6-cm-0828
|
||||||
|
cmii-uav-platform-share cmii-uav-platform-share harbor.cdcyy.com.cn/cmii/cmii-uav-platform-share:5.2.0
|
||||||
|
cmii-uav-brain cmii-uav-brain harbor.cdcyy.com.cn/cmii/cmii-uav-brain:5.2.0
|
||||||
|
cmii-uav-logger cmii-uav-logger harbor.cdcyy.com.cn/cmii/cmii-uav-logger:5.2.0
|
||||||
|
cmii-uav-platform-splice cmii-uav-platform-splice harbor.cdcyy.com.cn/cmii/cmii-uav-platform-splice:5.2.0
|
||||||
|
cmii-uav-material-warehouse cmii-uav-material-warehouse harbor.cdcyy.com.cn/cmii/cmii-uav-material-warehouse:5.2.0
|
||||||
|
cmii-uav-cloud-live cmii-uav-cloud-live harbor.cdcyy.com.cn/cmii/cmii-uav-cloud-live:5.2.0
|
||||||
|
cmii-uav-clusters cmii-uav-clusters harbor.cdcyy.com.cn/cmii/cmii-uav-clusters:5.2.0
|
||||||
|
cmii-uav-platform-threedsimulation cmii-uav-platform-threedsimulation harbor.cdcyy.com.cn/cmii/cmii-uav-platform-threedsimulation:5.2.0-21392
|
||||||
|
cmii-uav-mission cmii-uav-mission harbor.cdcyy.com.cn/cmii/cmii-uav-mission:5.2.0-25840
|
||||||
|
cmii-uav-mqtthandler cmii-uav-mqtthandler harbor.cdcyy.com.cn/cmii/cmii-uav-mqtthandler:5.2.0-25340
|
||||||
|
cmii-uav-notice cmii-uav-notice harbor.cdcyy.com.cn/cmii/cmii-uav-notice:5.2.0
|
||||||
|
cmii-uav-platform-visualization cmii-uav-platform-visualization harbor.cdcyy.com.cn/cmii/cmii-uav-platform-visualization:5.2.0
|
||||||
|
cmii-uav-oauth cmii-uav-oauth harbor.cdcyy.com.cn/cmii/cmii-uav-oauth:5.2.0
|
||||||
|
cmii-uav-process cmii-uav-process harbor.cdcyy.com.cn/cmii/cmii-uav-process:5.2.0
|
||||||
|
cmii-uav-surveillance cmii-uav-surveillance harbor.cdcyy.com.cn/cmii/cmii-uav-surveillance:5.2.0-25854
|
||||||
|
cmii-uav-threedsimulation cmii-uav-threedsimulation harbor.cdcyy.com.cn/cmii/cmii-uav-threedsimulation:5.2.0
|
||||||
|
cmii-uav-tower cmii-uav-tower harbor.cdcyy.com.cn/cmii/cmii-uav-tower:5.2.0
|
||||||
|
cmii-uav-user cmii-uav-user harbor.cdcyy.com.cn/cmii/cmii-uav-user:5.2.0
|
||||||
|
cmii-uav-cms cmii-uav-cms harbor.cdcyy.com.cn/cmii/cmii-uav-cms:5.2.0
|
||||||
|
cmii-uav-data-post-process cmii-uav-data-post-process harbor.cdcyy.com.cn/cmii/cmii-uav-data-post-process:5.2.0
|
||||||
|
cmii-uav-waypoint cmii-uav-waypoint harbor.cdcyy.com.cn/cmii/cmii-uav-waypoint:5.2.0
|
||||||
|
cmii-uav-depotautoreturn cmii-uav-depotautoreturn harbor.cdcyy.com.cn/cmii/cmii-uav-depotautoreturn:4.2.0
|
||||||
|
cmii-uav-platform cmii-uav-platform harbor.cdcyy.com.cn/cmii/cmii-uav-platform:5.2.0
|
||||||
|
helm-live-op-v2 operator harbor.cdcyy.com.cn/cmii/cmii-live-operator:5.2.0
|
||||||
|
cmii-uav-platform-ai-brain cmii-uav-platform-ai-brain harbor.cdcyy.com.cn/cmii/cmii-uav-platform-ai-brain:5.2.0
|
||||||
|
cmii-uav-platform-armypeople cmii-uav-platform-armypeople harbor.cdcyy.com.cn/cmii/cmii-uav-platform-armypeople:5.2.0-24538
|
||||||
|
cmii-uav-platform-base cmii-uav-platform-base harbor.cdcyy.com.cn/cmii/cmii-uav-platform-base:5.2.0
|
||||||
|
cmii-uav-platform-cms-portal cmii-uav-platform-cms-portal harbor.cdcyy.com.cn/cmii/cmii-uav-platform-cms-portal:5.2.0
|
||||||
|
helm-live-rtsp-op operator harbor.cdcyy.com.cn/cmii/cmii-rtsp-operator:v5.1.0
|
||||||
|
cmii-uav-platform-detection cmii-uav-platform-detection harbor.cdcyy.com.cn/cmii/cmii-uav-platform-detection:5.2.0
|
||||||
|
helm-live-rtsp-zlm operator harbor.cdcyy.com.cn/cmii/zlm-mediaserver:v1.0.6
|
||||||
|
cmii-uav-platform-emergency-rescue cmii-uav-platform-emergency-rescue harbor.cdcyy.com.cn/cmii/cmii-uav-platform-emergency-rescue:5.2.0
|
||||||
|
cmii-uav-platform-hljtt cmii-uav-platform harbor.cdcyy.com.cn/cmii/cmii-uav-platform:5.2.0
|
||||||
|
cmii-uav-platform-jiangsuwenlv cmii-uav-platform-jiangsuwenlv harbor.cdcyy.com.cn/cmii/cmii-uav-platform-jiangsuwenlv:4.1.3-jiangsu-0427
|
||||||
|
cmii-uav-platform-logistics cmii-uav-platform-logistics harbor.cdcyy.com.cn/cmii/cmii-uav-platform-logistics:5.2.0
|
||||||
|
cmii-uav-platform-media cmii-uav-platform-media harbor.cdcyy.com.cn/cmii/cmii-uav-platform-media:5.2.0
|
||||||
|
cmii-uav-platform-multiterminal cmii-uav-platform-multiterminal harbor.cdcyy.com.cn/cmii/cmii-uav-platform-multiterminal:5.2.0
|
||||||
|
cmii-uav-platform-mws cmii-uav-platform-mws harbor.cdcyy.com.cn/cmii/cmii-uav-platform-mws:5.2.0
|
||||||
|
cmii-uav-platform-oms cmii-uav-platform-oms harbor.cdcyy.com.cn/cmii/cmii-uav-platform-oms:5.2.0
|
||||||
|
cmii-uav-platform-open cmii-uav-platform-open harbor.cdcyy.com.cn/cmii/cmii-uav-platform-open:5.2.0
|
||||||
|
cmii-uav-platform-qingdao cmii-uav-platform-qingdao harbor.cdcyy.com.cn/cmii/cmii-uav-platform:4.1.6-24238-qingdao
|
||||||
|
cmii-uav-platform-qinghaitourism cmii-uav-platform-qinghaitourism harbor.cdcyy.com.cn/cmii/cmii-uav-platform-qinghaitourism:4.1.0-21377-0508
|
||||||
@@ -26,11 +26,13 @@ func NewLogger() (*Logger, error) {
|
|||||||
TimeKey: "time",
|
TimeKey: "time",
|
||||||
//CallerKey: "caller",
|
//CallerKey: "caller",
|
||||||
EncodeLevel: zapcore.CapitalLevelEncoder,
|
EncodeLevel: zapcore.CapitalLevelEncoder,
|
||||||
EncodeTime: zapcore.RFC3339TimeEncoder,
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
||||||
//EncodeCaller: zapcore.FullCallerEncoder,
|
//EncodeCaller: zapcore.ShortCallerEncoder,
|
||||||
},
|
},
|
||||||
|
Development: true,
|
||||||
}
|
}
|
||||||
logger, err := config.Build()
|
logger, err := config.Build()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -40,6 +42,7 @@ func NewLogger() (*Logger, error) {
|
|||||||
func (l *Logger) Printf(msg string, args ...interface{}) {
|
func (l *Logger) Printf(msg string, args ...interface{}) {
|
||||||
|
|
||||||
l.Logger.Info(fmt.Sprintf("%s ==> %v", msg, args))
|
l.Logger.Info(fmt.Sprintf("%s ==> %v", msg, args))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug logs a debug message.
|
// Debug logs a debug message.
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ octopus:
|
|||||||
init_from_server_key: InitFromServerKey
|
init_from_server_key: InitFromServerKey
|
||||||
# initialization register time out (unit ms) default is 5 min
|
# initialization register time out (unit ms) default is 5 min
|
||||||
init_ttl: "3000000"
|
init_ttl: "3000000"
|
||||||
# Octopus Exchange Name == server comunicate with agent
|
# Octopus Exchange Name == server communicate with agent
|
||||||
octopus_exchange: OctopusExchange
|
octopus_exchange: OctopusExchange
|
||||||
# Octopus Message To Server == all agent send info to server queue and topic
|
# Octopus Message To Server == all agent send info to server queue and topic
|
||||||
octopus_to_server: OctopusToServer
|
octopus_to_server: OctopusToServer
|
||||||
|
|||||||
302
agent-go/tmp/test.json
Normal file
302
agent-go/tmp/test.json
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"name": "cmii-uav-gateway-64ddc6c4c7-77k2w",
|
||||||
|
"generateName": "cmii-uav-gateway-64ddc6c4c7-",
|
||||||
|
"namespace": "uavcloud-devflight",
|
||||||
|
"selfLink": "/api/v1/namespaces/uavcloud-devflight/pods/cmii-uav-gateway-64ddc6c4c7-77k2w",
|
||||||
|
"uid": "02e1277f-b632-4e7a-b204-dad30885de48",
|
||||||
|
"resourceVersion": "468813592",
|
||||||
|
"creationTimestamp": "2023-12-25T09:04:01Z",
|
||||||
|
"labels": {
|
||||||
|
"app.kubernetes.io/instance": "cmii-uav-gateway",
|
||||||
|
"app.kubernetes.io/managed-by": "Helm",
|
||||||
|
"cmii.app": "cmii-uav-gateway",
|
||||||
|
"cmii.modules": "cmlc",
|
||||||
|
"cmii.type": "backend",
|
||||||
|
"cmii/managed-by": "jenkins-pipeline-standalone-job",
|
||||||
|
"pod-template-hash": "64ddc6c4c7"
|
||||||
|
},
|
||||||
|
"ownerReferences": [
|
||||||
|
{
|
||||||
|
"apiVersion": "apps/v1",
|
||||||
|
"kind": "ReplicaSet",
|
||||||
|
"name": "cmii-uav-gateway-64ddc6c4c7",
|
||||||
|
"uid": "1d76ec6d-4c9c-435b-8aca-5bb0755f9ab1",
|
||||||
|
"controller": true,
|
||||||
|
"blockOwnerDeletion": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"volumes": [
|
||||||
|
{
|
||||||
|
"name": "glusterfs-backend-log-volume",
|
||||||
|
"persistentVolumeClaim": {
|
||||||
|
"claimName": "glusterfs-backend-log-pvc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "elk-json-log",
|
||||||
|
"hostPath": {
|
||||||
|
"path": "/var/log/",
|
||||||
|
"type": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "default-token-hzddz",
|
||||||
|
"secret": {
|
||||||
|
"secretName": "default-token-hzddz",
|
||||||
|
"defaultMode": 420
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"containers": [
|
||||||
|
{
|
||||||
|
"name": "cmii-uav-gateway",
|
||||||
|
"image": "harbor.cdcyy.com.cn/cmii/cmii-uav-gateway:4.1.6-beta",
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"name": "pod-port",
|
||||||
|
"containerPort": 8080,
|
||||||
|
"protocol": "TCP"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"env": [
|
||||||
|
{
|
||||||
|
"name": "GIT_BRANCH",
|
||||||
|
"value": "staging"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GIT_COMMIT",
|
||||||
|
"value": "bdcdf85720bd1da671bdb55e80f2192968d98633"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "K8S_NAMESPACE",
|
||||||
|
"value": "uavcloud-devflight"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "APPLICATION_NAME",
|
||||||
|
"value": "cmii-uav-gateway"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CUST_JAVA_OPTS",
|
||||||
|
"value": "-Xms1000m -Xmx2048m -Dreactor.netty.ioWorkerCount=256 -Dreactor.netty.ioSelectCount=1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NACOS_REGISTRY",
|
||||||
|
"value": "helm-nacos:8848"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NACOS_USERNAME",
|
||||||
|
"value": "developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NACOS_PASSWORD",
|
||||||
|
"value": "Deve@9128"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NACOS_DISCOVERY_IP",
|
||||||
|
"valueFrom": {
|
||||||
|
"fieldRef": {
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"fieldPath": "status.podIP"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NACOS_DISCOVERY_PORT",
|
||||||
|
"value": "8080"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "IMAGE_VERSION",
|
||||||
|
"value": "4.1.6-beta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BIZ_CONFIG_GROUP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SYS_CONFIG_GROUP"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"resources": {
|
||||||
|
"limits": {
|
||||||
|
"cpu": "2",
|
||||||
|
"memory": "2Gi"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"cpu": "100m",
|
||||||
|
"memory": "200Mi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumeMounts": [
|
||||||
|
{
|
||||||
|
"name": "glusterfs-backend-log-volume",
|
||||||
|
"mountPath": "/cmii/logs",
|
||||||
|
"subPath": "uavcloud-devflight/cmii-uav-gateway"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "elk-json-log",
|
||||||
|
"mountPath": "/cmii/jsonlogs",
|
||||||
|
"subPath": "json_pv_logfile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "default-token-hzddz",
|
||||||
|
"readOnly": true,
|
||||||
|
"mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"livenessProbe": {
|
||||||
|
"httpGet": {
|
||||||
|
"path": "/cmii/ping",
|
||||||
|
"port": "pod-port",
|
||||||
|
"scheme": "HTTP"
|
||||||
|
},
|
||||||
|
"initialDelaySeconds": 5,
|
||||||
|
"timeoutSeconds": 2,
|
||||||
|
"periodSeconds": 10,
|
||||||
|
"successThreshold": 1,
|
||||||
|
"failureThreshold": 3
|
||||||
|
},
|
||||||
|
"readinessProbe": {
|
||||||
|
"httpGet": {
|
||||||
|
"path": "/cmii/ping",
|
||||||
|
"port": "pod-port",
|
||||||
|
"scheme": "HTTP"
|
||||||
|
},
|
||||||
|
"initialDelaySeconds": 5,
|
||||||
|
"timeoutSeconds": 2,
|
||||||
|
"periodSeconds": 10,
|
||||||
|
"successThreshold": 1,
|
||||||
|
"failureThreshold": 3
|
||||||
|
},
|
||||||
|
"startupProbe": {
|
||||||
|
"httpGet": {
|
||||||
|
"path": "/cmii/ping",
|
||||||
|
"port": "pod-port",
|
||||||
|
"scheme": "HTTP"
|
||||||
|
},
|
||||||
|
"initialDelaySeconds": 120,
|
||||||
|
"timeoutSeconds": 2,
|
||||||
|
"periodSeconds": 10,
|
||||||
|
"successThreshold": 1,
|
||||||
|
"failureThreshold": 10
|
||||||
|
},
|
||||||
|
"terminationMessagePath": "/dev/termination-log",
|
||||||
|
"terminationMessagePolicy": "File",
|
||||||
|
"imagePullPolicy": "Always"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"restartPolicy": "Always",
|
||||||
|
"terminationGracePeriodSeconds": 30,
|
||||||
|
"dnsPolicy": "ClusterFirst",
|
||||||
|
"serviceAccountName": "default",
|
||||||
|
"serviceAccount": "default",
|
||||||
|
"nodeName": "dev-07.ecs.io",
|
||||||
|
"securityContext": {},
|
||||||
|
"imagePullSecrets": [
|
||||||
|
{
|
||||||
|
"name": "harborsecret"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"affinity": {
|
||||||
|
"nodeAffinity": {
|
||||||
|
"requiredDuringSchedulingIgnoredDuringExecution": {
|
||||||
|
"nodeSelectorTerms": [
|
||||||
|
{
|
||||||
|
"matchExpressions": [
|
||||||
|
{
|
||||||
|
"key": "uavcloud.affinity",
|
||||||
|
"operator": "In",
|
||||||
|
"values": [
|
||||||
|
"common"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schedulerName": "default-scheduler",
|
||||||
|
"tolerations": [
|
||||||
|
{
|
||||||
|
"key": "node.kubernetes.io/not-ready",
|
||||||
|
"operator": "Exists",
|
||||||
|
"effect": "NoExecute",
|
||||||
|
"tolerationSeconds": 300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "node.kubernetes.io/unreachable",
|
||||||
|
"operator": "Exists",
|
||||||
|
"effect": "NoExecute",
|
||||||
|
"tolerationSeconds": 300
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"priority": 0,
|
||||||
|
"enableServiceLinks": true
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"phase": "Running",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"type": "Initialized",
|
||||||
|
"status": "True",
|
||||||
|
"lastProbeTime": null,
|
||||||
|
"lastTransitionTime": "2023-12-25T09:04:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Ready",
|
||||||
|
"status": "True",
|
||||||
|
"lastProbeTime": null,
|
||||||
|
"lastTransitionTime": "2023-12-26T07:22:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ContainersReady",
|
||||||
|
"status": "True",
|
||||||
|
"lastProbeTime": null,
|
||||||
|
"lastTransitionTime": "2023-12-26T07:22:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "PodScheduled",
|
||||||
|
"status": "True",
|
||||||
|
"lastProbeTime": null,
|
||||||
|
"lastTransitionTime": "2023-12-25T09:04:01Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hostIP": "192.168.11.161",
|
||||||
|
"podIP": "10.244.165.25",
|
||||||
|
"podIPs": [
|
||||||
|
{
|
||||||
|
"ip": "10.244.165.25"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"startTime": "2023-12-25T09:04:01Z",
|
||||||
|
"containerStatuses": [
|
||||||
|
{
|
||||||
|
"name": "cmii-uav-gateway",
|
||||||
|
"state": {
|
||||||
|
"running": {
|
||||||
|
"startedAt": "2023-12-26T07:20:22Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastState": {
|
||||||
|
"terminated": {
|
||||||
|
"exitCode": 1,
|
||||||
|
"reason": "Error",
|
||||||
|
"startedAt": "2023-12-26T07:14:52Z",
|
||||||
|
"finishedAt": "2023-12-26T07:15:18Z",
|
||||||
|
"containerID": "docker://da24e4587f76139c30f4730b18210c11c07f1d4f5afda93b3d70d2eef6aeeb53"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ready": true,
|
||||||
|
"restartCount": 9,
|
||||||
|
"image": "harbor.cdcyy.com.cn/cmii/cmii-uav-gateway:4.1.6-beta",
|
||||||
|
"imageID": "docker-pullable://harbor.cdcyy.com.cn/cmii/cmii-uav-gateway@sha256:138ae1ed2596746b429f158795791eb677f26c2aa523784f42a13d7256652310",
|
||||||
|
"containerID": "docker://13a6bfe5218ba9b9edeaf5c1378d73ecb06fc90cb648e0c158baa9f528c1e391",
|
||||||
|
"started": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"qosClass": "Burstable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
22
agent-go/utils/MathUtils.go
Normal file
22
agent-go/utils/MathUtils.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
func MinInt(x, y int) int {
|
||||||
|
if x < y {
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
return y
|
||||||
|
}
|
||||||
|
|
||||||
|
func MaxInt32(x, y int32) int32 {
|
||||||
|
if x > y {
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
return y
|
||||||
|
}
|
||||||
|
|
||||||
|
func MaxInt(x, y int) int {
|
||||||
|
if x > y {
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
return y
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ if !errorlevel! equ 0 (
|
|||||||
echo wsl ip has set
|
echo wsl ip has set
|
||||||
) else (
|
) else (
|
||||||
::不在的话给安排上
|
::不在的话给安排上
|
||||||
wsl -u root ip addr add 172.24.240.10/24 broadcast 172.24.240.0 dev eth0 label eth0:1
|
wsl -u root ip addr add 172.24.240.10/24 broadcast 172.24.240.0 devFilght eth0 label eth0:1
|
||||||
echo set wsl ip success: 172.24.240.10
|
echo set wsl ip success: 172.24.240.10
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ under the License.
|
|||||||
| or the command line, profiles have to have an ID that is unique.
|
| or the command line, profiles have to have an ID that is unique.
|
||||||
|
|
|
|
||||||
| An encouraged best practice for profile identification is to use a consistent naming convention
|
| An encouraged best practice for profile identification is to use a consistent naming convention
|
||||||
| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
|
| for profiles, such as 'env-devFilght', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
|
||||||
| This will make it more intuitive to understand what the set of introduced profiles is attempting
|
| This will make it more intuitive to understand what the set of introduced profiles is attempting
|
||||||
| to accomplish, particularly when you only have a list of profile id's for debug.
|
| to accomplish, particularly when you only have a list of profile id's for debug.
|
||||||
|
|
|
|
||||||
@@ -218,7 +218,7 @@ under the License.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
| Here is another profile, activated by the system property 'target-env' with a value of 'dev',
|
| Here is another profile, activated by the system property 'target-env' with a value of 'devFilght',
|
||||||
| which provides a specific path to the Tomcat instance. To use this, your plugin configuration
|
| which provides a specific path to the Tomcat instance. To use this, your plugin configuration
|
||||||
| might hypothetically look like:
|
| might hypothetically look like:
|
||||||
|
|
|
|
||||||
@@ -237,12 +237,12 @@ under the License.
|
|||||||
| anything, you could just leave off the <value/> inside the activation-property.
|
| anything, you could just leave off the <value/> inside the activation-property.
|
||||||
|
|
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>env-dev</id>
|
<id>env-devFilght</id>
|
||||||
|
|
||||||
<activation>
|
<activation>
|
||||||
<property>
|
<property>
|
||||||
<name>target-env</name>
|
<name>target-env</name>
|
||||||
<value>dev</value>
|
<value>devFilght</value>
|
||||||
</property>
|
</property>
|
||||||
</activation>
|
</activation>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user