Skip to content

Commit d640335

Browse files
committed
fix tests
1 parent 38bd29b commit d640335

File tree

5 files changed

+49
-19
lines changed

5 files changed

+49
-19
lines changed

controllers/cloudstackcluster_controller.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,17 @@ func (r *CloudStackClusterReconciliationRunner) Reconcile() (res ctrl.Result, re
100100

101101
// GetOrCreateCluster checks if an unmanaged cluster is present in Cloudstack else creates one.
102102
func (r *CloudStackClusterReconciliationRunner) GetOrCreateCluster() (ctrl.Result, error) {
103-
r.AsFailureDomainUser(&r.FailureDomains.Items[0].Spec)()
104-
err := r.CSUser.GetOrCreateCluster(r.CAPICluster, r.ReconciliationSubject, &r.FailureDomains.Items[0].Spec)
103+
res, err := r.AsFailureDomainUser(&r.CSCluster.Spec.FailureDomains[0])()
104+
if r.ShouldReturn(res, err) {
105+
return res, err
106+
}
107+
err = r.CSUser.GetOrCreateCluster(r.CAPICluster, r.ReconciliationSubject, &r.FailureDomains.Items[0].Spec)
105108
if err != nil {
106109
if strings.Contains(err.Error(), "Kubernetes Service plugin is disabled") {
107110
r.Log.Info("Kubernetes Service plugin is disabled on CloudStack. Skipping creating unmanaged kubernets cluster")
108111
return ctrl.Result{}, nil
109-
} else {
110-
return r.RequeueWithMessage(fmt.Sprintf("Creating unmanaged kubernetes cluster failed. Error: %s", err.Error()))
111112
}
113+
return r.RequeueWithMessage(fmt.Sprintf("Creating unmanaged kubernetes cluster failed. Error: %s", err.Error()))
112114
}
113115
return ctrl.Result{}, nil
114116
}
@@ -177,8 +179,11 @@ func (r *CloudStackClusterReconciliationRunner) ReconcileDelete() (ctrl.Result,
177179
// DeleteCluster checks if an unmanaged cluster is present in Cloudstack and then deletes it.
178180
func (r *CloudStackClusterReconciliationRunner) DeleteCluster() (ctrl.Result, error) {
179181
// If field is present and delete fails, then requeue
180-
r.AsFailureDomainUser(&r.CSCluster.Spec.FailureDomains[0])()
181-
err := r.CSUser.DeleteCluster(r.ReconciliationSubject)
182+
res, err := r.AsFailureDomainUser(&r.CSCluster.Spec.FailureDomains[0])()
183+
if r.ShouldReturn(res, err) {
184+
return res, err
185+
}
186+
err = r.CSUser.DeleteCluster(r.ReconciliationSubject)
182187
if err != nil {
183188
if strings.Contains(err.Error(), " not found") {
184189
return ctrl.Result{}, nil

controllers/cloudstackmachine_controller.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,10 @@ func (r *CloudStackMachineReconciliationRunner) ReconcileDelete() (retRes ctrl.R
355355
return ctrl.Result{}, err
356356
}
357357

358-
r.RemoveVM()
358+
res, err := r.RemoveVM()
359+
if r.ShouldReturn(res, err) {
360+
return res, err
361+
}
359362
controllerutil.RemoveFinalizer(r.ReconciliationSubject, infrav1.MachineFinalizer)
360363
r.Log.Info("VM Deleted", "instanceID", r.ReconciliationSubject.Spec.InstanceID)
361364
return ctrl.Result{}, nil

controllers/cloudstackmachine_controller_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var _ = Describe("CloudStackMachineReconciler", func() {
4444
dummies.CSCluster.Spec.FailureDomains = dummies.CSCluster.Spec.FailureDomains[:1]
4545
dummies.CSCluster.Spec.FailureDomains[0].Name = dummies.CSFailureDomain1.Spec.Name
4646

47-
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
47+
SetupTestEnvironment() // Must happen before setting up managers/reconcilers.
4848
Ω(MachineReconciler.SetupWithManager(k8sManager, controller.Options{})).Should(Succeed()) // Register the CloudStack MachineReconciler.
4949

5050
// Point CAPI machine Bootstrap secret ref to dummy bootstrap secret.
@@ -54,6 +54,17 @@ var _ = Describe("CloudStackMachineReconciler", func() {
5454
// Setup a failure domain for the machine reconciler to find.
5555
Ω(k8sClient.Create(ctx, dummies.CSFailureDomain1)).Should(Succeed())
5656
setClusterReady(k8sClient)
57+
58+
mockCloudClient.EXPECT().GetOrCreateCluster(gomock.Any(), gomock.Any(), gomock.Any()).Do(
59+
func(arg1, _, _ interface{}) {
60+
arg1.(*infrav1.CloudStackCluster).Status.CloudStackClusterID = "cluster-id-123"
61+
}).AnyTimes().Return(nil)
62+
63+
mockCloudClient.EXPECT().AddVMToCluster(
64+
gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
65+
66+
mockCloudClient.EXPECT().RemoveVMFromCluster(
67+
gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
5768
})
5869

5970
It("Should call GetOrCreateVMInstance and set Status.Ready to true", func() {
@@ -240,6 +251,8 @@ var _ = Describe("CloudStackMachineReconciler", func() {
240251
func(arg1, _, _, _, _, _ interface{}) {
241252
arg1.(*infrav1.CloudStackMachine).Status.InstanceState = "Running"
242253
}).AnyTimes()
254+
mockCloudClient.EXPECT().AddVMToCluster(
255+
gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
243256
Ω(fakeCtrlClient.Get(ctx, key, dummies.CSCluster)).Should(Succeed())
244257
Ω(fakeCtrlClient.Create(ctx, dummies.CAPIMachine)).Should(Succeed())
245258
Ω(fakeCtrlClient.Create(ctx, dummies.CSMachine1)).Should(Succeed())

go.mod

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ require (
88
github.com/go-logr/logr v1.2.3
99
github.com/golang/mock v1.6.0
1010
github.com/hashicorp/go-multierror v1.1.1
11-
github.com/onsi/ginkgo/v2 v2.4.0
12-
github.com/onsi/gomega v1.24.0
11+
github.com/onsi/ginkgo/v2 v2.9.1
12+
github.com/onsi/gomega v1.27.4
1313
github.com/pkg/errors v0.9.1
1414
github.com/prometheus/client_golang v1.14.0
1515
github.com/smallfish/simpleyaml v0.1.0
@@ -49,14 +49,16 @@ require (
4949
github.com/go-openapi/jsonpointer v0.19.5 // indirect
5050
github.com/go-openapi/jsonreference v0.20.0 // indirect
5151
github.com/go-openapi/swag v0.22.3 // indirect
52+
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
5253
github.com/gobuffalo/flect v0.3.0 // indirect
5354
github.com/gogo/protobuf v1.3.2 // indirect
5455
github.com/golang-jwt/jwt/v4 v4.2.0 // indirect
5556
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
56-
github.com/golang/protobuf v1.5.2 // indirect
57+
github.com/golang/protobuf v1.5.3 // indirect
5758
github.com/google/gnostic v0.6.9 // indirect
5859
github.com/google/go-cmp v0.5.9 // indirect
5960
github.com/google/gofuzz v1.2.0 // indirect
61+
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
6062
github.com/google/uuid v1.2.0 // indirect
6163
github.com/hashicorp/errwrap v1.0.0 // indirect
6264
github.com/imdario/mergo v0.3.13 // indirect
@@ -84,6 +86,7 @@ require (
8486
golang.org/x/sys v0.7.0 // indirect
8587
golang.org/x/term v0.7.0 // indirect
8688
golang.org/x/time v0.2.0 // indirect
89+
golang.org/x/tools v0.7.0 // indirect
8790
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
8891
google.golang.org/appengine v1.6.7 // indirect
8992
google.golang.org/genproto v0.0.0-20221107162902-2d387536bcdd // indirect
@@ -106,4 +109,4 @@ replace sigs.k8s.io/cluster-api/test => sigs.k8s.io/cluster-api/test v1.2.12
106109

107110
replace sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.2.12
108111

109-
replace github.com/apache/cloudstack-go/v2 => github.com/shapeblue/cloudstack-go/v2 support-for-unmanaged-k8s
112+
replace github.com/apache/cloudstack-go/v2 => github.com/shapeblue/cloudstack-go/v2 v2.9.1-0.20230717062313-73e4efc8a510

go.sum

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5
8989
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
9090
github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves=
9191
github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
92-
github.com/apache/cloudstack-go/v2 v2.13.0 h1:t0uj7QxQpnzD/LSTP6a4w2NTuZXisxIM/mIDNkF44lc=
93-
github.com/apache/cloudstack-go/v2 v2.13.0/go.mod h1:aosD8Svfu5nhH5Sp4zcsVV1hT5UGt3mTgRXM8YqTKe0=
9492
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
9593
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
9694
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
@@ -192,6 +190,8 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
192190
github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
193191
github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
194192
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
193+
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
194+
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
195195
github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk=
196196
github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE=
197197
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -234,8 +234,9 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
234234
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
235235
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
236236
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
237-
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
238237
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
238+
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
239+
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
239240
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
240241
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
241242
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@@ -278,6 +279,7 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
278279
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
279280
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
280281
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
282+
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec=
281283
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
282284
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
283285
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -394,10 +396,10 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
394396
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
395397
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
396398
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
397-
github.com/onsi/ginkgo/v2 v2.4.0 h1:+Ig9nvqgS5OBSACXNk15PLdp0U9XPYROt9CFzVdFGIs=
398-
github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
399-
github.com/onsi/gomega v1.24.0 h1:+0glovB9Jd6z3VR+ScSwQqXVTIfJcGA9UBM8yzQxhqg=
400-
github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
399+
github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk=
400+
github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
401+
github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E=
402+
github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
401403
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
402404
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
403405
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -448,6 +450,8 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
448450
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
449451
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
450452
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
453+
github.com/shapeblue/cloudstack-go/v2 v2.9.1-0.20230717062313-73e4efc8a510 h1:FPRBv784robz6sZSqDGfZDZMse31lj96i+enH02Xzds=
454+
github.com/shapeblue/cloudstack-go/v2 v2.9.1-0.20230717062313-73e4efc8a510/go.mod h1:Mc+tXpujtslBuZFk5atoGT2LanVxOrXS2GGgidAoz1A=
451455
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
452456
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
453457
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
@@ -804,6 +808,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
804808
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
805809
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
806810
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
811+
golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
812+
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
807813
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
808814
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
809815
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

0 commit comments

Comments
 (0)