@@ -18,9 +18,12 @@ package controllers
18
18
19
19
import (
20
20
"context"
21
+ "errors"
21
22
"path/filepath"
22
23
"testing"
23
24
25
+ "github.com/go-logr/logr"
26
+ "github.com/golang/mock/gomock"
24
27
. "github.com/onsi/ginkgo/v2"
25
28
. "github.com/onsi/gomega"
26
29
corev1 "k8s.io/api/core/v1"
@@ -29,11 +32,14 @@ import (
29
32
"k8s.io/apimachinery/pkg/types"
30
33
"k8s.io/client-go/kubernetes/scheme"
31
34
"k8s.io/client-go/rest"
35
+ clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
32
36
"sigs.k8s.io/cluster-api/test/framework"
33
37
"sigs.k8s.io/controller-runtime/pkg/client"
34
38
"sigs.k8s.io/controller-runtime/pkg/envtest"
35
39
36
40
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7"
41
+ "sigs.k8s.io/cluster-api-provider-openstack/pkg/cloud/services/compute"
42
+ "sigs.k8s.io/cluster-api-provider-openstack/pkg/scope"
37
43
"sigs.k8s.io/cluster-api-provider-openstack/test/helpers/external"
38
44
)
39
45
@@ -90,7 +96,7 @@ var _ = AfterSuite(func() {
90
96
})
91
97
92
98
var _ = Describe ("EnvTest sanity check" , func () {
93
- ctx : = context .TODO ()
99
+ ctx = context .TODO ()
94
100
It ("should be able to create a namespace" , func () {
95
101
testNamespace := "capo-test"
96
102
namespacedName := types.NamespacedName {
@@ -117,3 +123,44 @@ var _ = Describe("EnvTest sanity check", func() {
117
123
// will actually stay in "Terminating" state and never be completely gone.
118
124
})
119
125
})
126
+
127
+ var _ = Describe ("When calling getOrCreate" , func () {
128
+ var (
129
+ logger logr.Logger
130
+ reconsiler OpenStackMachineReconciler
131
+ mockCtrl * gomock.Controller
132
+ mockScopeFactory * scope.MockScopeFactory
133
+ computeService * compute.Service
134
+ err error
135
+ )
136
+
137
+ BeforeEach (func () {
138
+ ctx = context .Background ()
139
+ logger = logr .Discard ()
140
+ reconsiler = OpenStackMachineReconciler {}
141
+ mockCtrl = gomock .NewController (GinkgoT ())
142
+ mockScopeFactory = scope .NewMockScopeFactory (mockCtrl , "1234" , logger )
143
+ computeService , err = compute .NewService (mockScopeFactory )
144
+ Expect (err ).NotTo (HaveOccurred ())
145
+ })
146
+
147
+ It ("should return an error if unable to get instance" , func () {
148
+ cluster := & clusterv1.Cluster {}
149
+ openStackCluster := & infrav1.OpenStackCluster {}
150
+ machine := & clusterv1.Machine {}
151
+ openStackMachine := & infrav1.OpenStackMachine {}
152
+
153
+ mockScopeFactory .ComputeClient .EXPECT ().ListServers (gomock .Any ()).Return (nil , errors .New ("Test error when listing servers" ))
154
+ instanceStatus , err := reconsiler .getOrCreate (logger , cluster , openStackCluster , machine , openStackMachine , computeService , "" )
155
+ Expect (err ).To (HaveOccurred ())
156
+ Expect (instanceStatus ).To (BeNil ())
157
+ conditions := openStackMachine .GetConditions ()
158
+ Expect (len (conditions ) > 0 ).To (BeTrue ())
159
+ for i := range conditions {
160
+ if conditions [i ].Type == infrav1 .InstanceReadyCondition {
161
+ Expect (conditions [i ].Reason ).To (Equal (infrav1 .OpenStackErrorReason ))
162
+ break
163
+ }
164
+ }
165
+ })
166
+ })
0 commit comments