@@ -20,31 +20,58 @@ import (
20
20
g "github.com/golang/mock/gomock"
21
21
. "github.com/onsi/ginkgo/v2"
22
22
. "github.com/onsi/gomega"
23
+ "k8s.io/apimachinery/pkg/types"
23
24
infrav1 "sigs.k8s.io/cluster-api-provider-cloudstack/api/v1beta3"
24
25
dummies "sigs.k8s.io/cluster-api-provider-cloudstack/test/dummies/v1beta3"
26
+ ctrl "sigs.k8s.io/controller-runtime"
25
27
"sigs.k8s.io/controller-runtime/pkg/client"
26
28
)
27
29
28
30
var _ = Describe ("CloudStackIsolatedNetworkReconciler" , func () {
29
31
Context ("With k8s like test environment." , func () {
30
32
BeforeEach (func () {
31
- SetupTestEnvironment () // Must happen before setting up managers/reconcilers.
33
+ SetupTestEnvironment () // Must happen before setting up managers/reconcilers.
34
+ dummies .SetDummyVars ()
32
35
Ω (IsoNetReconciler .SetupWithManager (k8sManager )).Should (Succeed ()) // Register CloudStack IsoNetReconciler.
33
36
})
34
37
35
38
It ("Should set itself to ready if there are no errors in calls to CloudStack methods." , func () {
36
39
mockCloudClient .EXPECT ().GetOrCreateIsolatedNetwork (g .Any (), g .Any (), g .Any ()).AnyTimes ()
37
40
mockCloudClient .EXPECT ().AddClusterTag (g .Any (), g .Any (), g .Any ()).AnyTimes ()
38
41
42
+ // We use CSFailureDomain2 here because CSFailureDomain1 has an empty Spec.Zone.ID
43
+ dummies .CSISONet1 .Spec .FailureDomainName = dummies .CSFailureDomain2 .Spec .Name
44
+ Ω (k8sClient .Create (ctx , dummies .CSFailureDomain2 )).Should (Succeed ())
39
45
Ω (k8sClient .Create (ctx , dummies .CSISONet1 )).Should (Succeed ())
46
+
40
47
Eventually (func () bool {
41
48
tempIsoNet := & infrav1.CloudStackIsolatedNetwork {}
42
49
key := client .ObjectKeyFromObject (dummies .CSISONet1 )
43
50
if err := k8sClient .Get (ctx , key , tempIsoNet ); err == nil {
44
- return true
51
+ if tempIsoNet .Status .Ready == true {
52
+ return true
53
+ }
45
54
}
46
55
return false
47
56
}, timeout ).WithPolling (pollInterval ).Should (BeTrue ())
48
57
})
49
58
})
59
+
60
+ Context ("With a fake ctrlRuntimeClient and no test Env at all." , func () {
61
+ BeforeEach (func () {
62
+ setupFakeTestClient ()
63
+ })
64
+
65
+ It ("Should requeue in case the zone ID is not resolved yet." , func () {
66
+ // We use CSFailureDomain1 here because it has an empty Spec.Zone.ID
67
+ dummies .CSISONet1 .Spec .FailureDomainName = dummies .CSFailureDomain1 .Spec .Name
68
+ Ω (fakeCtrlClient .Create (ctx , dummies .CSFailureDomain1 )).Should (Succeed ())
69
+ Ω (fakeCtrlClient .Create (ctx , dummies .CSISONet1 )).Should (Succeed ())
70
+
71
+ requestNamespacedName := types.NamespacedName {Namespace : dummies .ClusterNameSpace , Name : dummies .CSISONet1 .Name }
72
+ res , err := IsoNetReconciler .Reconcile (ctx , ctrl.Request {NamespacedName : requestNamespacedName })
73
+ Ω (err ).ShouldNot (HaveOccurred ())
74
+ Ω (res .RequeueAfter ).ShouldNot (BeZero ())
75
+ })
76
+ })
50
77
})
0 commit comments