Skip to content

Commit 129b4dd

Browse files
authored
Refactor VPC client code (#668)
1 parent 72f387d commit 129b4dd

File tree

9 files changed

+636
-75
lines changed

9 files changed

+636
-75
lines changed

cloud/scope/clients.go

Lines changed: 0 additions & 40 deletions
This file was deleted.

cloud/scope/cluster.go

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ import (
3030
"sigs.k8s.io/controller-runtime/pkg/client"
3131

3232
infrav1beta1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta1"
33+
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/vpc"
3334
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/record"
3435
)
3536

3637
// ClusterScopeParams defines the input parameters used to create a new ClusterScope.
3738
type ClusterScopeParams struct {
38-
IBMVPCClients
39+
IBMVPCClient vpc.Vpc
3940
Client client.Client
4041
Logger logr.Logger
4142
Cluster *capiv1beta1.Cluster
@@ -48,7 +49,7 @@ type ClusterScope struct {
4849
client client.Client
4950
patchHelper *patch.Helper
5051

51-
IBMVPCClients
52+
IBMVPCClient vpc.Vpc
5253
Cluster *capiv1beta1.Cluster
5354
IBMVPCCluster *infrav1beta1.IBMVPCCluster
5455
}
@@ -71,9 +72,9 @@ func NewClusterScope(params ClusterScopeParams, authenticator core.Authenticator
7172
return nil, errors.Wrap(err, "failed to init patch helper")
7273
}
7374

74-
vpcErr := params.IBMVPCClients.setIBMVPCService(authenticator, svcEndpoint)
75-
if vpcErr != nil {
76-
return nil, errors.Wrap(vpcErr, "failed to create IBM VPC session")
75+
vpcClient, err := vpc.NewService(svcEndpoint)
76+
if err != nil {
77+
return nil, errors.Wrap(err, "failed to create IBM VPC session")
7778
}
7879

7980
if params.Logger.V(DEBUGLEVEL).Enabled() {
@@ -83,7 +84,7 @@ func NewClusterScope(params ClusterScopeParams, authenticator core.Authenticator
8384
return &ClusterScope{
8485
Logger: params.Logger,
8586
client: params.Client,
86-
IBMVPCClients: params.IBMVPCClients,
87+
IBMVPCClient: vpcClient,
8788
Cluster: params.Cluster,
8889
IBMVPCCluster: params.IBMVPCCluster,
8990
patchHelper: helper,
@@ -105,7 +106,7 @@ func (s *ClusterScope) CreateVPC() (*vpcv1.VPC, error) {
105106
ID: &s.IBMVPCCluster.Spec.ResourceGroup,
106107
})
107108
options.SetName(s.IBMVPCCluster.Spec.VPC)
108-
vpc, _, err := s.IBMVPCClients.VPCService.CreateVPC(options)
109+
vpc, _, err := s.IBMVPCClient.CreateVPC(options)
109110
if err != nil {
110111
record.Warnf(s.IBMVPCCluster, "FailedCreateVPC", "Failed vpc creation - %v", err)
111112
return nil, err
@@ -121,7 +122,7 @@ func (s *ClusterScope) CreateVPC() (*vpcv1.VPC, error) {
121122
func (s *ClusterScope) DeleteVPC() error {
122123
deleteVpcOptions := &vpcv1.DeleteVPCOptions{}
123124
deleteVpcOptions.SetID(s.IBMVPCCluster.Status.VPC.ID)
124-
_, err := s.IBMVPCClients.VPCService.DeleteVPC(deleteVpcOptions)
125+
_, err := s.IBMVPCClient.DeleteVPC(deleteVpcOptions)
125126
if err != nil {
126127
record.Warnf(s.IBMVPCCluster, "FailedDeleteVPC", "Failed vpc deletion - %v", err)
127128
} else {
@@ -133,7 +134,7 @@ func (s *ClusterScope) DeleteVPC() error {
133134

134135
func (s *ClusterScope) ensureVPCUnique(vpcName string) (*vpcv1.VPC, error) {
135136
listVpcsOptions := &vpcv1.ListVpcsOptions{}
136-
vpcs, _, err := s.IBMVPCClients.VPCService.ListVpcs(listVpcsOptions)
137+
vpcs, _, err := s.IBMVPCClient.ListVpcs(listVpcsOptions)
137138
if err != nil {
138139
return nil, err
139140
}
@@ -153,7 +154,7 @@ func (s *ClusterScope) updateDefaultSG(sgID string) error {
153154
Protocol: core.StringPtr("all"),
154155
IPVersion: core.StringPtr("ipv4"),
155156
})
156-
_, _, err := s.IBMVPCClients.VPCService.CreateSecurityGroupRule(options)
157+
_, _, err := s.IBMVPCClient.CreateSecurityGroupRule(options)
157158
if err != nil {
158159
record.Warnf(s.IBMVPCCluster, "FailedCreateSecurityGroupRule", "Failed security group rule creation - %v", err)
159160
}
@@ -182,16 +183,16 @@ func (s *ClusterScope) ReserveFIP() (*vpcv1.FloatingIP, error) {
182183
},
183184
})
184185

185-
floatingIP, _, err := s.IBMVPCClients.VPCService.CreateFloatingIP(options)
186+
floatingIP, _, err := s.IBMVPCClient.CreateFloatingIP(options)
186187
if err != nil {
187188
record.Warnf(s.IBMVPCCluster, "FailedCreateFloatingIP", "Failed floatingIP creation - %v", err)
188189
}
189190
return floatingIP, err
190191
}
191192

192193
func (s *ClusterScope) ensureFIPUnique(fipName string) (*vpcv1.FloatingIP, error) {
193-
listFloatingIpsOptions := s.IBMVPCClients.VPCService.NewListFloatingIpsOptions()
194-
floatingIPs, _, err := s.IBMVPCClients.VPCService.ListFloatingIps(listFloatingIpsOptions)
194+
listFloatingIpsOptions := &vpcv1.ListFloatingIpsOptions{}
195+
floatingIPs, _, err := s.IBMVPCClient.ListFloatingIps(listFloatingIpsOptions)
195196
if err != nil {
196197
return nil, err
197198
}
@@ -208,7 +209,7 @@ func (s *ClusterScope) DeleteFloatingIP() error {
208209
if fipID := *s.IBMVPCCluster.Status.VPCEndpoint.FIPID; fipID != "" {
209210
deleteFIPOption := &vpcv1.DeleteFloatingIPOptions{}
210211
deleteFIPOption.SetID(fipID)
211-
_, err := s.IBMVPCClients.VPCService.DeleteFloatingIP(deleteFIPOption)
212+
_, err := s.IBMVPCClient.DeleteFloatingIP(deleteFIPOption)
212213
if err != nil {
213214
record.Warnf(s.IBMVPCCluster, "FailedDeleteFloatingIP", "Failed floatingIP deletion - %v", err)
214215
}
@@ -247,7 +248,7 @@ func (s *ClusterScope) CreateSubnet() (*vpcv1.Subnet, error) {
247248
ID: &s.IBMVPCCluster.Spec.ResourceGroup,
248249
},
249250
})
250-
subnet, _, err := s.IBMVPCClients.VPCService.CreateSubnet(options)
251+
subnet, _, err := s.IBMVPCClient.CreateSubnet(options)
251252
if err != nil {
252253
record.Warnf(s.IBMVPCCluster, "FailedCreateSubnet", "Failed subnet creation - %v", err)
253254
}
@@ -269,7 +270,7 @@ func (s *ClusterScope) getSubnetAddrPrefix(vpcID, zone string) (string, error) {
269270
options := &vpcv1.ListVPCAddressPrefixesOptions{
270271
VPCID: &vpcID,
271272
}
272-
addrCollection, _, err := s.IBMVPCClients.VPCService.ListVPCAddressPrefixes(options)
273+
addrCollection, _, err := s.IBMVPCClient.ListVPCAddressPrefixes(options)
273274

274275
if err != nil {
275276
return "", err
@@ -284,7 +285,7 @@ func (s *ClusterScope) getSubnetAddrPrefix(vpcID, zone string) (string, error) {
284285

285286
func (s *ClusterScope) ensureSubnetUnique(subnetName string) (*vpcv1.Subnet, error) {
286287
options := &vpcv1.ListSubnetsOptions{}
287-
subnets, _, err := s.IBMVPCClients.VPCService.ListSubnets(options)
288+
subnets, _, err := s.IBMVPCClient.ListSubnets(options)
288289

289290
if err != nil {
290291
return nil, err
@@ -304,7 +305,7 @@ func (s *ClusterScope) DeleteSubnet() error {
304305
// get the pgw id for given subnet, so we can delete it later
305306
getPGWOptions := &vpcv1.GetSubnetPublicGatewayOptions{}
306307
getPGWOptions.SetID(subnetID)
307-
pgw, _, err := s.IBMVPCClients.VPCService.GetSubnetPublicGateway(getPGWOptions)
308+
pgw, _, err := s.IBMVPCClient.GetSubnetPublicGateway(getPGWOptions)
308309
if pgw != nil && err == nil { // public gateway found
309310
// Unset the public gateway for subnet first
310311
err = s.detachPublicGateway(subnetID, *pgw.ID)
@@ -316,7 +317,7 @@ func (s *ClusterScope) DeleteSubnet() error {
316317
// Delete subnet
317318
deleteSubnetOption := &vpcv1.DeleteSubnetOptions{}
318319
deleteSubnetOption.SetID(subnetID)
319-
_, err = s.IBMVPCClients.VPCService.DeleteSubnet(deleteSubnetOption)
320+
_, err = s.IBMVPCClient.DeleteSubnet(deleteSubnetOption)
320321
if err != nil {
321322
record.Warnf(s.IBMVPCCluster, "FailedDeleteSubnet", "Failed subnet deletion - %v", err)
322323
return errors.Wrap(err, "Error when deleting subnet ")
@@ -335,7 +336,7 @@ func (s *ClusterScope) createPublicGateWay(vpcID string, zoneName string, resour
335336
options.SetResourceGroup(&vpcv1.ResourceGroupIdentity{
336337
ID: &resourceGroupID,
337338
})
338-
publicGateway, _, err := s.IBMVPCClients.VPCService.CreatePublicGateway(options)
339+
publicGateway, _, err := s.IBMVPCClient.CreatePublicGateway(options)
339340
if err != nil {
340341
record.Warnf(s.IBMVPCCluster, "FailedCreatePublicGateway", "Failed publicgateway creation - %v", err)
341342
}
@@ -348,7 +349,7 @@ func (s *ClusterScope) attachPublicGateWay(subnetID string, pgwID string) (*vpcv
348349
options.SetPublicGatewayIdentity(&vpcv1.PublicGatewayIdentity{
349350
ID: &pgwID,
350351
})
351-
publicGateway, _, err := s.IBMVPCClients.VPCService.SetSubnetPublicGateway(options)
352+
publicGateway, _, err := s.IBMVPCClient.SetSubnetPublicGateway(options)
352353
if err != nil {
353354
record.Warnf(s.IBMVPCCluster, "FailedAttachPublicGateway", "Failed publicgateway attachment - %v", err)
354355
}
@@ -359,7 +360,7 @@ func (s *ClusterScope) detachPublicGateway(subnetID string, pgwID string) error
359360
// Unset the publicgateway first, and then delete it
360361
unsetPGWOption := &vpcv1.UnsetSubnetPublicGatewayOptions{}
361362
unsetPGWOption.SetID(subnetID)
362-
_, err := s.IBMVPCClients.VPCService.UnsetSubnetPublicGateway(unsetPGWOption)
363+
_, err := s.IBMVPCClient.UnsetSubnetPublicGateway(unsetPGWOption)
363364
if err != nil {
364365
record.Warnf(s.IBMVPCCluster, "FailedDetachPublicGateway", "Failed publicgateway detachment - %v", err)
365366
return errors.Wrap(err, "Error when unsetting publicgateway for subnet "+subnetID)
@@ -368,7 +369,7 @@ func (s *ClusterScope) detachPublicGateway(subnetID string, pgwID string) error
368369
// Delete the public gateway
369370
deletePGWOption := &vpcv1.DeletePublicGatewayOptions{}
370371
deletePGWOption.SetID(pgwID)
371-
_, err = s.IBMVPCClients.VPCService.DeletePublicGateway(deletePGWOption)
372+
_, err = s.IBMVPCClient.DeletePublicGateway(deletePGWOption)
372373
if err != nil {
373374
record.Warnf(s.IBMVPCCluster, "FailedDeletePublicGateway", "Failed publicgateway deletion - %v", err)
374375
return errors.Wrap(err, "Error when deleting publicgateway for subnet "+subnetID)

cloud/scope/machine.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@ import (
3232
"sigs.k8s.io/controller-runtime/pkg/client"
3333

3434
infrav1beta1 "sigs.k8s.io/cluster-api-provider-ibmcloud/api/v1beta1"
35+
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/vpc"
3536
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/record"
3637
)
3738

3839
// MachineScopeParams defines the input parameters used to create a new MachineScope.
3940
type MachineScopeParams struct {
40-
IBMVPCClients
41+
IBMVPCClient vpc.Vpc
4142
Client client.Client
4243
Logger logr.Logger
4344
Cluster *capiv1beta1.Cluster
@@ -52,7 +53,7 @@ type MachineScope struct {
5253
client client.Client
5354
patchHelper *patch.Helper
5455

55-
IBMVPCClients
56+
IBMVPCClient vpc.Vpc
5657
Cluster *capiv1beta1.Cluster
5758
Machine *capiv1beta1.Machine
5859
IBMVPCCluster *infrav1beta1.IBMVPCCluster
@@ -77,9 +78,9 @@ func NewMachineScope(params MachineScopeParams, authenticator core.Authenticator
7778
return nil, errors.Wrap(err, "failed to init patch helper")
7879
}
7980

80-
vpcErr := params.IBMVPCClients.setIBMVPCService(authenticator, svcEndpoint)
81-
if vpcErr != nil {
82-
return nil, errors.Wrap(vpcErr, "failed to create IBM VPC session")
81+
vpcClient, err := vpc.NewService(svcEndpoint)
82+
if err != nil {
83+
return nil, errors.Wrap(err, "failed to create IBM VPC session")
8384
}
8485

8586
if params.Logger.V(DEBUGLEVEL).Enabled() {
@@ -89,7 +90,7 @@ func NewMachineScope(params MachineScopeParams, authenticator core.Authenticator
8990
return &MachineScope{
9091
Logger: params.Logger,
9192
client: params.Client,
92-
IBMVPCClients: params.IBMVPCClients,
93+
IBMVPCClient: vpcClient,
9394
Cluster: params.Cluster,
9495
IBMVPCCluster: params.IBMVPCCluster,
9596
patchHelper: helper,
@@ -147,7 +148,7 @@ func (m *MachineScope) CreateMachine() (*vpcv1.Instance, error) {
147148
}
148149

149150
options.SetInstancePrototype(instancePrototype)
150-
instance, response, err := m.IBMVPCClients.VPCService.CreateInstance(options)
151+
instance, response, err := m.IBMVPCClient.CreateInstance(options)
151152
if err != nil {
152153
record.Warnf(m.IBMVPCMachine, "FailedCreateInstance", "Failed instance creation - %v", err)
153154
} else {
@@ -161,7 +162,7 @@ func (m *MachineScope) CreateMachine() (*vpcv1.Instance, error) {
161162
func (m *MachineScope) DeleteMachine() error {
162163
options := &vpcv1.DeleteInstanceOptions{}
163164
options.SetID(m.IBMVPCMachine.Status.InstanceID)
164-
_, err := m.IBMVPCClients.VPCService.DeleteInstance(options)
165+
_, err := m.IBMVPCClient.DeleteInstance(options)
165166
if err != nil {
166167
record.Warnf(m.IBMVPCMachine, "FailedDeleteInstance", "Failed instance deletion - %v", err)
167168
} else {
@@ -172,7 +173,7 @@ func (m *MachineScope) DeleteMachine() error {
172173

173174
func (m *MachineScope) ensureInstanceUnique(instanceName string) (*vpcv1.Instance, error) {
174175
options := &vpcv1.ListInstancesOptions{}
175-
instances, _, err := m.IBMVPCClients.VPCService.ListInstances(options)
176+
instances, _, err := m.IBMVPCClient.ListInstances(options)
176177

177178
if err != nil {
178179
return nil, err
@@ -190,7 +191,7 @@ func (m *MachineScope) GetMachine(instanceID string) (*vpcv1.Instance, error) {
190191
options := &vpcv1.GetInstanceOptions{}
191192
options.SetID(instanceID)
192193

193-
instance, _, err := m.IBMVPCClients.VPCService.GetInstance(options)
194+
instance, _, err := m.IBMVPCClient.GetInstance(options)
194195
return instance, err
195196
}
196197

controllers/ibmvpccluster_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func (r *IBMVPCClusterReconciler) reconcileDelete(clusterScope *scope.ClusterSco
167167
listVSIOpts := &vpcv1.ListInstancesOptions{
168168
VPCID: &clusterScope.IBMVPCCluster.Status.VPC.ID,
169169
}
170-
vsis, _, err := clusterScope.VPCService.ListInstances(listVSIOpts)
170+
vsis, _, err := clusterScope.IBMVPCClient.ListInstances(listVSIOpts)
171171
if err != nil {
172172
return ctrl.Result{}, errors.Wrap(err, "Error when listing VSIs when tried to delete subnet ")
173173
}

controllers/ibmvpcmachine_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func (r *IBMVPCMachineReconciler) reconcileNormal(machineScope *scope.MachineSco
176176
options.SetInstanceID(*instance.ID)
177177
options.SetNetworkInterfaceID(*instance.PrimaryNetworkInterface.ID)
178178
floatingIP, _, err :=
179-
machineScope.IBMVPCClients.VPCService.AddInstanceNetworkInterfaceFloatingIP(options)
179+
machineScope.IBMVPCClient.AddInstanceNetworkInterfaceFloatingIP(options)
180180
if err != nil {
181181
return ctrl.Result{}, errors.Wrapf(err, "failed to bind floating IP to control plane %s/%s", machineScope.IBMVPCMachine.Namespace, machineScope.IBMVPCMachine.Name)
182182
}

pkg/cloud/services/vpc/doc.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
Copyright 2022 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// Package vpc implements VPC code.
18+
package vpc

0 commit comments

Comments
 (0)