Skip to content

Commit 2ca048b

Browse files
authored
fix: incorrect image to model name & incorrect service check (#46)
1 parent 2955443 commit 2ca048b

8 files changed

Lines changed: 166 additions & 112 deletions

File tree

cspell.config.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ words:
2020
- clusterrole
2121
- clusterrolebinding
2222
- containedctx
23+
- containerregistry
2324
- corev1
2425
- crdkustomizecainjectionpatch
2526
- crdkustomizeresource
2627
- crdkustomizewebhookpatch
2728
- deepcopy
29+
- deepseek
2830
- deletecollection
2931
- dupl
3032
- durationcheck
@@ -66,6 +68,7 @@ words:
6668
- metricsserver
6769
- musttag
6870
- nakedret
71+
- namepkg
6972
- nekomeowww
7073
- nestif
7174
- nodeport
@@ -91,6 +94,7 @@ words:
9194
- statefulsets
9295
- staticcheck
9396
- storageclasses
97+
- stretchr
9498
- subresource
9599
- tenv
96100
- testableexamples

go.mod

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ toolchain go1.23.5
66

77
require (
88
github.com/briandowns/spinner v1.23.2
9+
github.com/google/go-containerregistry v0.20.3
910
github.com/gookit/color v1.5.4
1011
github.com/nekomeowww/xo v1.14.1
1112
github.com/onsi/ginkgo/v2 v2.22.2
1213
github.com/onsi/gomega v1.36.2
1314
github.com/samber/lo v1.49.1
1415
github.com/spf13/cobra v1.8.1
1516
github.com/spf13/pflag v1.0.6
17+
github.com/stretchr/testify v1.10.0
1618
k8s.io/api v0.32.1
1719
k8s.io/apimachinery v0.32.1
1820
k8s.io/cli-runtime v0.32.1
@@ -63,8 +65,10 @@ require (
6365
github.com/modern-go/reflect2 v1.0.2 // indirect
6466
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
6567
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
68+
github.com/opencontainers/go-digest v1.0.0 // indirect
6669
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
6770
github.com/pkg/errors v0.9.1 // indirect
71+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
6872
github.com/prometheus/client_golang v1.20.5 // indirect
6973
github.com/prometheus/client_model v0.6.1 // indirect
7074
github.com/prometheus/common v0.61.0 // indirect
@@ -76,16 +80,16 @@ require (
7680
go.uber.org/multierr v1.11.0 // indirect
7781
go.uber.org/zap v1.27.0 // indirect
7882
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect
79-
golang.org/x/net v0.33.0 // indirect
80-
golang.org/x/oauth2 v0.24.0 // indirect
83+
golang.org/x/net v0.34.0 // indirect
84+
golang.org/x/oauth2 v0.25.0 // indirect
8185
golang.org/x/sync v0.10.0 // indirect
82-
golang.org/x/sys v0.28.0 // indirect
83-
golang.org/x/term v0.27.0 // indirect
86+
golang.org/x/sys v0.29.0 // indirect
87+
golang.org/x/term v0.28.0 // indirect
8488
golang.org/x/text v0.21.0 // indirect
8589
golang.org/x/time v0.8.0 // indirect
86-
golang.org/x/tools v0.28.0 // indirect
90+
golang.org/x/tools v0.29.0 // indirect
8791
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
88-
google.golang.org/protobuf v1.36.1 // indirect
92+
google.golang.org/protobuf v1.36.3 // indirect
8993
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
9094
gopkg.in/inf.v0 v0.9.1 // indirect
9195
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
66
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
77
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
88
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
9-
github.com/briandowns/spinner v1.23.1 h1:t5fDPmScwUjozhDj4FA46p5acZWIPXYE30qW2Ptu650=
10-
github.com/briandowns/spinner v1.23.1/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM=
119
github.com/briandowns/spinner v1.23.2 h1:Zc6ecUnI+YzLmJniCfDNaMbW0Wid1d5+qcTq4L2FW8w=
1210
github.com/briandowns/spinner v1.23.2/go.mod h1:LaZeM4wm2Ywy6vO571mvhQNRcWfRUnXOs0RcKV0wYKM=
1311
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
@@ -56,6 +54,8 @@ github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcb
5654
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5755
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
5856
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
57+
github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI=
58+
github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI=
5959
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
6060
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
6161
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -105,18 +105,14 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/
105105
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
106106
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
107107
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
108-
github.com/nekomeowww/xo v1.14.0 h1:kf53X19ZS5hNEEc7cziSUtNtKjWaBF/ck4jlhcKZoVE=
109-
github.com/nekomeowww/xo v1.14.0/go.mod h1:c6ojfsdBrh82pxiHg9hCxuTIcCPT3+lmWQWjOccdLBg=
110108
github.com/nekomeowww/xo v1.14.1 h1:s7sG7a9hX4CjvlNVjGt5id0qO39rycKLR9DVwMF7cXw=
111109
github.com/nekomeowww/xo v1.14.1/go.mod h1:kYvnv0bJyq7kIpMbQVyDGDCxmU0z6UaQGfrBew/mMiA=
112-
github.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=
113-
github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=
114110
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
115111
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
116-
github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
117-
github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
118112
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
119113
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
114+
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
115+
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
120116
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
121117
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
122118
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -135,8 +131,6 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG
135131
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
136132
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
137133
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
138-
github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
139-
github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
140134
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
141135
github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
142136
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
@@ -145,7 +139,6 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp
145139
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
146140
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
147141
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
148-
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
149142
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
150143
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
151144
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
@@ -181,10 +174,10 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
181174
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
182175
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
183176
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
184-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
185-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
186-
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
187-
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
177+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
178+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
179+
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
180+
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
188181
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
189182
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
190183
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -196,10 +189,10 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
196189
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
197190
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
198191
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
199-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
200-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
201-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
202-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
192+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
193+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
194+
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
195+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
203196
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
204197
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
205198
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
@@ -210,18 +203,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
210203
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
211204
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
212205
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
213-
golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
214-
golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
206+
golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
207+
golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
215208
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
216209
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
217210
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
218211
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
219212
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
220213
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
221-
google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ=
222-
google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
223-
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
224-
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
214+
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
215+
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
225216
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
226217
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
227218
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -232,22 +223,14 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
232223
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
233224
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
234225
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
235-
k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE=
236-
k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0=
237226
k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc=
238227
k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k=
239228
k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0=
240229
k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw=
241-
k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg=
242-
k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
243230
k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs=
244231
k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
245-
k8s.io/cli-runtime v0.32.0 h1:dP+OZqs7zHPpGQMCGAhectbHU2SNCuZtIimRKTv2T1c=
246-
k8s.io/cli-runtime v0.32.0/go.mod h1:Mai8ht2+esoDRK5hr861KRy6z0zHsSTYttNVJXgP3YQ=
247232
k8s.io/cli-runtime v0.32.1 h1:19nwZPlYGJPUDbhAxDIS2/oydCikvKMHsxroKNGA2mM=
248233
k8s.io/cli-runtime v0.32.1/go.mod h1:NJPbeadVFnV2E7B7vF+FvU09mpwYlZCu8PqjzfuOnkY=
249-
k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8=
250-
k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8=
251234
k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU=
252235
k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg=
253236
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
@@ -256,8 +239,6 @@ k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8X
256239
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas=
257240
k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0=
258241
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
259-
sigs.k8s.io/controller-runtime v0.19.3 h1:XO2GvC9OPftRst6xWCpTgBZO04S2cbp0Qqkj8bX1sPw=
260-
sigs.k8s.io/controller-runtime v0.19.3/go.mod h1:j4j87DqtsThvwTv5/Tc5NFRyyF/RF0ip4+62tbTSIUM=
261242
sigs.k8s.io/controller-runtime v0.20.1 h1:JbGMAG/X94NeM3xvjenVUaBjy6Ui4Ogd/J5ZtjZnHaE=
262243
sigs.k8s.io/controller-runtime v0.20.1/go.mod h1:BrP3w158MwvB3ZbNpaAcIKkHQ7YGpYnzpoSTZ8E14WU=
263244
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=

internal/cli/kollama/cmd_deploy.go

Lines changed: 50 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,26 @@ import (
44
"context"
55
"fmt"
66
"net/url"
7-
"os"
87
"strings"
98
"time"
109

10+
"github.com/briandowns/spinner"
11+
"github.com/gookit/color"
12+
"github.com/nekomeowww/ollama-operator/pkg/model"
1113
"github.com/samber/lo"
1214
"github.com/spf13/cobra"
1315
"github.com/spf13/pflag"
1416
"sigs.k8s.io/controller-runtime/pkg/client"
1517

18+
namepkg "github.com/google/go-containerregistry/pkg/name"
1619
corev1 "k8s.io/api/core/v1"
1720
"k8s.io/apimachinery/pkg/api/resource"
21+
"k8s.io/cli-runtime/pkg/genericclioptions"
22+
"k8s.io/cli-runtime/pkg/genericiooptions"
1823
"k8s.io/client-go/discovery"
1924
"k8s.io/client-go/dynamic"
2025
"k8s.io/client-go/rest"
2126
"k8s.io/client-go/tools/clientcmd"
22-
23-
"k8s.io/cli-runtime/pkg/genericclioptions"
24-
"k8s.io/cli-runtime/pkg/genericiooptions"
2527
)
2628

2729
const (
@@ -216,61 +218,53 @@ func (o *CmdDeployOptions) runE(cmd *cobra.Command, args []string) error {
216218
if err != nil {
217219
return err
218220
}
221+
modelImageRef, err := namepkg.ParseReference(modelImage, namepkg.Insecure, namepkg.WithDefaultRegistry(""), namepkg.WithDefaultTag("latest"))
222+
if err != nil {
223+
return err
224+
}
219225

220226
fmt.Println("Deploying model \"" + modelName + "\"...\n")
221227

222228
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
223229
defer cancel()
224230

225-
model, err := getOllama(ctx, o.dynamicClient, namespace, modelName)
231+
createdModel, err := getOllama(ctx, o.dynamicClient, namespace, modelName)
226232
if err != nil {
227233
return err
228234
}
229-
if model != nil {
230-
fmt.Printf(deployedAlreadyMessage, modelName, command(), modelName)
231-
os.Exit(1)
232-
}
235+
if createdModel == nil {
236+
var resourceRequirements corev1.ResourceRequirements
233237

234-
var resourceRequirements corev1.ResourceRequirements
238+
for _, limit := range o.resourceLimits {
239+
parts := strings.Split(limit, "=")
240+
if len(parts) != 2 {
241+
return fmt.Errorf("invalid resource limit format: %s", limit)
242+
}
243+
if resourceRequirements.Limits == nil {
244+
resourceRequirements.Limits = make(corev1.ResourceList)
245+
}
235246

236-
for _, limit := range o.resourceLimits {
237-
parts := strings.Split(limit, "=")
238-
if len(parts) != 2 {
239-
return fmt.Errorf("invalid resource limit format: %s", limit)
247+
resourceRequirements.Limits[corev1.ResourceName(parts[0])] = resource.MustParse(parts[1])
240248
}
241-
if resourceRequirements.Limits == nil {
242-
resourceRequirements.Limits = make(corev1.ResourceList)
243-
}
244-
245-
resourceRequirements.Limits[corev1.ResourceName(parts[0])] = resource.MustParse(parts[1])
246-
}
247249

248-
createdModelCtx, createdModelCancel := context.WithTimeout(context.Background(), 1*time.Minute)
249-
defer createdModelCancel()
250+
createdModelCtx, createdModelCancel := context.WithTimeout(context.Background(), 1*time.Minute)
251+
defer createdModelCancel()
250252

251-
createdModel, err := createOllamaModel(createdModelCtx, o.dynamicClient, namespace, modelName, modelImage, resourceRequirements, o.storageClass, o.pvAccessMode)
252-
if err != nil {
253-
return err
254-
}
255-
if !o.expose {
256-
fmt.Printf(deployedNonExposedMessage, modelName, command(), modelName, command(), modelName, createdModel.Name, createdModel.Name)
257-
return nil
258-
}
259-
260-
var modelImageFullPath string
261-
if strings.Contains(modelImage, "/") {
262-
modelImageFullPath = modelImage
263-
} else {
264-
modelImageFullPath = fmt.Sprintf("registry.ollama.ai/library/%s:latest", modelImage)
253+
createdModel, err := createOllamaModel(createdModelCtx, o.dynamicClient, namespace, modelName, modelImage, resourceRequirements, o.storageClass, o.pvAccessMode)
254+
if err != nil {
255+
return err
256+
}
257+
if !o.expose {
258+
fmt.Printf(deployedNonExposedMessage, modelName, command(), modelName, command(), modelName, createdModel.Name, createdModel.Name)
259+
return nil
260+
}
265261
}
266262

267-
err = waitUntilModelAvailable(o.kubeClient, namespace, modelName, modelImageFullPath)
263+
err = waitUntilModelAvailable(o.kubeClient, namespace, modelName, modelImageRef.String())
268264
if err != nil {
269265
return err
270266
}
271267

272-
fmt.Println()
273-
274268
exposeSvcCtx, exposeSvcCancel := context.WithTimeout(context.Background(), 1*time.Minute)
275269
defer exposeSvcCancel()
276270

@@ -287,13 +281,29 @@ func (o *CmdDeployOptions) runE(cmd *cobra.Command, args []string) error {
287281
return err
288282
}
289283

284+
s := spinner.New(spinner.CharSets[14], 200*time.Millisecond)
285+
s.FinalMSG = color.FgGreen.Render("✓") + " model exposed"
286+
_ = s.Color("blue")
287+
288+
s.Start()
289+
s.Suffix = " exposing model service..."
290+
291+
err = waitUntilOllamaModelServiceReady(exposeSvcCtx, o.kubeClient, namespace, modelName)
292+
if err != nil {
293+
return err
294+
}
295+
296+
s.Stop()
297+
fmt.Println()
298+
fmt.Println()
299+
290300
parsedHost, err := url.Parse(o.kubeConfig.Host)
291301
if err != nil {
292302
return err
293303
}
294304

295305
ollamaHost := fmt.Sprintf("%s:%d", parsedHost.Hostname(), svc.Spec.Ports[0].NodePort)
296-
fmt.Printf(deployedExposedMessage, modelName, ollamaHost, ollamaHost, modelName, ollamaHost, modelName)
306+
fmt.Printf(deployedExposedMessage, modelName, ollamaHost, ollamaHost, model.OllamaModelNameFromNameReference(modelImageRef), ollamaHost, model.OllamaModelNameFromNameReference(modelImageRef))
297307

298308
return nil
299309
}

0 commit comments

Comments
 (0)