Skip to content

Commit

Permalink
[build][feat] add event handler
Browse files Browse the repository at this point in the history
  • Loading branch information
cuongpiger committed Jul 1, 2024
1 parent 0869112 commit 99d3b68
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 2 deletions.
15 changes: 15 additions & 0 deletions pkg/cloud/entity/persistentvolume.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package entity

import (
lcorev1 "k8s.io/api/core/v1"
)

type PersistentVolume struct {
*lcorev1.PersistentVolume
}

func NewPersistentVolume(ppv *lcorev1.PersistentVolume) *PersistentVolume {
return &PersistentVolume{
PersistentVolume: ppv,
}
}
3 changes: 3 additions & 0 deletions pkg/cloud/errors/error_code.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import lsdkErrs "github.com/vngcloud/vngcloud-go-sdk/v2/vngcloud/sdk_error"
const (
EcK8sPvcFailedToGet = lsdkErrs.ErrorCode("K8sPvcFailedToGet")
EcK8sPvcNotFound = lsdkErrs.ErrorCode("K8sPvcNotFound")

EcK8sPvFailedToGet = lsdkErrs.ErrorCode("K8sPvFailedToGet")
EcK8sPvNotFound = lsdkErrs.ErrorCode("K8sPvNotFound")
)

// StorageClass error group
Expand Down
19 changes: 19 additions & 0 deletions pkg/cloud/errors/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,25 @@ var (
"pvcName": pname,
})
}

ErrK8sPvFailedToGet = func(pname string, perr error) IError {
return NewError(new(lsdkErr.SdkError).
WithErrorCode(EcK8sPvFailedToGet).
WithMessage(lfmt.Sprintf("Failed to get PV %s", pname))).
WithErrors(perr).
WithParameters(map[string]interface{}{
"pvcName": pname,
})
}

ErrK8sPvNotFound = func(pname string) IError {
return NewError(new(lsdkErr.SdkError).
WithErrorCode(EcK8sPvNotFound).
WithMessage(lfmt.Sprintf("PV %s not found", pname))).
WithParameters(map[string]interface{}{
"pvcName": pname,
})
}
)

// StorageClass error group
Expand Down
4 changes: 2 additions & 2 deletions pkg/driver/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,8 @@ func (s *controllerService) CreateVolume(pctx lctx.Context, preq *lcsi.CreateVol
return newCreateVolumeResponse(newVol, cvr, respCtx), nil
}

func (s *controllerService) DeleteVolume(_ lctx.Context, preq *lcsi.DeleteVolumeRequest) (*lcsi.DeleteVolumeResponse, error) {
llog.V(4).InfoS("[INFO] - DeleteVolume: called", "request", *preq)
func (s *controllerService) DeleteVolume(pctx lctx.Context, preq *lcsi.DeleteVolumeRequest) (*lcsi.DeleteVolumeResponse, error) {
llog.InfoS("[INFO] - DeleteVolume: called", "request", *preq)

if err := validateDeleteVolumeRequest(preq); err != nil {
llog.ErrorS(err, "[ERROR] - DeleteVolume: Invalid request", "request", *preq)
Expand Down
3 changes: 3 additions & 0 deletions pkg/k8s/ik8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@ import (
type IKubernetes interface {
GetPersistentVolumeClaimByName(pctx lctx.Context, pnamespace, pname string) (*lsentity.PersistentVolumeClaim, lserr.IError)
GetStorageClassByName(pctx lctx.Context, pname string) (*lsentity.StorageClass, lserr.IError)
GetPersistentVolume(pctx lctx.Context, pname string) (*lsentity.PersistentVolume, lserr.IError)

// Event recorder
PersistentVolumeClaimEventWarning(pctx lctx.Context, pnamespace, pname, preason, pmessage string)
PersistentVolumeClaimEventNormal(pctx lctx.Context, pnamespace, pname, preason, pmessage string)
PersistentVolumeEventWarning(pctx lctx.Context, pname, preason, pmessage string)
PersistentVolumeEventNormal(pctx lctx.Context, pname, preason, pmessage string)
}
38 changes: 38 additions & 0 deletions pkg/k8s/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,20 @@ func (s *kubernetes) GetStorageClassByName(pctx lctx.Context, pname string) (*ls
return lsentity.NewStorageClass(sc), nil
}

func (s *kubernetes) GetPersistentVolume(pctx lctx.Context, pname string) (*lsentity.PersistentVolume, lserr.IError) {
pv, err := s.CoreV1().PersistentVolumes().Get(pctx, pname, lmetav1.GetOptions{})
if err != nil {
return nil, lserr.ErrK8sPvFailedToGet(pname, err)
}

if pv == nil {
return nil, lserr.ErrK8sPvNotFound(pname)
}

return lsentity.NewPersistentVolume(pv), nil

}

func (s *kubernetes) PersistentVolumeClaimEventWarning(pctx lctx.Context, pnamespace, pname, preason, pmessage string) {
if pnamespace == "" || pname == "" {
return
Expand All @@ -73,3 +87,27 @@ func (s *kubernetes) PersistentVolumeClaimEventNormal(pctx lctx.Context, pnamesp
}
s.EventRecorder.Event(pvc.PersistentVolumeClaim, lcoreV1.EventTypeNormal, preason, pmessage)
}

func (s *kubernetes) PersistentVolumeEventWarning(pctx lctx.Context, pname, preason, pmessage string) {
if pname == "" {
return
}

pvc, err := s.GetPersistentVolume(pctx, pname)
if err != nil || pvc == nil {
return
}
s.EventRecorder.Event(pvc.PersistentVolume, lcoreV1.EventTypeWarning, preason, pmessage)
}

func (s *kubernetes) PersistentVolumeEventNormal(pctx lctx.Context, pname, preason, pmessage string) {
if pname == "" {
return
}

pvc, err := s.GetPersistentVolume(pctx, pname)
if err != nil || pvc == nil {
return
}
s.EventRecorder.Event(pvc.PersistentVolume, lcoreV1.EventTypeNormal, preason, pmessage)
}

0 comments on commit 99d3b68

Please sign in to comment.