Skip to content

Commit 70c1b13

Browse files
committed
Add Deployment and ConfigMap upgrade path
1 parent ab8f195 commit 70c1b13

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

controllers/limitador_controller.go

+16
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
limitadorv1alpha1 "github.com/kuadrant/limitador-operator/api/v1alpha1"
3636
"github.com/kuadrant/limitador-operator/pkg/limitador"
3737
"github.com/kuadrant/limitador-operator/pkg/reconcilers"
38+
upgrades "github.com/kuadrant/limitador-operator/pkg/upgrades"
3839
)
3940

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

203+
// TODO: To be deleted when the upgrade path is no longer needed.
204+
newDeployment := &appsv1.Deployment{}
205+
if err := r.Client().Get(ctx, client.ObjectKeyFromObject(deployment), newDeployment); err != nil {
206+
return err
207+
}
208+
if err := upgrades.DeleteOldDeployment(ctx, r.Client(), limitadorObj, newDeployment); err != nil {
209+
return err
210+
}
211+
// TODO: End of the block to be removed.
212+
202213
return nil
203214
}
204215

@@ -266,6 +277,11 @@ func (r *LimitadorReconciler) reconcileLimitsConfigMap(ctx context.Context, limi
266277
return err
267278
}
268279

280+
// TODO: To be deleted when the upgrade path is no longer needed.
281+
if err := upgrades.DeleteOldConfigMap(ctx, r.Client(), limitadorObj); err != nil {
282+
return err
283+
}
284+
269285
return nil
270286
}
271287

pkg/upgrades/v0_6_0.go

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package upgrades
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
appsv1 "k8s.io/api/apps/v1"
8+
v1 "k8s.io/api/core/v1"
9+
"k8s.io/apimachinery/pkg/api/errors"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"sigs.k8s.io/controller-runtime/pkg/client"
12+
13+
limitadorv1alpha1 "github.com/kuadrant/limitador-operator/api/v1alpha1"
14+
"github.com/kuadrant/limitador-operator/pkg/helpers"
15+
)
16+
17+
func DeleteOldDeployment(ctx context.Context, cli client.Client, limitadorObj *limitadorv1alpha1.Limitador, newDeployment *appsv1.Deployment) error {
18+
availableCondition := helpers.FindDeploymentStatusCondition(newDeployment.Status.Conditions, "Available")
19+
20+
if availableCondition != nil && availableCondition.Status == v1.ConditionTrue {
21+
oldDeployment := &appsv1.Deployment{
22+
ObjectMeta: metav1.ObjectMeta{
23+
Name: Release_v0_6_0_DeploymentName(limitadorObj),
24+
Namespace: limitadorObj.Namespace,
25+
},
26+
}
27+
28+
if err := cli.Delete(ctx, oldDeployment); err != nil && !errors.IsNotFound(err) {
29+
return err
30+
}
31+
}
32+
33+
return nil
34+
}
35+
36+
func DeleteOldConfigMap(ctx context.Context, cli client.Client, limitadorObj *limitadorv1alpha1.Limitador) error {
37+
oldConfigMap := &v1.ConfigMap{
38+
ObjectMeta: metav1.ObjectMeta{
39+
Name: Release_v0_6_0__LimitsConfigMapName(limitadorObj),
40+
Namespace: limitadorObj.Namespace,
41+
},
42+
}
43+
44+
if err := cli.Delete(ctx, oldConfigMap); err != nil && !errors.IsNotFound(err) {
45+
return err
46+
}
47+
48+
return nil
49+
}
50+
51+
func Release_v0_6_0_DeploymentName(limitadorObj *limitadorv1alpha1.Limitador) string {
52+
return limitadorObj.Name
53+
}
54+
55+
func Release_v0_6_0__LimitsConfigMapName(limitadorObj *limitadorv1alpha1.Limitador) string {
56+
return fmt.Sprintf("limits-config-%s", limitadorObj.Name)
57+
}

0 commit comments

Comments
 (0)