diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index e7d8a160654e..2b3ae593503c 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3741,38 +3741,30 @@ func (woc *wfOperationCtx) createPDBResource(ctx context.Context) error { return nil } - pdb, err := woc.controller.kubeclientset.PolicyV1().PodDisruptionBudgets(woc.wf.Namespace).Get( - ctx, - woc.wf.Name, - metav1.GetOptions{}, - ) - if err != nil && !apierr.IsNotFound(err) && !apierr.IsAlreadyExists(err) { - return err - } - if pdb != nil && pdb.Name != "" { - woc.log.Info("PDB resource already exists for workflow.") - return nil - } - + labels := map[string]string{common.LabelKeyWorkflow: woc.wf.Name} pdbSpec := *woc.execWf.Spec.PodDisruptionBudget if pdbSpec.Selector == nil { pdbSpec.Selector = &metav1.LabelSelector{ - MatchLabels: map[string]string{common.LabelKeyWorkflow: woc.wf.Name}, + MatchLabels: labels, } } newPDB := policyv1.PodDisruptionBudget{ ObjectMeta: metav1.ObjectMeta{ Name: woc.wf.Name, - Labels: map[string]string{common.LabelKeyWorkflow: woc.wf.Name}, + Labels: labels, OwnerReferences: []metav1.OwnerReference{ *metav1.NewControllerRef(woc.wf, wfv1.SchemeGroupVersion.WithKind(workflow.WorkflowKind)), }, }, Spec: pdbSpec, } - _, err = woc.controller.kubeclientset.PolicyV1().PodDisruptionBudgets(woc.wf.Namespace).Create(ctx, &newPDB, metav1.CreateOptions{}) + _, err := woc.controller.kubeclientset.PolicyV1().PodDisruptionBudgets(woc.wf.Namespace).Create(ctx, &newPDB, metav1.CreateOptions{}) if err != nil { + if apierr.IsAlreadyExists(err) { + woc.log.Info("PDB resource already exists for workflow.") + return nil + } return err } woc.log.Info("Created PDB resource for workflow.")