Skip to content

Commit 3d388b0

Browse files
authored
[shell-operator] feat: use external metrics storage (#810)
Signed-off-by: Pavel Okhlopkov <[email protected]>
1 parent f0cf2fb commit 3d388b0

28 files changed

+1389
-1483
lines changed

go.mod

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ module github.com/flant/shell-operator
33
go 1.23.8
44

55
require (
6-
github.com/deckhouse/deckhouse/pkg/log v0.0.0-20250704135428-7600b0581807
6+
github.com/deckhouse/deckhouse/pkg/log v0.1.0
7+
github.com/deckhouse/deckhouse/pkg/metrics-storage v0.2.1
78
github.com/flant/kube-client v1.3.1
89
github.com/go-chi/chi/v5 v5.2.2
910
github.com/go-openapi/spec v0.19.8
@@ -15,7 +16,7 @@ require (
1516
github.com/kennygrant/sanitize v1.2.4
1617
github.com/onsi/gomega v1.37.0
1718
github.com/pkg/errors v0.9.1
18-
github.com/prometheus/client_golang v1.20.5
19+
github.com/prometheus/client_golang v1.22.0
1920
github.com/stretchr/testify v1.10.0
2021
go.opentelemetry.io/otel v1.35.0
2122
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
@@ -86,8 +87,6 @@ require (
8687
github.com/jonboulle/clockwork v0.4.0 // indirect
8788
github.com/josharian/intern v1.0.0 // indirect
8889
github.com/json-iterator/go v1.1.12 // indirect
89-
github.com/klauspost/compress v1.17.9 // indirect
90-
github.com/kylelemons/godebug v1.1.0 // indirect
9190
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
9291
github.com/mailru/easyjson v0.7.7 // indirect
9392
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -99,7 +98,7 @@ require (
9998
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
10099
github.com/pmezard/go-difflib v1.0.0 // indirect
101100
github.com/prometheus/client_model v0.6.1 // indirect
102-
github.com/prometheus/common v0.55.0 // indirect
101+
github.com/prometheus/common v0.62.0 // indirect
103102
github.com/prometheus/procfs v0.15.1 // indirect
104103
github.com/rivo/uniseg v0.4.7 // indirect
105104
github.com/sergi/go-diff v1.2.0 // indirect
@@ -115,13 +114,14 @@ require (
115114
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
116115
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
117116
go.uber.org/automaxprocs v1.6.0 // indirect
118-
golang.org/x/net v0.38.0 // indirect
117+
golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc // indirect
118+
golang.org/x/net v0.42.0 // indirect
119119
golang.org/x/oauth2 v0.27.0 // indirect
120-
golang.org/x/sync v0.12.0 // indirect
121-
golang.org/x/sys v0.32.0 // indirect
122-
golang.org/x/term v0.30.0 // indirect
123-
golang.org/x/text v0.23.0 // indirect
124-
golang.org/x/tools v0.31.0 // indirect
120+
golang.org/x/sync v0.16.0 // indirect
121+
golang.org/x/sys v0.34.0 // indirect
122+
golang.org/x/term v0.33.0 // indirect
123+
golang.org/x/text v0.27.0 // indirect
124+
golang.org/x/tools v0.35.0 // indirect
125125
google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect
126126
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
127127
google.golang.org/grpc v1.59.0 // indirect
@@ -137,5 +137,4 @@ require (
137137
sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect
138138
sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect
139139
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
140-
141140
)

go.sum

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
3434
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3535
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3636
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
37-
github.com/deckhouse/deckhouse/pkg/log v0.0.0-20250704135428-7600b0581807 h1:0kf//0CzwRhJZBTz3yzeZtHIQumWqsCU0DR+HM5r+PA=
38-
github.com/deckhouse/deckhouse/pkg/log v0.0.0-20250704135428-7600b0581807/go.mod h1:pbAxTSDcPmwyl3wwKDcEB3qdxHnRxqTV+J0K+sha8bw=
37+
github.com/deckhouse/deckhouse/pkg/log v0.1.0 h1:2aPfyiHHSIJlX4x7ysyPOaIb7CLmyY+hUf9uDb8TYd8=
38+
github.com/deckhouse/deckhouse/pkg/log v0.1.0/go.mod h1:pbAxTSDcPmwyl3wwKDcEB3qdxHnRxqTV+J0K+sha8bw=
39+
github.com/deckhouse/deckhouse/pkg/metrics-storage v0.2.1 h1:DhMHRzmaVNXASH+koIy9gK25GU/EaK+zC6sVpacqWRw=
40+
github.com/deckhouse/deckhouse/pkg/metrics-storage v0.2.1/go.mod h1:Rz++SzCLkFW03WGgftnn91TimGU2shiKb5S/YuxcBuE=
3941
github.com/deckhouse/module-sdk v0.3.7 h1:Ur9c/SBYP/XJqFUo9N1vhcc+K8mc+YZAJvSfNQS5AaE=
4042
github.com/deckhouse/module-sdk v0.3.7/go.mod h1:DnyDfCXEbaF6RQxQSkdc9hXJTkJX/tDXTJ+8sGAvMOI=
4143
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
@@ -215,8 +217,8 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL
215217
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
216218
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
217219
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
218-
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
219-
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
220+
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
221+
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
220222
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
221223
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
222224
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -276,13 +278,13 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
276278
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
277279
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
278280
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
279-
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
280-
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
281+
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
282+
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
281283
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
282284
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
283285
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
284-
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
285-
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
286+
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
287+
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
286288
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
287289
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
288290
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
@@ -377,8 +379,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
377379
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
378380
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
379381
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
380-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
381-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
382+
golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc h1:TS73t7x3KarrNd5qAipmspBDS1rkMcgVG/fS1aRb4Rc=
383+
golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc=
382384
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
383385
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
384386
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -397,8 +399,8 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
397399
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
398400
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
399401
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
400-
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
401-
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
402+
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
403+
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
402404
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
403405
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
404406
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
@@ -409,8 +411,8 @@ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJ
409411
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
410412
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
411413
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
412-
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
413-
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
414+
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
415+
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
414416
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
415417
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
416418
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -425,17 +427,17 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
425427
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
426428
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
427429
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
428-
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
429-
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
430+
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
431+
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
430432
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
431-
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
432-
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
433+
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
434+
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
433435
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
434436
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
435437
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
436438
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
437-
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
438-
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
439+
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
440+
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
439441
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
440442
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
441443
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -453,8 +455,8 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw
453455
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
454456
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
455457
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
456-
golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
457-
golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=
458+
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
459+
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
458460
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
459461
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
460462
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

pkg/hook/hook.go

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010

1111
"github.com/deckhouse/deckhouse/pkg/log"
12+
"github.com/deckhouse/deckhouse/pkg/metrics-storage/operation"
1213
uuid "github.com/gofrs/uuid/v5"
1314
"github.com/kennygrant/sanitize"
1415
"go.opentelemetry.io/otel"
@@ -21,7 +22,6 @@ import (
2122
"github.com/flant/shell-operator/pkg/hook/config"
2223
"github.com/flant/shell-operator/pkg/hook/controller"
2324
htypes "github.com/flant/shell-operator/pkg/hook/types"
24-
"github.com/flant/shell-operator/pkg/metric_storage/operation"
2525
"github.com/flant/shell-operator/pkg/webhook/admission"
2626
"github.com/flant/shell-operator/pkg/webhook/conversion"
2727
)
@@ -175,11 +175,13 @@ func (h *Hook) Run(ctx context.Context, _ htypes.BindingType, context []bctx.Bin
175175
return result, fmt.Errorf("%s FAILED: %s", h.Name, err)
176176
}
177177

178-
result.Metrics, err = operation.MetricOperationsFromFile(metricsPath, h.Name)
178+
operations, err := MetricOperationsFromFile(metricsPath, h.Name)
179179
if err != nil {
180180
return result, fmt.Errorf("got bad metrics: %s", err)
181181
}
182182

183+
result.Metrics = h.remapOperationsToOperations(operations)
184+
183185
result.AdmissionResponse, err = admission.ResponseFromFile(admissionPath)
184186
if err != nil {
185187
return result, fmt.Errorf("got bad validating response: %s", err)
@@ -362,3 +364,34 @@ func (h *Hook) prepareObjectPatchFile() (string, error) {
362364

363365
return objectPatchPath, nil
364366
}
367+
368+
func (h *Hook) remapOperationsToOperations(ops []MetricOperation) []operation.MetricOperation {
369+
result := make([]operation.MetricOperation, 0, len(ops))
370+
for _, op := range ops {
371+
newOp := operation.MetricOperation{
372+
Name: op.Name,
373+
Value: op.Value,
374+
Buckets: op.Buckets,
375+
Labels: op.Labels,
376+
Group: op.Group,
377+
}
378+
379+
switch op.Action {
380+
case "add":
381+
newOp.Action = operation.ActionCounterAdd
382+
case "set":
383+
newOp.Action = operation.ActionGaugeSet
384+
case "observe":
385+
newOp.Action = operation.ActionHistogramObserve
386+
case "expire":
387+
newOp.Action = operation.ActionExpireMetrics
388+
default:
389+
h.Logger.Warn("unknown action in shoperation.MetricOperation: " + op.Action)
390+
continue
391+
}
392+
393+
result = append(result, newOp)
394+
}
395+
396+
return result
397+
}

pkg/metric_storage/operation/operation.go renamed to pkg/hook/operation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package operation
1+
package hook
22

33
import (
44
"bytes"

pkg/metric_storage/operation/operation_test.go renamed to pkg/hook/operation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package operation
1+
package hook
22

33
import (
44
"testing"

pkg/kube_events_manager/error_handler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ import (
66
"log/slog"
77

88
"github.com/deckhouse/deckhouse/pkg/log"
9+
metricsstorage "github.com/deckhouse/deckhouse/pkg/metrics-storage"
910
apierrors "k8s.io/apimachinery/pkg/api/errors"
1011
"k8s.io/client-go/tools/cache"
1112

12-
"github.com/flant/shell-operator/pkg/metric"
1313
utils "github.com/flant/shell-operator/pkg/utils/labels"
1414
)
1515

1616
type WatchErrorHandler struct {
1717
description string
1818
kind string
19-
metricStorage metric.Storage
19+
metricStorage metricsstorage.Storage
2020

2121
logger *log.Logger
2222
}
2323

24-
func newWatchErrorHandler(description string, kind string, logLabels map[string]string, metricStorage metric.Storage, logger *log.Logger) *WatchErrorHandler {
24+
func newWatchErrorHandler(description string, kind string, logLabels map[string]string, metricStorage metricsstorage.Storage, logger *log.Logger) *WatchErrorHandler {
2525
return &WatchErrorHandler{
2626
description: description,
2727
kind: kind,

pkg/kube_events_manager/kube_events_manager.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import (
88
"sync"
99

1010
"github.com/deckhouse/deckhouse/pkg/log"
11+
metricsstorage "github.com/deckhouse/deckhouse/pkg/metrics-storage"
1112

1213
klient "github.com/flant/kube-client/client"
1314
kemtypes "github.com/flant/shell-operator/pkg/kube_events_manager/types"
14-
"github.com/flant/shell-operator/pkg/metric"
1515
)
1616

1717
type KubeEventsManager interface {
18-
WithMetricStorage(mstor metric.Storage)
19-
MetricStorage() metric.Storage
18+
WithMetricStorage(mstor metricsstorage.Storage)
19+
MetricStorage() metricsstorage.Storage
2020
AddMonitor(monitorConfig *MonitorConfig) error
2121
HasMonitor(monitorID string) bool
2222
GetMonitor(monitorID string) Monitor
@@ -36,7 +36,7 @@ type kubeEventsManager struct {
3636

3737
ctx context.Context
3838
cancel context.CancelFunc
39-
metricStorage metric.Storage
39+
metricStorage metricsstorage.Storage
4040

4141
m sync.RWMutex
4242
Monitors map[string]Monitor
@@ -62,7 +62,7 @@ func NewKubeEventsManager(ctx context.Context, client *klient.Client, logger *lo
6262
return em
6363
}
6464

65-
func (mgr *kubeEventsManager) WithMetricStorage(mstor metric.Storage) {
65+
func (mgr *kubeEventsManager) WithMetricStorage(mstor metricsstorage.Storage) {
6666
mgr.metricStorage = mstor
6767
}
6868

@@ -149,6 +149,6 @@ func (mgr *kubeEventsManager) PauseHandleEvents() {
149149
}
150150
}
151151

152-
func (mgr *kubeEventsManager) MetricStorage() metric.Storage {
152+
func (mgr *kubeEventsManager) MetricStorage() metricsstorage.Storage {
153153
return mgr.metricStorage
154154
}

pkg/kube_events_manager/monitor.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import (
88
"sync"
99

1010
"github.com/deckhouse/deckhouse/pkg/log"
11+
metricsstorage "github.com/deckhouse/deckhouse/pkg/metrics-storage"
1112

1213
klient "github.com/flant/kube-client/client"
1314
kemtypes "github.com/flant/shell-operator/pkg/kube_events_manager/types"
14-
"github.com/flant/shell-operator/pkg/metric"
1515
utils "github.com/flant/shell-operator/pkg/utils/labels"
1616
)
1717

@@ -47,7 +47,7 @@ type monitor struct {
4747

4848
ctx context.Context
4949
cancel context.CancelFunc
50-
metricStorage metric.Storage
50+
metricStorage metricsstorage.Storage
5151

5252
logger *log.Logger
5353
}
@@ -131,7 +131,7 @@ func (c *cancelForNs) Delete(key string) {
131131

132132
var _ Monitor = (*monitor)(nil)
133133

134-
func NewMonitor(ctx context.Context, client *klient.Client, mstor metric.Storage, config *MonitorConfig, eventCb func(kemtypes.KubeEvent), logger *log.Logger) *monitor {
134+
func NewMonitor(ctx context.Context, client *klient.Client, mstor metricsstorage.Storage, config *MonitorConfig, eventCb func(kemtypes.KubeEvent), logger *log.Logger) *monitor {
135135
cctx, cancel := context.WithCancel(ctx)
136136

137137
return &monitor{

pkg/kube_events_manager/resource_informer.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
"github.com/deckhouse/deckhouse/pkg/log"
12+
metricsstorage "github.com/deckhouse/deckhouse/pkg/metrics-storage"
1213
"github.com/gofrs/uuid/v5"
1314
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1415
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -18,7 +19,6 @@ import (
1819
klient "github.com/flant/kube-client/client"
1920
"github.com/flant/shell-operator/pkg/filter/jq"
2021
kemtypes "github.com/flant/shell-operator/pkg/kube_events_manager/types"
21-
"github.com/flant/shell-operator/pkg/metric"
2222
"github.com/flant/shell-operator/pkg/utils/measure"
2323
)
2424

@@ -57,7 +57,7 @@ type resourceInformer struct {
5757
ctx context.Context
5858
cancel context.CancelFunc
5959

60-
metricStorage metric.Storage
60+
metricStorage metricsstorage.Storage
6161

6262
// a flag to stop handle events after Stop()
6363
stopped bool
@@ -68,7 +68,7 @@ type resourceInformer struct {
6868
// resourceInformer should implement ResourceInformer
6969
type resourceInformerConfig struct {
7070
client *klient.Client
71-
mstor metric.Storage
71+
mstor metricsstorage.Storage
7272
eventCb func(kemtypes.KubeEvent)
7373
monitor *MonitorConfig
7474

0 commit comments

Comments
 (0)