Skip to content

Commit

Permalink
Merge pull request #439 from zhengxiexie/retry_clean_main
Browse files Browse the repository at this point in the history
Add retry to cleanup NSX resources(#386)
  • Loading branch information
zhengxiexie authored Dec 9, 2023
2 parents 37df36f + 42160b0 commit 45282e3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
6 changes: 6 additions & 0 deletions cmd_clean/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ func main() {
} else {
err = clean.Clean(cf, nil)
}
// the error roughly are:
// 1. failed to validate config
// 2. failed to get nsx client
// 3. failed to initialize cleanup service
// 4. failed to clean up specific resource
err = clean.Clean(cf, nil)
if err != nil {
log.Error(err, "failed to clean nsx resources")
os.Exit(1)
Expand Down
19 changes: 16 additions & 3 deletions pkg/clean/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"fmt"
"net/http"

"k8s.io/client-go/util/retry"

"github.com/vmware-tanzu/nsx-operator/pkg/config"
commonctl "github.com/vmware-tanzu/nsx-operator/pkg/controllers/common"
"github.com/vmware-tanzu/nsx-operator/pkg/logger"
Expand All @@ -32,13 +34,24 @@ func Clean(cf *config.NSXOperatorConfig, client *http.Client) error {
return fmt.Errorf("failed to validate config: %w", err)
}
if cleanupService, err := InitializeCleanupService(cf, client); err != nil {
return fmt.Errorf("failed to initialize cleanup service: %w", err)
return err // failed to get nsx client
} else if cleanupService.err != nil {
return fmt.Errorf("failed to initialize cleanup service: %w", cleanupService.err)
} else {
for _, clean := range cleanupService.cleans {
if err := clean.Cleanup(); err != nil {
return fmt.Errorf("failed to clean up: %w", err)
if err := retry.OnError(retry.DefaultRetry, func(err error) bool {
if err != nil {
log.Info("retrying to clean up NSX resources", "error", err)
return true
}
return false
}, func() error {
if err := clean.Cleanup(); err != nil {
return fmt.Errorf("failed to clean up specific resource: %w", err)
}
return nil
}); err != nil {
return err
}
}
}
Expand Down

0 comments on commit 45282e3

Please sign in to comment.