Skip to content

Commit 2cb8de9

Browse files
Add events recorder framework (#632)
Signed-off-by: Prajyot-Parab <[email protected]>
1 parent 232858b commit 2cb8de9

13 files changed

+210
-29
lines changed

cloud/scope/cluster.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ 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/record"
3334
)
3435

3536
// ClusterScopeParams defines the input parameters used to create a new ClusterScope.
@@ -102,10 +103,13 @@ func (s *ClusterScope) CreateVPC() (*vpcv1.VPC, error) {
102103
options.SetName(s.IBMVPCCluster.Spec.VPC)
103104
vpc, _, err := s.IBMVPCClients.VPCService.CreateVPC(options)
104105
if err != nil {
106+
record.Warnf(s.IBMVPCCluster, "FailedCreateVPC", "Failed vpc creation - %v", err)
105107
return nil, err
106108
} else if err := s.updateDefaultSG(*vpc.DefaultSecurityGroup.ID); err != nil {
109+
record.Warnf(s.IBMVPCCluster, "FailedUpdateDefaultSecurityGroup", "Failed to update default security group - %v", err)
107110
return nil, err
108111
}
112+
record.Eventf(s.IBMVPCCluster, "SuccessfulCreateVPC", "Created VPC %q", *vpc.Name)
109113
return vpc, nil
110114
}
111115

@@ -114,6 +118,11 @@ func (s *ClusterScope) DeleteVPC() error {
114118
deleteVpcOptions := &vpcv1.DeleteVPCOptions{}
115119
deleteVpcOptions.SetID(s.IBMVPCCluster.Status.VPC.ID)
116120
_, err := s.IBMVPCClients.VPCService.DeleteVPC(deleteVpcOptions)
121+
if err != nil {
122+
record.Warnf(s.IBMVPCCluster, "FailedDeleteVPC", "Failed vpc deletion - %v", err)
123+
} else {
124+
record.Eventf(s.IBMVPCCluster, "SuccessfulDeleteVPC", "Deleted VPC %q", s.IBMVPCCluster.Status.VPC.Name)
125+
}
117126

118127
return err
119128
}
@@ -141,6 +150,9 @@ func (s *ClusterScope) updateDefaultSG(sgID string) error {
141150
IPVersion: core.StringPtr("ipv4"),
142151
})
143152
_, _, err := s.IBMVPCClients.VPCService.CreateSecurityGroupRule(options)
153+
if err != nil {
154+
record.Warnf(s.IBMVPCCluster, "FailedCreateSecurityGroupRule", "Failed security group rule creation - %v", err)
155+
}
144156
return err
145157
}
146158

@@ -167,6 +179,9 @@ func (s *ClusterScope) ReserveFIP() (*vpcv1.FloatingIP, error) {
167179
})
168180

169181
floatingIP, _, err := s.IBMVPCClients.VPCService.CreateFloatingIP(options)
182+
if err != nil {
183+
record.Warnf(s.IBMVPCCluster, "FailedCreateFloatingIP", "Failed floatingIP creation - %v", err)
184+
}
170185
return floatingIP, err
171186
}
172187

@@ -190,6 +205,9 @@ func (s *ClusterScope) DeleteFloatingIP() error {
190205
deleteFIPOption := &vpcv1.DeleteFloatingIPOptions{}
191206
deleteFIPOption.SetID(fipID)
192207
_, err := s.IBMVPCClients.VPCService.DeleteFloatingIP(deleteFIPOption)
208+
if err != nil {
209+
record.Warnf(s.IBMVPCCluster, "FailedDeleteFloatingIP", "Failed floatingIP deletion - %v", err)
210+
}
193211
return err
194212
}
195213
return nil
@@ -226,6 +244,9 @@ func (s *ClusterScope) CreateSubnet() (*vpcv1.Subnet, error) {
226244
},
227245
})
228246
subnet, _, err := s.IBMVPCClients.VPCService.CreateSubnet(options)
247+
if err != nil {
248+
record.Warnf(s.IBMVPCCluster, "FailedCreateSubnet", "Failed subnet creation - %v", err)
249+
}
229250
if subnet != nil {
230251
pgw, err := s.createPublicGateWay(s.IBMVPCCluster.Status.VPC.ID, s.IBMVPCCluster.Spec.Zone, s.IBMVPCCluster.Spec.ResourceGroup)
231252
if err != nil {
@@ -293,6 +314,7 @@ func (s *ClusterScope) DeleteSubnet() error {
293314
deleteSubnetOption.SetID(subnetID)
294315
_, err = s.IBMVPCClients.VPCService.DeleteSubnet(deleteSubnetOption)
295316
if err != nil {
317+
record.Warnf(s.IBMVPCCluster, "FailedDeleteSubnet", "Failed subnet deletion - %v", err)
296318
return errors.Wrap(err, "Error when deleting subnet ")
297319
}
298320
return err
@@ -310,6 +332,9 @@ func (s *ClusterScope) createPublicGateWay(vpcID string, zoneName string, resour
310332
ID: &resourceGroupID,
311333
})
312334
publicGateway, _, err := s.IBMVPCClients.VPCService.CreatePublicGateway(options)
335+
if err != nil {
336+
record.Warnf(s.IBMVPCCluster, "FailedCreatePublicGateway", "Failed publicgateway creation - %v", err)
337+
}
313338
return publicGateway, err
314339
}
315340

@@ -320,6 +345,9 @@ func (s *ClusterScope) attachPublicGateWay(subnetID string, pgwID string) (*vpcv
320345
ID: &pgwID,
321346
})
322347
publicGateway, _, err := s.IBMVPCClients.VPCService.SetSubnetPublicGateway(options)
348+
if err != nil {
349+
record.Warnf(s.IBMVPCCluster, "FailedAttachPublicGateway", "Failed publicgateway attachment - %v", err)
350+
}
323351
return publicGateway, err
324352
}
325353

@@ -329,6 +357,7 @@ func (s *ClusterScope) detachPublicGateway(subnetID string, pgwID string) error
329357
unsetPGWOption.SetID(subnetID)
330358
_, err := s.IBMVPCClients.VPCService.UnsetSubnetPublicGateway(unsetPGWOption)
331359
if err != nil {
360+
record.Warnf(s.IBMVPCCluster, "FailedDetachPublicGateway", "Failed publicgateway detachment - %v", err)
332361
return errors.Wrap(err, "Error when unsetting publicgateway for subnet "+subnetID)
333362
}
334363

@@ -337,6 +366,7 @@ func (s *ClusterScope) detachPublicGateway(subnetID string, pgwID string) error
337366
deletePGWOption.SetID(pgwID)
338367
_, err = s.IBMVPCClients.VPCService.DeletePublicGateway(deletePGWOption)
339368
if err != nil {
369+
record.Warnf(s.IBMVPCCluster, "FailedDeletePublicGateway", "Failed publicgateway deletion - %v", err)
340370
return errors.Wrap(err, "Error when deleting publicgateway for subnet "+subnetID)
341371
}
342372
return err

cloud/scope/machine.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ 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/record"
3536
)
3637

3738
// MachineScopeParams defines the input parameters used to create a new MachineScope.
@@ -143,6 +144,11 @@ func (m *MachineScope) CreateMachine() (*vpcv1.Instance, error) {
143144

144145
options.SetInstancePrototype(instancePrototype)
145146
instance, response, err := m.IBMVPCClients.VPCService.CreateInstance(options)
147+
if err != nil {
148+
record.Warnf(m.IBMVPCMachine, "FailedCreateInstance", "Failed instance creation - %v", err)
149+
} else {
150+
record.Eventf(m.IBMVPCMachine, "SuccessfulCreateInstance", "Created Instance %q", *instance.Name)
151+
}
146152
fmt.Printf("%v\n", response)
147153
return instance, err
148154
}
@@ -152,6 +158,11 @@ func (m *MachineScope) DeleteMachine() error {
152158
options := &vpcv1.DeleteInstanceOptions{}
153159
options.SetID(m.IBMVPCMachine.Status.InstanceID)
154160
_, err := m.IBMVPCClients.VPCService.DeleteInstance(options)
161+
if err != nil {
162+
record.Warnf(m.IBMVPCMachine, "FailedDeleteInstance", "Failed instance deletion - %v", err)
163+
} else {
164+
record.Eventf(m.IBMVPCMachine, "SuccessfulDeleteInstance", "Deleted Instance %q", m.IBMVPCMachine.Name)
165+
}
155166
return err
156167
}
157168

cloud/scope/powervs_image.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/powervs"
3737
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/resourcecontroller"
3838
servicesutils "sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/utils"
39+
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/record"
3940
)
4041

4142
// BucketAccess indicates if the bucket has public or private access public access.
@@ -160,9 +161,11 @@ func (i *PowerVSImageScope) CreateImageCOSBucket() (*models.ImageReference, *mod
160161

161162
imageReply, err := i.ensureImageUnique(m.Name)
162163
if err != nil {
164+
record.Warnf(i.IBMPowerVSImage, "FailedRetriveImage", "Failed to retrieve image %q", *imageReply.Name)
163165
return nil, nil, err
164166
} else if imageReply != nil {
165167
i.Info("Image already exists")
168+
record.Eventf(i.IBMPowerVSImage, "SuccessfulRetriveImage", "Retrieved Image %q", *imageReply.Name)
166169
return imageReply, nil, nil
167170
}
168171

@@ -185,9 +188,11 @@ func (i *PowerVSImageScope) CreateImageCOSBucket() (*models.ImageReference, *mod
185188
jobRef, err := i.IBMPowerVSClient.CreateCosImage(body)
186189
if err != nil {
187190
i.Info("Unable to create new import job request")
191+
record.Warnf(i.IBMPowerVSImage, "FailedCreateImageImportJob", "Failed image import job creation - %v", err)
188192
return nil, nil, err
189193
}
190194
i.Info("New import job request created")
195+
record.Eventf(i.IBMPowerVSImage, "SuccessfulCreateImageImportJob", "Created image import job %q", *jobRef.ID)
191196
return nil, jobRef, nil
192197
}
193198

@@ -203,7 +208,12 @@ func (i *PowerVSImageScope) Close() error {
203208

204209
// DeleteImage will delete the image.
205210
func (i *PowerVSImageScope) DeleteImage() error {
206-
return i.IBMPowerVSClient.DeleteImage(i.IBMPowerVSImage.Status.ImageID)
211+
if err := i.IBMPowerVSClient.DeleteImage(i.IBMPowerVSImage.Status.ImageID); err != nil {
212+
record.Warnf(i.IBMPowerVSImage, "FailedDeleteImage", "Failed image deletion - %v", err)
213+
return err
214+
}
215+
record.Eventf(i.IBMPowerVSImage, "SuccessfulDeleteImage", "Deleted Image %q", i.IBMPowerVSImage.Status.ImageID)
216+
return nil
207217
}
208218

209219
// GetImportJob will get the image import job.
@@ -213,7 +223,12 @@ func (i *PowerVSImageScope) GetImportJob() (*models.Job, error) {
213223

214224
// DeleteImportJob will delete the image import job.
215225
func (i *PowerVSImageScope) DeleteImportJob() error {
216-
return i.IBMPowerVSClient.DeleteJob(i.IBMPowerVSImage.Status.JobID)
226+
if err := i.IBMPowerVSClient.DeleteJob(i.IBMPowerVSImage.Status.JobID); err != nil {
227+
record.Warnf(i.IBMPowerVSImage, "FailedDeleteImageImoprtJob", "Failed image import job deletion - %v", err)
228+
return err
229+
}
230+
record.Eventf(i.IBMPowerVSImage, "SuccessfulDeleteImageImoprtJob", "Deleted image import job %q", i.IBMPowerVSImage.Status.JobID)
231+
return nil
217232
}
218233

219234
// SetReady will set the status as ready for the image.

cloud/scope/powervs_machine.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import (
4545
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/resourcecontroller"
4646
servicesutils "sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/cloud/services/utils"
4747
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/options"
48+
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/record"
4849
)
4950

5051
// PowerVSMachineScopeParams defines the input parameters used to create a new PowerVSMachineScope.
@@ -213,12 +214,14 @@ func (m *PowerVSMachineScope) CreateMachine() (*models.PVMInstanceReference, err
213214
} else {
214215
imageID, err = getImageID(s.Image, m)
215216
if err != nil {
217+
record.Warnf(m.IBMPowerVSMachine, "FailedRetriveImage", "Failed image retrival - %v", err)
216218
return nil, fmt.Errorf("error getting image ID: %v", err)
217219
}
218220
}
219221

220222
networkID, err := getNetworkID(s.Network, m)
221223
if err != nil {
224+
record.Warnf(m.IBMPowerVSMachine, "FailedRetriveNetwork", "Failed network retrival - %v", err)
222225
return nil, fmt.Errorf("error getting network ID: %v", err)
223226
}
224227

@@ -242,8 +245,10 @@ func (m *PowerVSMachineScope) CreateMachine() (*models.PVMInstanceReference, err
242245
}
243246
_, err = m.IBMPowerVSClient.CreateInstance(params.Body)
244247
if err != nil {
248+
record.Warnf(m.IBMPowerVSMachine, "FailedCreateInstance", "Failed instance creation - %v", err)
245249
return nil, err
246250
}
251+
record.Eventf(m.IBMPowerVSMachine, "SuccessfulCreateInstance", "Created Instance %q", m.IBMPowerVSMachine.Name)
247252
return nil, nil
248253
}
249254

@@ -259,7 +264,12 @@ func (m *PowerVSMachineScope) PatchObject() error {
259264

260265
// DeleteMachine deletes the power vs machine associated with machine instance id and service instance id.
261266
func (m *PowerVSMachineScope) DeleteMachine() error {
262-
return m.IBMPowerVSClient.DeleteInstance(m.IBMPowerVSMachine.Status.InstanceID)
267+
if err := m.IBMPowerVSClient.DeleteInstance(m.IBMPowerVSMachine.Status.InstanceID); err != nil {
268+
record.Warnf(m.IBMPowerVSMachine, "FailedDeleteInstance", "Failed instance deletion - %v", err)
269+
return err
270+
}
271+
record.Eventf(m.IBMPowerVSMachine, "SuccessfulDeleteInstance", "Deleted Instance %q", m.IBMPowerVSMachine.Name)
272+
return nil
263273
}
264274

265275
// GetBootstrapData returns the base64 encoded bootstrap data from the secret in the Machine's bootstrap.dataSecretName.

controllers/ibmpowervscluster_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/apimachinery/pkg/api/meta"
2828
"k8s.io/apimachinery/pkg/runtime"
2929
kerrors "k8s.io/apimachinery/pkg/util/errors"
30+
"k8s.io/client-go/tools/record"
3031
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
3132
"sigs.k8s.io/cluster-api/util"
3233
ctrl "sigs.k8s.io/controller-runtime"
@@ -41,8 +42,9 @@ import (
4142
// IBMPowerVSClusterReconciler reconciles a IBMPowerVSCluster object.
4243
type IBMPowerVSClusterReconciler struct {
4344
client.Client
44-
Log logr.Logger
45-
Scheme *runtime.Scheme
45+
Log logr.Logger
46+
Recorder record.EventRecorder
47+
Scheme *runtime.Scheme
4648
}
4749

4850
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=ibmpowervsclusters,verbs=get;list;watch;create;update;patch;delete

controllers/ibmpowervsimage_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
apierrors "k8s.io/apimachinery/pkg/api/errors"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/runtime"
30+
"k8s.io/client-go/tools/record"
3031
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
3132
clusterv1util "sigs.k8s.io/cluster-api/util"
3233
"sigs.k8s.io/cluster-api/util/conditions"
@@ -43,8 +44,9 @@ import (
4344
// IBMPowerVSImageReconciler reconciles a IBMPowerVSImage object.
4445
type IBMPowerVSImageReconciler struct {
4546
client.Client
46-
Log logr.Logger
47-
Scheme *runtime.Scheme
47+
Log logr.Logger
48+
Recorder record.EventRecorder
49+
Scheme *runtime.Scheme
4850
}
4951

5052
//+kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=ibmpowervsimages,verbs=get;list;watch;create;update;patch;delete

controllers/ibmpowervsmachine_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/pkg/errors"
2626
apierrors "k8s.io/apimachinery/pkg/api/errors"
2727
"k8s.io/apimachinery/pkg/runtime"
28+
"k8s.io/client-go/tools/record"
2829
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
2930
"sigs.k8s.io/cluster-api/util"
3031
"sigs.k8s.io/cluster-api/util/conditions"
@@ -39,8 +40,9 @@ import (
3940
// IBMPowerVSMachineReconciler reconciles a IBMPowerVSMachine object.
4041
type IBMPowerVSMachineReconciler struct {
4142
client.Client
42-
Log logr.Logger
43-
Scheme *runtime.Scheme
43+
Log logr.Logger
44+
Recorder record.EventRecorder
45+
Scheme *runtime.Scheme
4446
}
4547

4648
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=ibmpowervsmachines,verbs=get;list;watch;create;update;patch;delete

controllers/ibmvpccluster_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/pkg/errors"
2525
apierrors "k8s.io/apimachinery/pkg/api/errors"
2626
"k8s.io/apimachinery/pkg/runtime"
27+
"k8s.io/client-go/tools/record"
2728
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
2829
"sigs.k8s.io/cluster-api/util"
2930
"sigs.k8s.io/cluster-api/util/predicates"
@@ -40,8 +41,9 @@ import (
4041
// IBMVPCClusterReconciler reconciles a IBMVPCCluster object.
4142
type IBMVPCClusterReconciler struct {
4243
client.Client
43-
Log logr.Logger
44-
Scheme *runtime.Scheme
44+
Log logr.Logger
45+
Recorder record.EventRecorder
46+
Scheme *runtime.Scheme
4547
}
4648

4749
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=ibmvpcclusters,verbs=get;list;watch;create;update;patch;delete

controllers/ibmvpcmachine_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
corev1 "k8s.io/api/core/v1"
2727
apierrors "k8s.io/apimachinery/pkg/api/errors"
2828
"k8s.io/apimachinery/pkg/runtime"
29+
"k8s.io/client-go/tools/record"
2930
"k8s.io/utils/pointer"
3031
capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1"
3132
"sigs.k8s.io/cluster-api/util"
@@ -41,8 +42,9 @@ import (
4142
// IBMVPCMachineReconciler reconciles a IBMVPCMachine object.
4243
type IBMVPCMachineReconciler struct {
4344
client.Client
44-
Log logr.Logger
45-
Scheme *runtime.Scheme
45+
Log logr.Logger
46+
Recorder record.EventRecorder
47+
Scheme *runtime.Scheme
4648
}
4749

4850
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=ibmvpcmachines,verbs=get;list;watch;create;update;patch;delete

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ require (
1515
github.com/pkg/errors v0.9.1
1616
github.com/ppc64le-cloud/powervs-utils v0.0.0-20210415051532-4cdd6a79c8fa
1717
github.com/spf13/pflag v1.0.5
18+
golang.org/x/text v0.3.7
1819
k8s.io/api v0.23.5
1920
k8s.io/apimachinery v0.23.5
2021
k8s.io/client-go v0.23.5
@@ -121,7 +122,6 @@ require (
121122
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
122123
golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f // indirect
123124
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
124-
golang.org/x/text v0.3.7 // indirect
125125
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
126126
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
127127
google.golang.org/appengine v1.6.7 // indirect

0 commit comments

Comments
 (0)