Skip to content

Commit

Permalink
Add Deployment and ConfigMap upgrade path
Browse files Browse the repository at this point in the history
  • Loading branch information
grzpiotrowski committed Oct 23, 2023
1 parent eeff3fb commit 8069507
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions controllers/limitador_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,21 @@ import (
"encoding/json"
"fmt"
"reflect"
"strings"

"github.com/go-logr/logr"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
policyv1 "k8s.io/api/policy/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"

limitadorv1alpha1 "github.com/kuadrant/limitador-operator/api/v1alpha1"
"github.com/kuadrant/limitador-operator/pkg/helpers"
"github.com/kuadrant/limitador-operator/pkg/limitador"
"github.com/kuadrant/limitador-operator/pkg/reconcilers"
)
Expand Down Expand Up @@ -199,6 +202,28 @@ func (r *LimitadorReconciler) reconcileDeployment(ctx context.Context, limitador
return err
}

// Check if the new deployment is ready
newDeployment := &appsv1.Deployment{}
if err := r.Client().Get(ctx, client.ObjectKeyFromObject(deployment), newDeployment); err != nil {
return err
}

availableCondition := helpers.FindDeploymentStatusCondition(newDeployment.Status.Conditions, "Available")

if availableCondition != nil && availableCondition.Status == v1.ConditionTrue {
// Delete the old deployment
oldDeployment := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: limitadorObj.Name,
Namespace: limitadorObj.Namespace,
},
}

if err := r.Client().Delete(ctx, oldDeployment); err != nil && !errors.IsNotFound(err) {
return err
}
}

return nil
}

Expand Down Expand Up @@ -266,6 +291,17 @@ func (r *LimitadorReconciler) reconcileLimitsConfigMap(ctx context.Context, limi
return err
}

oldConfigMap := &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: strings.TrimPrefix(limitador.LimitsConfigMapName(limitadorObj), "limitador-"),
Namespace: limitadorObj.Namespace,
},
}

if err := r.Client().Delete(ctx, oldConfigMap); err != nil && !errors.IsNotFound(err) {
return err
}

return nil
}

Expand Down

0 comments on commit 8069507

Please sign in to comment.