Skip to content

Commit 0f6dc2c

Browse files
committed
add anexia changes from 1.59
Upstream PRs use virtio as nic kubermatic#1942 stop template resolving kubermatic#1943 Originally implemented in - 11e2b3c - 07f3827 Stop template resolving if not needed Avoiding the template ID resolving is needed, because otherwise the teardown of existing machines can fail if the named template does not longer exist. This happened as part of the Flatcar rollout (VSO-2422) and led to node rotation issues. Closes: ANXKUBE-1361 Refactor provisioning handling of VMs Checking the returned errors alone does not match the behaviour of the API, which keeps the errors field, even if later runs of the provisioning task we're successful later. Because of that, the machine controller was not able to delete machines that were created, but not yet provisioned as nodes. By evaluating the "status" field instead of the presence of errors, we can (hopefully) better verify the provisioning status of a VM. Furthemore, the default NIC type got changed to "virtio", because of breaking API changes introduced and not yet reverted (VSSUP-16). Unfortunately, in order to work with the newer go-anxcloud release, the Go version in the Dockerfile had to be bumped as well. Tested on my playground cluster, where the provisioning of new machines is working. Closes: ANXKUBE-1326
1 parent c7a24ff commit 0f6dc2c

File tree

6 files changed

+100
-67
lines changed

6 files changed

+100
-67
lines changed

go.mod

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ require (
4242
github.com/vmware/go-vcloud-director/v2 v2.25.0
4343
github.com/vmware/govmomi v0.43.0
4444
github.com/vultr/govultr/v3 v3.9.1
45-
go.anx.io/go-anxcloud v0.7.3
45+
go.anx.io/go-anxcloud v0.7.8
4646
go.uber.org/zap v1.27.0
47-
golang.org/x/crypto v0.27.0
47+
golang.org/x/crypto v0.31.0
4848
golang.org/x/oauth2 v0.23.0
4949
gomodules.xyz/jsonpatch/v2 v2.4.0
5050
google.golang.org/api v0.197.0
@@ -118,7 +118,7 @@ require (
118118
github.com/google/go-cmp v0.6.0 // indirect
119119
github.com/google/go-querystring v1.1.0 // indirect
120120
github.com/google/gofuzz v1.2.0 // indirect
121-
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
121+
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
122122
github.com/google/s2a-go v0.1.8 // indirect
123123
github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
124124
github.com/googleapis/gax-go/v2 v2.13.0 // indirect
@@ -142,8 +142,8 @@ require (
142142
github.com/modern-go/reflect2 v1.0.2 // indirect
143143
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
144144
github.com/oklog/ulid v1.3.1 // indirect
145-
github.com/onsi/ginkgo/v2 v2.20.1 // indirect
146-
github.com/onsi/gomega v1.34.1 // indirect
145+
github.com/onsi/ginkgo/v2 v2.22.2 // indirect
146+
github.com/onsi/gomega v1.36.2 // indirect
147147
github.com/openshift/custom-resource-status v1.1.2 // indirect
148148
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
149149
github.com/peterhellberg/link v1.2.0 // indirect
@@ -163,18 +163,18 @@ require (
163163
go.uber.org/atomic v1.11.0 // indirect
164164
go.uber.org/multierr v1.11.0 // indirect
165165
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
166-
golang.org/x/net v0.29.0 // indirect
167-
golang.org/x/sync v0.8.0 // indirect
168-
golang.org/x/sys v0.25.0 // indirect
169-
golang.org/x/term v0.24.0 // indirect
170-
golang.org/x/text v0.18.0 // indirect
166+
golang.org/x/net v0.33.0 // indirect
167+
golang.org/x/sync v0.10.0 // indirect
168+
golang.org/x/sys v0.28.0 // indirect
169+
golang.org/x/term v0.27.0 // indirect
170+
golang.org/x/text v0.21.0 // indirect
171171
golang.org/x/time v0.6.0 // indirect
172-
golang.org/x/tools v0.25.0 // indirect
172+
golang.org/x/tools v0.28.0 // indirect
173173
google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
174174
google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
175175
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
176176
google.golang.org/grpc v1.66.2 // indirect
177-
google.golang.org/protobuf v1.34.2 // indirect
177+
google.golang.org/protobuf v1.36.1 // indirect
178178
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 // indirect
179179
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
180180
gopkg.in/inf.v0 v0.9.1 // indirect

go.sum

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
249249
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
250250
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
251251
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
252-
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k=
253-
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
252+
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
253+
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
254254
github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
255255
github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
256256
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -367,15 +367,15 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108
367367
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
368368
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
369369
github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
370-
github.com/onsi/ginkgo/v2 v2.20.1 h1:YlVIbqct+ZmnEph770q9Q7NVAz4wwIiVNahee6JyUzo=
371-
github.com/onsi/ginkgo/v2 v2.20.1/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI=
370+
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
371+
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
372372
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
373373
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
374374
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
375375
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
376376
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
377-
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
378-
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
377+
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
378+
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
379379
github.com/openshift/custom-resource-status v1.1.2 h1:C3DL44LEbvlbItfd8mT5jWrqPfHnSOQoQf/sypqA6A4=
380380
github.com/openshift/custom-resource-status v1.1.2/go.mod h1:DB/Mf2oTeiAmVVX1gN+NEqweonAPY0TKUwADizj8+ZA=
381381
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
@@ -452,8 +452,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
452452
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
453453
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
454454
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
455-
go.anx.io/go-anxcloud v0.7.3 h1:NWkm4KAg0GyJALBbSgp++J2K563lHQGDDVJAcM6CgUU=
456-
go.anx.io/go-anxcloud v0.7.3/go.mod h1:RpJvC8ZmXNu9dSygIgZ0ossqPz0+6n9xDX9weeATmSo=
455+
go.anx.io/go-anxcloud v0.7.8 h1:FJk1CKBqFeBPLswSpfAGogPITkciXQ9N7Jd9adGNcH8=
456+
go.anx.io/go-anxcloud v0.7.8/go.mod h1:OlwFe0Kf3BTp3GphivKalBiElZPgsNEEN/tMsLymbX0=
457457
go.keploy.io/server v0.8.6 h1:czE9jaliyAkMMJcYnMPNuu6tun7UgwFbokxEG95vLN4=
458458
go.keploy.io/server v0.8.6/go.mod h1:t7BPuZQSiC3PNHZ9dbn3e3VB61HNWwiqVmaRujfDFUg=
459459
go.mongodb.org/mongo-driver v1.16.1 h1:rIVLL3q0IHM39dvE+z2ulZLp9ENZKThVfuvN/IiN4l8=
@@ -495,8 +495,8 @@ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq
495495
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
496496
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
497497
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
498-
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
499-
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
498+
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
499+
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
500500
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
501501
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
502502
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -550,8 +550,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
550550
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
551551
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
552552
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
553-
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
554-
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
553+
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
554+
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
555555
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
556556
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
557557
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
@@ -566,8 +566,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
566566
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
567567
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
568568
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
569-
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
570-
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
569+
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
570+
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
571571
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
572572
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
573573
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -601,8 +601,8 @@ golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
601601
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
602602
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
603603
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
604-
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
605-
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
604+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
605+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
606606
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
607607
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
608608
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -613,8 +613,8 @@ golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
613613
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
614614
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
615615
golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
616-
golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM=
617-
golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8=
616+
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
617+
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
618618
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
619619
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
620620
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -627,8 +627,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
627627
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
628628
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
629629
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
630-
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
631-
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
630+
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
631+
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
632632
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
633633
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
634634
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -651,8 +651,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
651651
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
652652
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
653653
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
654-
golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
655-
golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
654+
golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
655+
golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
656656
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
657657
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
658658
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -697,8 +697,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
697697
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
698698
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
699699
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
700-
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
701-
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
700+
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
701+
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
702702
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 h1:FVCohIoYO7IJoDDVpV2pdq7SgrMH6wHnuTyrdrxJNoY=
703703
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0/go.mod h1:OdE7CF6DbADk7lN8LIKRzRJTTZXIjtWgA5THM5lhBAw=
704704
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

pkg/cloudprovider/provider/anexia/network_provisioning.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,9 @@ func networkInterfacesForProvisioning(ctx context.Context, log *zap.SugaredLogge
7373
}
7474

7575
ret[netIndex] = anxvm.Network{
76-
VLAN: network.VlanID,
77-
IPs: addresses,
78-
79-
// the one NIC type supported by the ADC API
80-
NICType: anxtypes.VmxNet3NIC,
76+
VLAN: network.VlanID,
77+
IPs: addresses,
78+
NICType: anxtypes.VirtioNIC,
8179
}
8280
}
8381

pkg/cloudprovider/provider/anexia/provider.go

Lines changed: 58 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,33 @@ func ensureConditions(status *anxtypes.ProviderStatus) {
234234
}
235235
}
236236

237+
// getTokenFromSpec got extracted from getConfig in order to circumvent it.
238+
//
239+
// That allowed us to reduce [Cleanup] to the bare minimum and allowing tear
240+
// downs if the template no longer exists. (ANXKUBE-1361)
241+
func (p *provider) getTokenFromSpec(spec clusterv1alpha1.ProviderSpec) (string, error) {
242+
if spec.Value == nil {
243+
return "", fmt.Errorf("machine.spec.providerSpec.value is nil")
244+
}
245+
246+
pconfig, err := providerconfigtypes.GetConfig(spec)
247+
if err != nil {
248+
return "", err
249+
}
250+
251+
rawConfig, err := anxtypes.GetConfig(*pconfig)
252+
if err != nil {
253+
return "", fmt.Errorf("error parsing provider config: %w", err)
254+
}
255+
256+
token, err := p.configVarResolver.GetConfigVarStringValueOrEnv(rawConfig.Token, anxtypes.AnxTokenEnv)
257+
if err != nil {
258+
return "", fmt.Errorf("failed to get 'token': %w", err)
259+
}
260+
261+
return token, nil
262+
}
263+
237264
func (p *provider) getConfig(ctx context.Context, log *zap.SugaredLogger, provSpec clusterv1alpha1.ProviderSpec) (*resolvedConfig, *providerconfigtypes.Config, error) {
238265
pconfig, err := providerconfigtypes.GetConfig(provSpec)
239266
if err != nil {
@@ -323,12 +350,12 @@ func (p *provider) Validate(ctx context.Context, log *zap.SugaredLogger, machine
323350
}
324351

325352
func (p *provider) Get(ctx context.Context, log *zap.SugaredLogger, machine *clusterv1alpha1.Machine, pd *cloudprovidertypes.ProviderData) (instance.Instance, error) {
326-
config, _, err := p.getConfig(ctx, log, machine.Spec.ProviderSpec)
353+
token, err := p.getTokenFromSpec(machine.Spec.ProviderSpec)
327354
if err != nil {
328-
return nil, newError(common.InvalidConfigurationMachineError, "failed to retrieve config: %v", err)
355+
return nil, newError(common.InvalidConfigurationMachineError, "querying token: %v", err)
329356
}
330357

331-
_, cli, err := getClient(config.Token, &machine.Name)
358+
_, cli, err := getClient(token, &machine.Name)
332359
if err != nil {
333360
return nil, newError(common.InvalidConfigurationMachineError, "failed to create Anexia client: %v", err)
334361
}
@@ -346,21 +373,26 @@ func (p *provider) Get(ctx context.Context, log *zap.SugaredLogger, machine *clu
346373
}
347374

348375
if status.InstanceID == "" {
349-
progress, err := vsphereAPI.Provisioning().Progress().Get(ctx, status.ProvisioningID)
376+
p, err := vsphereAPI.Provisioning().Progress().Get(ctx, status.ProvisioningID)
350377
if err != nil {
351378
return nil, anexiaErrorToTerminalError(err, "failed to get provisioning progress")
352379
}
353-
if len(progress.Errors) > 0 {
354-
return nil, fmt.Errorf("vm provisioning had errors: %s", strings.Join(progress.Errors, ","))
355-
}
356-
if progress.Progress < 100 || progress.VMIdentifier == "" {
357-
return &anexiaInstance{isCreating: true}, nil
358-
}
359380

360-
status.InstanceID = progress.VMIdentifier
361-
362-
if err := updateMachineStatus(machine, status, pd.Update); err != nil {
363-
return nil, fmt.Errorf("failed updating machine status: %w", err)
381+
switch p.Status {
382+
// First, check whether the request is successful. We have to do this ahead of the error checking,
383+
// because the errors field does not seem to get cleared if the same provisioning task was successful
384+
// in the next run.
385+
//
386+
// See also: VSD-1473
387+
case progress.StatusSuccess:
388+
status.InstanceID = p.VMIdentifier
389+
if err := updateMachineStatus(machine, status, pd.Update); err != nil {
390+
return nil, fmt.Errorf("failed updating machine status: %w", err)
391+
}
392+
case progress.StatusFailed:
393+
return nil, fmt.Errorf("vm provisioning had errors: %s", strings.Join(p.Errors, ","))
394+
case progress.StatusInProgress:
395+
return &anexiaInstance{isCreating: true}, nil
364396
}
365397
}
366398

@@ -399,12 +431,12 @@ func (p *provider) Cleanup(ctx context.Context, log *zap.SugaredLogger, machine
399431
}()
400432

401433
ensureConditions(&status)
402-
config, _, err := p.getConfig(ctx, log, machine.Spec.ProviderSpec)
434+
token, err := p.getTokenFromSpec(machine.Spec.ProviderSpec)
403435
if err != nil {
404-
return false, newError(common.InvalidConfigurationMachineError, "failed to parse MachineSpec: %v", err)
436+
return false, fmt.Errorf("querying token from MachineSpec failed: %w", err)
405437
}
406438

407-
_, cli, err := getClient(config.Token, &machine.Name)
439+
_, cli, err := getClient(token, &machine.Name)
408440
if err != nil {
409441
return false, newError(common.InvalidConfigurationMachineError, "failed to create Anexia client: %v", err)
410442
}
@@ -446,16 +478,18 @@ func isTaskDone(ctx context.Context, cli anxclient.Client, progressIdentifier st
446478
return false, err
447479
}
448480

449-
if len(response.Errors) != 0 {
481+
switch response.Status {
482+
case progress.StatusSuccess:
483+
return true, nil
484+
case progress.StatusInProgress:
485+
return false, nil
486+
case progress.StatusCancelled,
487+
progress.StatusFailed:
450488
taskErrors, _ := json.Marshal(response.Errors)
451489
return true, fmt.Errorf("task failed with: %s", taskErrors)
490+
default:
491+
panic(fmt.Sprintf("unexpected progress.Status: %#v", response.Status))
452492
}
453-
454-
if response.Progress == 100 {
455-
return true, nil
456-
}
457-
458-
return false, nil
459493
}
460494

461495
func (p *provider) MigrateUID(_ context.Context, _ *zap.SugaredLogger, _ *clusterv1alpha1.Machine, _ k8stypes.UID) error {

0 commit comments

Comments
 (0)