Skip to content

Commit 4deefbb

Browse files
pratap0007tekton-robot
authored andcommitted
Remove older versions of task and stepactions resolver installersets
This will remove the older versions of task and stepactions resolver installersets and keep only latest 2 versions during operator upgrade Signed-off-by: Shiv Verma <[email protected]>
1 parent 4615490 commit 4deefbb

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

pkg/reconciler/shared/tektonconfig/upgrade/post_upgrade.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package upgrade
1919
import (
2020
"context"
2121
"fmt"
22+
"slices"
2223
"strings"
2324

2425
"github.com/tektoncd/operator/pkg/apis/operator/v1alpha1"
@@ -34,6 +35,10 @@ import (
3435
"k8s.io/client-go/rest"
3536
)
3637

38+
const (
39+
taskVersiondRetentionCount = 2
40+
)
41+
3742
// performs storage versions upgrade
3843
// lists all the resources and keeps only one storage version
3944
func upgradeStorageVersion(ctx context.Context, logger *zap.SugaredLogger, k8sClient kubernetes.Interface, operatorClient versioned.Interface, restConfig *rest.Config) error {
@@ -108,3 +113,71 @@ func removeClusterTaskInstallerSets(ctx context.Context, logger *zap.SugaredLogg
108113
}
109114
return nil
110115
}
116+
117+
// removeVersionedTaskInstallerSets removes the versioned resolver tasks installersets except latest 2 versions
118+
func removeVersionedTaskInstallerSets(ctx context.Context, logger *zap.SugaredLogger, k8sClient kubernetes.Interface, operatorClient versioned.Interface, restConfig *rest.Config) error {
119+
120+
if !v1alpha1.IsOpenShiftPlatform() {
121+
return nil
122+
}
123+
124+
taskInstallerSetsLabelSelector := metav1.LabelSelector{
125+
MatchLabels: map[string]string{
126+
v1alpha1.InstallerSetType: fmt.Sprintf("%s-%s", "custom", "versionedresolvertask"),
127+
},
128+
}
129+
taskInstallerSetsLabel, err := common.LabelSelector(taskInstallerSetsLabelSelector)
130+
if err != nil {
131+
return err
132+
}
133+
134+
return findAndDeleteInstallerSetsByLabelName(ctx, logger, operatorClient, taskInstallerSetsLabel)
135+
}
136+
137+
// removeVersionedStepActionsInstallerSets removes the versioned resolver step actions installersets except latest 2 versions
138+
func removeVersionedStepActionsInstallerSets(ctx context.Context, logger *zap.SugaredLogger, k8sClient kubernetes.Interface, operatorClient versioned.Interface, restConfig *rest.Config) error {
139+
140+
if !v1alpha1.IsOpenShiftPlatform() {
141+
return nil
142+
}
143+
144+
stepActionsInstallerSetsLabelSelector := metav1.LabelSelector{
145+
MatchLabels: map[string]string{
146+
v1alpha1.InstallerSetType: fmt.Sprintf("%s-%s", "custom", "versionedresolverstepaction"),
147+
},
148+
}
149+
stepActionsInstallerSetsLabel, err := common.LabelSelector(stepActionsInstallerSetsLabelSelector)
150+
if err != nil {
151+
return err
152+
}
153+
154+
return findAndDeleteInstallerSetsByLabelName(ctx, logger, operatorClient, stepActionsInstallerSetsLabel)
155+
}
156+
157+
func findAndDeleteInstallerSetsByLabelName(ctx context.Context, logger *zap.SugaredLogger, operatorClient versioned.Interface, installerSetsLabel string) error {
158+
tsClient := operatorClient.OperatorV1alpha1().TektonInstallerSets()
159+
160+
installerSets, err := tsClient.List(ctx, metav1.ListOptions{LabelSelector: installerSetsLabel})
161+
if err != nil {
162+
return err
163+
}
164+
if len(installerSets.Items) < taskVersiondRetentionCount {
165+
return nil
166+
}
167+
168+
installerListName := []string{}
169+
for _, taskIS := range installerSets.Items {
170+
installerListName = append(installerListName, taskIS.Name)
171+
}
172+
173+
slices.Sort(installerListName)
174+
slices.Reverse(installerListName)
175+
176+
for i := taskVersiondRetentionCount; i < len(installerListName); i++ {
177+
if err := tsClient.Delete(ctx, installerListName[i], metav1.DeleteOptions{}); err != nil {
178+
logger.Errorw("failed to delete a installerset", "installerSetName", installerListName[i], err)
179+
return err
180+
}
181+
}
182+
return nil
183+
}

pkg/reconciler/shared/tektonconfig/upgrade/upgrade.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ var (
3838

3939
// post upgrade functions
4040
postUpgradeFunctions = []upgradeFunc{
41-
upgradeStorageVersion, // upgrade #1: performs storage version migration
42-
removeClusterTaskInstallerSets, // upgrade #2: removes the clusterTask installerset
41+
upgradeStorageVersion, // upgrade #1: performs storage version migration
42+
removeClusterTaskInstallerSets, // upgrade #2: removes the clusterTask installerset
43+
removeVersionedTaskInstallerSets, // upgrade #3: remove the older versioned resolver task installersets
44+
removeVersionedStepActionsInstallerSets, // upgrade #4: remove the older versioned step action resolver installersets
4345
}
4446
)
4547

0 commit comments

Comments
 (0)