Skip to content

Commit 60bd6fc

Browse files
authored
Merge pull request #336 from pixiake/release-1.0
Support exporting the results to Excel
2 parents 820edcc + cc0acb2 commit 60bd6fc

File tree

13 files changed

+505
-42
lines changed

13 files changed

+505
-42
lines changed

build/apiserver/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
# Build the manager binary
3-
FROM --platform=${TARGETPLATFORM} golang:1.21 as builder
3+
FROM golang:1.21 AS builder
44

55
#RUN #go env -w GOPROXY=https://goproxy.cn,direct
66
# Run this with docker build --build_arg $(go env GOPROXY) to override the goproxy
@@ -30,7 +30,7 @@ RUN go mod tidy && go mod vendor
3030
RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETPLATFORM} go build -o /workspace/apiserver ./cmd/apiserver
3131

3232

33-
FROM --platform=${TARGETPLATFORM} alpine:3.19
33+
FROM alpine:3.19
3434

3535
WORKDIR /
3636

build/controller/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.21 as builder
2+
FROM golang:1.21 AS builder
33

44
#ARG goproxy=https://goproxy.cn,direct
55
#ENV GOPROXY=$goproxy
@@ -27,7 +27,7 @@ ENV CGO_ENABLED=0
2727
# Build
2828
RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETPLATFORM} go build -o /workspace/controller ./cmd/ke-manager/main.go
2929

30-
FROM alpine:3.19 as ke-manager
30+
FROM alpine:3.19 AS ke-manager
3131

3232
WORKDIR /kubeeye
3333

build/job/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
# Build the manager binary
3-
FROM --platform=${TARGETPLATFORM} golang:1.21 as builder
3+
FROM golang:1.21 AS builder
44

55
#RUN #go env -w GOPROXY=https://goproxy.cn,direct
66
# Run this with docker build --build_arg $(go env GOPROXY) to override the goproxy
@@ -31,7 +31,7 @@ RUN go mod tidy && go mod vendor
3131
RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETPLATFORM} go build -o /workspace/ke ./cmd/ke
3232

3333

34-
FROM --platform=${TARGETPLATFORM} alpine:3.19
34+
FROM alpine:3.19
3535

3636
WORKDIR /
3737

go.mod

+11-5
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ require (
2222
github.com/swaggo/files v1.0.1
2323
github.com/swaggo/gin-swagger v1.6.0
2424
github.com/swaggo/swag v1.16.1
25+
github.com/xuri/excelize/v2 v2.8.1
2526
go.uber.org/zap v1.22.0
2627
golang.org/x/sys v0.20.0
27-
k8s.io/api v0.24.3
28-
k8s.io/apimachinery v0.24.3
29-
k8s.io/client-go v0.24.3
30-
k8s.io/code-generator v0.24.2
28+
k8s.io/api v0.24.16
29+
k8s.io/apimachinery v0.24.16
30+
k8s.io/client-go v0.24.16
31+
k8s.io/code-generator v0.24.16
3132
k8s.io/klog/v2 v2.60.1
3233
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
3334
sigs.k8s.io/controller-runtime v0.12.3
@@ -96,11 +97,14 @@ require (
9697
github.com/mitchellh/mapstructure v1.5.0 // indirect
9798
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
9899
github.com/modern-go/reflect2 v1.0.2 // indirect
100+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
99101
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
100102
github.com/nxadm/tail v1.4.8 // indirect
101103
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
102104
github.com/prometheus/client_model v0.6.1 // indirect
103105
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect
106+
github.com/richardlehane/mscfb v1.0.4 // indirect
107+
github.com/richardlehane/msoleps v1.0.3 // indirect
104108
github.com/sagikazarmark/locafero v0.4.0 // indirect
105109
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
106110
github.com/sirupsen/logrus v1.9.3 // indirect
@@ -115,6 +119,8 @@ require (
115119
github.com/ugorji/go/codec v1.2.11 // indirect
116120
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
117121
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
122+
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
123+
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
118124
github.com/yashtewari/glob-intersection v0.2.0 // indirect
119125
go.opentelemetry.io/otel v1.21.0 // indirect
120126
go.opentelemetry.io/otel/metric v1.21.0 // indirect
@@ -145,6 +151,6 @@ require (
145151
k8s.io/gengo v0.0.0-20211129171323-c02415ce4185 // indirect
146152
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect
147153
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
148-
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
154+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
149155
sigs.k8s.io/yaml v1.4.0 // indirect
150156
)

go.sum

+25-8
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
618618
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
619619
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
620620
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
621+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
622+
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
621623
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
622624
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
623625
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
@@ -702,6 +704,11 @@ github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3c
702704
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
703705
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 h1:MkV+77GLUNo5oJ0jf870itWm3D0Sjh7+Za9gazKc5LQ=
704706
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
707+
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
708+
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
709+
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
710+
github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
711+
github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
705712
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
706713
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
707714
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
@@ -807,6 +814,12 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2
807814
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
808815
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
809816
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
817+
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0=
818+
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
819+
github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ=
820+
github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
821+
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
822+
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
810823
github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg=
811824
github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok=
812825
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -930,6 +943,8 @@ golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjs
930943
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
931944
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
932945
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
946+
golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
947+
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
933948
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
934949
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
935950
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1455,21 +1470,22 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
14551470
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
14561471
k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8=
14571472
k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
1458-
k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY=
1459-
k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI=
1473+
k8s.io/api v0.24.16 h1:9G8eHAtCvY8dLmTmRI/+O1/7alkcz29UKGyLkeMSRw8=
1474+
k8s.io/api v0.24.16/go.mod h1:lNKdTj0W2upnaS9S5kvHTU5T/NTHnDdmQjUjODC8JZs=
14601475
k8s.io/apiextensions-apiserver v0.24.2 h1:/4NEQHKlEz1MlaK/wHT5KMKC9UKYz6NZz6JE6ov4G6k=
14611476
k8s.io/apiextensions-apiserver v0.24.2/go.mod h1:e5t2GMFVngUEHUd0wuCJzw8YDwZoqZfJiGOW6mm2hLQ=
14621477
k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
14631478
k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
1464-
k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg=
1465-
k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
1479+
k8s.io/apimachinery v0.24.16 h1:3u2XdCZcV0PUagOuH1+b0vVfZwnOhVwSauuVlIYH278=
1480+
k8s.io/apimachinery v0.24.16/go.mod h1:kSzhCwldu9XB172NDdLffRN0sJ3x95RR7Bmyc4SHhs0=
14661481
k8s.io/apiserver v0.24.2/go.mod h1:pSuKzr3zV+L+MWqsEo0kHHYwCo77AT5qXbFXP2jbvFI=
14671482
k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4=
14681483
k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30=
1469-
k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY=
1470-
k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw=
1471-
k8s.io/code-generator v0.24.2 h1:EGeRWzJrpwi6T6CvoNl0spM6fnAnOdCr0rz7H4NU1rk=
1484+
k8s.io/client-go v0.24.16 h1:ZL3OsVQ2FVr4/yo+1ydzuZ/RTDwxtkPHY9kWuI+uF3Q=
1485+
k8s.io/client-go v0.24.16/go.mod h1:H1io/ZQK4Cju1fO5tg9njKjqPups9MIZlKGaUDq3Q64=
14721486
k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
1487+
k8s.io/code-generator v0.24.16 h1:2gmx5agslgReq/VlslmLwBW0K3bZI7e6SbRaiEWbLnc=
1488+
k8s.io/code-generator v0.24.16/go.mod h1:nQvp6VgOfRkKiLyMz+/JTNXNS6Q4bGWOVtB5rKd2TV0=
14731489
k8s.io/component-base v0.24.2 h1:kwpQdoSfbcH+8MPN4tALtajLDfSfYxBDYlXobNWI6OU=
14741490
k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
14751491
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
@@ -1499,8 +1515,9 @@ sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNza
14991515
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y=
15001516
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY=
15011517
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
1502-
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
15031518
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
1519+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
1520+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
15041521
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
15051522
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
15061523
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

pkg/constant/constant.go

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const (
2828
Component = "component"
2929
CustomCommand = "customcommand"
3030
NodeInfo = "nodeinfo"
31+
NodesStatus = "nodes status"
32+
AbnormalPods = "abnormal pods"
3133
)
3234

3335
const (

pkg/controllers/inspectplan_controller.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ func (r *InspectPlanReconciler) Reconcile(ctx context.Context, req ctrl.Request)
183183
}
184184

185185
plan.Status.NextScheduleTime = &metav1.Time{Time: schedule.Next(now)}
186+
r.Status().Patch(ctx, plan, client.MergeFrom(plan))
186187
if err = r.updateStatus(ctx, plan, now, taskName); err != nil {
187188
return ctrl.Result{}, err
188189
}
@@ -213,10 +214,19 @@ func nextScheduledTimeDuration(sched cron.Schedule, now *metav1.Time) *time.Dura
213214
}
214215

215216
func (r *InspectPlanReconciler) createInspectTask(plan *kubeeyev1alpha2.InspectPlan, ctx context.Context) (string, error) {
217+
218+
inspectTaskName := fmt.Sprintf("%s-%s", plan.Name, time.Now().Format("20060102-15-04"))
219+
220+
err := r.Client.Get(ctx, client.ObjectKey{Name: inspectTaskName}, &kubeeyev1alpha2.InspectTask{})
221+
if err == nil {
222+
klog.Info("InspectTask already exists. ", "InspectTask: ", inspectTaskName)
223+
return inspectTaskName, nil
224+
}
225+
216226
ownerController := true
217227
inspectTask := kubeeyev1alpha2.InspectTask{
218228
ObjectMeta: metav1.ObjectMeta{
219-
Name: fmt.Sprintf("%s-%s", plan.Name, time.Now().Format("20060102-15-04")),
229+
Name: inspectTaskName,
220230
Labels: map[string]string{constant.LabelPlanName: plan.Name},
221231
Annotations: map[string]string{constant.AnnotationInspectType: func() string {
222232
if plan.Spec.Schedule == nil {
@@ -251,7 +261,7 @@ func (r *InspectPlanReconciler) createInspectTask(plan *kubeeyev1alpha2.InspectP
251261
},
252262
}
253263

254-
err := r.Client.Create(ctx, &inspectTask)
264+
err = r.Client.Create(ctx, &inspectTask)
255265
if err != nil {
256266
return "", err
257267
}

pkg/controllers/inspectresult_controller.go

+4
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ func (r *InspectResultReconciler) Reconcile(ctx context.Context, req ctrl.Reques
9393
if err != nil {
9494
klog.Error(err, "failed to delete file")
9595
}
96+
err = os.Remove(fmt.Sprintf("%s.xlsx", path.Join(constant.ResultPathPrefix, result.Name)))
97+
if err != nil {
98+
klog.Error(err, "failed to delete xlsx file")
99+
}
96100
err = r.Client.Update(ctx, result)
97101
if err != nil {
98102
klog.Error("Failed to inspect plan add finalizers. ", err)

pkg/controllers/inspecttask_controller.go

+34-3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"fmt"
2323
kubeeyeInformers "github.com/kubesphere/kubeeye/clients/informers/externalversions/kubeeye"
2424
"github.com/kubesphere/kubeeye/pkg/constant"
25+
"github.com/kubesphere/kubeeye/pkg/output"
2526
"github.com/kubesphere/kubeeye/pkg/rules"
2627
"github.com/kubesphere/kubeeye/pkg/template"
2728
"github.com/kubesphere/kubeeye/pkg/utils"
@@ -258,9 +259,21 @@ func (r *InspectTaskReconciler) GenerateResult(task *kubeeyev1alpha2.InspectTask
258259
}
259260
}
260261

262+
file, err = os.Open(fmt.Sprintf("%s.xlsx", path.Join(constant.ResultPathPrefix, resultName)))
263+
if err == nil {
264+
defer file.Close()
265+
err = os.Remove(fmt.Sprintf("%s.xlsx", path.Join(constant.ResultPathPrefix, resultName)))
266+
if err != nil {
267+
klog.Error("failed to delete result xlsx file")
268+
}
269+
}
270+
261271
return kubeeyev1alpha2.InspectResult{
262272
ObjectMeta: metav1.ObjectMeta{Name: resultName,
263-
Labels: map[string]string{constant.LabelTaskName: task.Name},
273+
Labels: map[string]string{
274+
constant.LabelTaskName: task.Name,
275+
constant.LabelPlanName: task.Labels[constant.LabelPlanName],
276+
},
264277
Annotations: map[string]string{
265278
constant.AnnotationStartTime: task.Status.StartTimestamp.Format("2006-01-02 15:04:05"),
266279
constant.AnnotationEndTime: task.Status.EndTimestamp.Format("2006-01-02 15:04:05"),
@@ -440,7 +453,19 @@ func (r *InspectTaskReconciler) getInspectResultData(ctx context.Context, client
440453
}
441454
}
442455

443-
err = saveResultFile(resultData)
456+
// get all nodes
457+
nodes, err := clients.ClientSet.CoreV1().Nodes().List(ctx, metav1.ListOptions{})
458+
if err != nil {
459+
return err
460+
}
461+
462+
// Get all pods
463+
pods, err := clients.ClientSet.CoreV1().Pods("").List(ctx, metav1.ListOptions{})
464+
if err != nil {
465+
return err
466+
}
467+
468+
err = saveResultFile(resultData, nodes, pods)
444469
if err != nil {
445470
return err
446471
}
@@ -453,7 +478,8 @@ func (r *InspectTaskReconciler) getInspectResultData(ctx context.Context, client
453478
return nil
454479
}
455480

456-
func saveResultFile(resultData *kubeeyev1alpha2.InspectResult) error {
481+
func saveResultFile(resultData *kubeeyev1alpha2.InspectResult, nodes *corev1.NodeList, pods *corev1.PodList) error {
482+
// json
457483
file, err := os.OpenFile(path.Join(constant.ResultPathPrefix, resultData.Name), os.O_CREATE|os.O_WRONLY, 0775)
458484
if err != nil {
459485
klog.Error(err, "open file error")
@@ -469,6 +495,11 @@ func saveResultFile(resultData *kubeeyev1alpha2.InspectResult) error {
469495
klog.Error(err, "write file error")
470496
return err
471497
}
498+
// execl
499+
err = output.GenerateExcel(resultData, nodes, pods)
500+
if err != nil {
501+
klog.Error(err, "generate excel error")
502+
}
472503
return nil
473504
}
474505

0 commit comments

Comments
 (0)