Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 4 additions & 18 deletions pkg/operator/controller/ingress/poddisruptionbudget.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (

"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
)

// ensureRouterPodDisruptionBudget ensures the pod disruption budget exists for
Expand Down Expand Up @@ -61,23 +60,10 @@ func (r *reconciler) ensureRouterPodDisruptionBudget(ic *operatorv1.IngressContr
// budget. Returns a Boolean indicating whether a PDB is desired, as well as
// the PDB if one is desired.
func desiredRouterPodDisruptionBudget(ic *operatorv1.IngressController, deploymentRef metav1.OwnerReference) (bool, *policyv1beta1.PodDisruptionBudget, error) {
name := controller.RouterPodDisruptionBudgetName(ic)
pointerTo := func(ios intstr.IntOrString) *intstr.IntOrString { return &ios }
pdb := policyv1beta1.PodDisruptionBudget{
ObjectMeta: metav1.ObjectMeta{
Name: name.Name,
Namespace: name.Namespace,
},
Spec: policyv1beta1.PodDisruptionBudgetSpec{
// The disruption controller rounds MaxUnavailable up.
// https://github.com/kubernetes/kubernetes/blob/65dc445aa2d581b4fa829258e46e4faf44e999b6/pkg/controller/disruption/disruption.go#L539
MaxUnavailable: pointerTo(intstr.FromString("25%")),
Selector: controller.IngressControllerDeploymentPodSelector(ic),
},
}
pdb.SetOwnerReferences([]metav1.OwnerReference{deploymentRef})

return true, &pdb, nil
// Always return false because we never want a pod disruption budget.
// TODO: We removed pod disruption budgets in OpenShift 4.3; we should
// remove ensureRouterPodDisruptionBudget in OpenShift 4.4.
return false, nil, nil
}

// currentRouterPodDisruptionBudget returns the current router pod disruption
Expand Down
11 changes: 7 additions & 4 deletions test/e2e/operator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -467,9 +467,9 @@ func TestRouterCACertificate(t *testing.T) {
}
}

// TestPodDisruptionBudgetExists verifies that a PodDisruptionBudget resource
// exists for the default ingresscontroller.
func TestPodDisruptionBudgetExists(t *testing.T) {
// TestPodDisruptionBudgetDoesNotExist verifies that a PodDisruptionBudget
// resource does not exist for the default ingresscontroller.
func TestPodDisruptionBudgetDoesNotExist(t *testing.T) {
ic := &operatorv1.IngressController{}
if err := kclient.Get(context.TODO(), defaultName, ic); err != nil {
t.Fatalf("failed to get default ingresscontroller: %v", err)
Expand All @@ -481,7 +481,10 @@ func TestPodDisruptionBudgetExists(t *testing.T) {

pdb := &policyv1beta1.PodDisruptionBudget{}
if err := kclient.Get(context.TODO(), controller.RouterPodDisruptionBudgetName(ic), pdb); err != nil {
t.Fatalf("failed to get default ingresscontroller poddisruptionbudget: %v", err)
if errors.IsNotFound(err) {
return
}
t.Errorf("error getting default ingresscontroller poddisruptionbudget: %v", err)
}
}

Expand Down