Skip to content

Commit

Permalink
Merge pull request kurator-dev#557 from LiZhenCheng9527/rollout-delete
Browse files Browse the repository at this point in the history
adds the ability to delete resources created by a Rollout.
  • Loading branch information
kurator-bot authored Jan 12, 2024
2 parents d6fc6a9 + ceeddc3 commit 617bf0d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
8 changes: 5 additions & 3 deletions pkg/fleet-manager/application/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func (a *ApplicationManager) Reconcile(ctx context.Context, req ctrl.Request) (_

// Handle deletion reconciliation loop.
if app.DeletionTimestamp != nil {
return a.reconcileDelete(app)
return a.reconcileDelete(ctx, app, fleet)
}

// Handle normal loop.
Expand Down Expand Up @@ -315,8 +315,10 @@ func (a *ApplicationManager) reconcileSyncStatus(ctx context.Context, app *appli
return nil
}

func (a *ApplicationManager) reconcileDelete(app *applicationapi.Application) (ctrl.Result, error) {
controllerutil.RemoveFinalizer(app, ApplicationFinalizer)
func (a *ApplicationManager) reconcileDelete(ctx context.Context, app *applicationapi.Application, fleet *fleetapi.Fleet) (ctrl.Result, error) {
if err := a.deleteResourcesInMemberClusters(ctx, app, fleet); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "failed to delete rollout resource in cluster")
}

return ctrl.Result{}, nil
}
Expand Down
42 changes: 42 additions & 0 deletions pkg/fleet-manager/application/rollout_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,48 @@ func (a *ApplicationManager) reconcileRolloutSyncStatus(ctx context.Context,
return rolloutStatus, ctrl.Result{RequeueAfter: StatusSyncInterval}, nil
}

func (a *ApplicationManager) deleteResourcesInMemberClusters(ctx context.Context, app *applicationapi.Application, fleet *fleetapi.Fleet) error {
log := ctrl.LoggerFrom(ctx)

for _, syncPolicy := range app.Spec.SyncPolicies {
rolloutPolicy := syncPolicy.Rollout
if rolloutPolicy == nil {
continue
}
// Fetch rollout destination clusters. Delete rollout resource in this clusters
destinationClusters, err := a.fetchRolloutClusters(ctx, app, a.Client, fleet, syncPolicy)
if err != nil {
return errors.Wrapf(err, "failed to fetch destination clusters when delete rollout resource")
}

serviceNamespaceName := types.NamespacedName{
Namespace: rolloutPolicy.Workload.Namespace,
Name: rolloutPolicy.ServiceName,
}
testloaderNamespaceName := types.NamespacedName{
Namespace: rolloutPolicy.Workload.Namespace,
Name: rolloutPolicy.Workload.Name + "-testloader",
}
for _, cluster := range destinationClusters {
newClient := cluster.Client.CtrlRuntimeClient()
testloaderDeploy := &appsv1.Deployment{}
if err := deleteResourceCreatedByKurator(ctx, testloaderNamespaceName, newClient, testloaderDeploy); err != nil {
return errors.Wrapf(err, "failed to delete testloader deployment")
}
testloaderSvc := &corev1.Service{}
if err := deleteResourceCreatedByKurator(ctx, testloaderNamespaceName, newClient, testloaderSvc); err != nil {
return errors.Wrapf(err, "failed to delete testloader service")
}
canary := &flaggerv1b1.Canary{}
if err := deleteResourceCreatedByKurator(ctx, serviceNamespaceName, newClient, canary); err != nil {
return errors.Wrapf(err, "failed to delete canary")
}
}
}
log.Info("delete rollout resource successful")
return nil
}

func enableIstioSidecarInjection(ctx context.Context, kubeClient client.Client, namespace string) error {
log := ctrl.LoggerFrom(ctx)

Expand Down

0 comments on commit 617bf0d

Please sign in to comment.