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 Nov 9, 2023
1 parent ab8f195 commit 3b0ea2a
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
17 changes: 17 additions & 0 deletions controllers/limitador_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import (
limitadorv1alpha1 "github.com/kuadrant/limitador-operator/api/v1alpha1"
"github.com/kuadrant/limitador-operator/pkg/limitador"
"github.com/kuadrant/limitador-operator/pkg/reconcilers"
upgrades "github.com/kuadrant/limitador-operator/pkg/upgrades"
)

// LimitadorReconciler reconciles a Limitador object
Expand Down Expand Up @@ -199,6 +200,16 @@ func (r *LimitadorReconciler) reconcileDeployment(ctx context.Context, limitador
return err
}

// TODO: To be deleted when the upgrade path is no longer needed.
newDeployment := &appsv1.Deployment{}
if err := r.Client().Get(ctx, client.ObjectKeyFromObject(deployment), newDeployment); err != nil {
return err
}
if err := upgrades.DeleteOldDeployment(ctx, r.Client(), limitadorObj, newDeployment); err != nil {
return err
}
// TODO: End of the block to be removed.

return nil
}

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

// TODO: To be deleted when the upgrade path is no longer needed.
err = upgrades.DeleteOldConfigMap(ctx, r.Client(), limitadorObj)
if err != nil {
return err
}

return nil
}

Expand Down
57 changes: 57 additions & 0 deletions pkg/upgrades/v0_6_0.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package upgrades

import (
"context"
"fmt"

appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"

limitadorv1alpha1 "github.com/kuadrant/limitador-operator/api/v1alpha1"
"github.com/kuadrant/limitador-operator/pkg/helpers"
)

func DeleteOldDeployment(ctx context.Context, cli client.Client, limitadorObj *limitadorv1alpha1.Limitador, newDeployment *appsv1.Deployment) error {
availableCondition := helpers.FindDeploymentStatusCondition(newDeployment.Status.Conditions, "Available")

if availableCondition != nil && availableCondition.Status == v1.ConditionTrue {
oldDeployment := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: ReleaseV060DeploymentName(limitadorObj),
Namespace: limitadorObj.Namespace,
},
}

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

return nil
}

func DeleteOldConfigMap(ctx context.Context, cli client.Client, limitadorObj *limitadorv1alpha1.Limitador) error {
oldConfigMap := &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: ReleaseV060LimitsConfigMapName(limitadorObj),
Namespace: limitadorObj.Namespace,
},
}

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

return nil
}

func ReleaseV060DeploymentName(limitadorObj *limitadorv1alpha1.Limitador) string {
return limitadorObj.Name
}

func ReleaseV060LimitsConfigMapName(limitadorObj *limitadorv1alpha1.Limitador) string {
return fmt.Sprintf("limits-config-%s", limitadorObj.Name)
}

0 comments on commit 3b0ea2a

Please sign in to comment.