@@ -17,6 +17,8 @@ import (
1717 "github.com/scaleway/scaleway-sdk-go/scw"
1818 "go.uber.org/mock/gomock"
1919 v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20+ "k8s.io/utils/ptr"
21+ "sigs.k8s.io/cluster-api/api/v1beta1"
2022)
2123
2224const (
@@ -69,6 +71,12 @@ func TestService_Reconcile(t *testing.T) {
6971 Namespace : "default" ,
7072 },
7173 },
74+ Cluster : & v1beta1.Cluster {
75+ ObjectMeta : v1.ObjectMeta {
76+ Name : "cluster" ,
77+ Namespace : "default" ,
78+ },
79+ },
7280 },
7381 },
7482 args : args {
@@ -121,6 +129,79 @@ func TestService_Reconcile(t *testing.T) {
121129 g .Expect (c .ScalewayCluster .Status .Network .LoadBalancerIP ).To (Equal (scw .StringPtr ("42.42.42.42" )))
122130 },
123131 },
132+ {
133+ name : "custom public LB, no extra LB, no Private Network, no ACL: create" ,
134+ fields : fields {
135+ Cluster : & scope.Cluster {
136+ ScalewayCluster : & v1alpha1.ScalewayCluster {
137+ ObjectMeta : v1.ObjectMeta {
138+ Name : "cluster" ,
139+ Namespace : "default" ,
140+ },
141+ },
142+ Cluster : & v1beta1.Cluster {
143+ ObjectMeta : v1.ObjectMeta {
144+ Name : "cluster" ,
145+ Namespace : "default" ,
146+ },
147+ Spec : v1beta1.ClusterSpec {
148+ ClusterNetwork : & v1beta1.ClusterNetwork {
149+ APIServerPort : ptr .To (int32 (4242 )),
150+ },
151+ },
152+ },
153+ },
154+ },
155+ args : args {
156+ ctx : context .TODO (),
157+ },
158+ expect : func (i * mock_client.MockInterfaceMockRecorder ) {
159+ tags := []string {"caps-namespace=default" , "caps-scalewaycluster=cluster" }
160+
161+ // Main LB
162+ i .GetZoneOrDefault (nil ).Return (scw .ZoneFrPar1 , nil )
163+ i .FindLB (gomock .Any (), scw .ZoneFrPar1 , append (tags , CAPSMainLBTag )).Return (nil , client .ErrNoItemFound )
164+ i .CreateLB (gomock .Any (), scw .ZoneFrPar1 , "cluster" , "LB-S" , nil , false , append (tags , CAPSMainLBTag )).Return (& lb.LB {
165+ ID : lbID ,
166+ Name : "cluster" ,
167+ Status : lb .LBStatusReady ,
168+ Zone : scw .ZoneFrPar1 ,
169+ IP : []* lb.IP {{IPAddress : "42.42.42.42" }},
170+ }, nil )
171+
172+ // Extra LBs
173+ i .FindLBs (gomock .Any (), append (tags , CAPSExtraLBTag )).Return ([]* lb.LB {}, nil )
174+
175+ // Backend
176+ i .FindBackend (gomock .Any (), scw .ZoneFrPar1 , lbID , BackendName ).Return (nil , client .ErrNoItemFound )
177+ i .CreateBackend (gomock .Any (), scw .ZoneFrPar1 , lbID , BackendName , nil , backendControlPlanePort ).Return (& lb.Backend {
178+ ID : backendID ,
179+ LB : & lb.LB {
180+ ID : lbID ,
181+ Zone : scw .ZoneFrPar1 ,
182+ },
183+ }, nil )
184+
185+ // Frontend
186+ i .FindFrontend (gomock .Any (), scw .ZoneFrPar1 , lbID , FrontendName ).Return (nil , client .ErrNoItemFound )
187+ i .CreateFrontend (gomock .Any (), scw .ZoneFrPar1 , lbID , FrontendName , backendID , int32 (4242 )).Return (& lb.Frontend {
188+ ID : frontendID ,
189+ LB : & lb.LB {
190+ ID : lbID ,
191+ Zone : scw .ZoneFrPar1 ,
192+ },
193+ }, nil )
194+
195+ // ACL
196+ i .FindLBACLByName (gomock .Any (), scw .ZoneFrPar1 , frontendID , allowedRangesACLName ).Return (nil , client .ErrNoItemFound )
197+ i .FindLBACLByName (gomock .Any (), scw .ZoneFrPar1 , frontendID , publicGatewayACLName ).Return (nil , client .ErrNoItemFound )
198+ i .FindLBACLByName (gomock .Any (), scw .ZoneFrPar1 , frontendID , denyAllACLName ).Return (nil , client .ErrNoItemFound )
199+ },
200+ asserts : func (g * WithT , c * scope.Cluster ) {
201+ g .Expect (c .ScalewayCluster .Status .Network ).ToNot (BeNil ())
202+ g .Expect (c .ScalewayCluster .Status .Network .LoadBalancerIP ).To (Equal (scw .StringPtr ("42.42.42.42" )))
203+ },
204+ },
124205 {
125206 name : "public LB, extra LBs, Private Network, ACL: up-to-date" ,
126207 fields : fields {
@@ -151,6 +232,12 @@ func TestService_Reconcile(t *testing.T) {
151232 },
152233 },
153234 },
235+ Cluster : & v1beta1.Cluster {
236+ ObjectMeta : v1.ObjectMeta {
237+ Name : "cluster" ,
238+ Namespace : "default" ,
239+ },
240+ },
154241 },
155242 },
156243 args : args {
0 commit comments