Skip to content

Commit cada9b8

Browse files
openshift-merge-bot[bot]deepsm007
authored andcommitted
Merge pull request #679 from bradmwilliams/jira-worker-update
Drop to a single Jira Worker
2 parents 2c7b67b + 547e90d commit cada9b8

3 files changed

Lines changed: 52 additions & 5 deletions

File tree

cmd/release-controller/controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,9 +445,9 @@ func (c *Controller) run(workers int, stopCh <-chan struct{}) {
445445
go wait.Until(c.auditWorker, time.Second, stopCh)
446446
}
447447

448-
for range workers {
449-
go wait.Until(c.jiraWorker, time.Second, stopCh)
450-
}
448+
//for range workers {
449+
go wait.Until(c.jiraWorker, time.Second, stopCh)
450+
//}
451451

452452
for range workers {
453453
go wait.Until(c.legacyResultsWorker, time.Second, stopCh)

cmd/release-controller/sync_gc.go

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ import (
66
"time"
77

88
releasecontroller "github.com/openshift/release-controller/pkg/release-controller"
9+
corev1 "k8s.io/api/core/v1"
910
"k8s.io/apimachinery/pkg/api/errors"
1011
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1112
"k8s.io/apimachinery/pkg/labels"
1213
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
1314
"k8s.io/apimachinery/pkg/util/sets"
1415
"k8s.io/klog"
16+
17+
imagev1 "github.com/openshift/api/image/v1"
1518
)
1619

1720
// garbageCollectSync checks for unreferenced objects and deletes them. Because this can run
@@ -122,11 +125,55 @@ func (c *Controller) garbageCollectSync() error {
122125
}
123126
}
124127

125-
// all releasepayloads created for releases that no longer exist should be deleted
128+
// all releasepayloads created for releases that no longer exist should be garbage collected
129+
// create a tag in quay.io with remove__ prefix - the pruner will handle deletion of both tags
126130
for _, payload := range payloads {
127131
if active.Has(payload.Name) {
128132
continue
129133
}
134+
// Get the target ImageStream from the ReleasePayload coordinates
135+
targetNamespace := payload.Spec.PayloadCoordinates.Namespace
136+
targetImageStreamName := payload.Spec.PayloadCoordinates.ImagestreamName
137+
if len(targetNamespace) == 0 || len(targetImageStreamName) == 0 {
138+
utilruntime.HandleError(fmt.Errorf("releasepayload %s/%s missing payload coordinates", payload.Namespace, payload.Name))
139+
continue
140+
}
141+
// Get the target ImageStream
142+
targetImageStream, err := c.imageClient.ImageStreams(targetNamespace).Get(context.TODO(), targetImageStreamName, metav1.GetOptions{})
143+
if err != nil {
144+
if errors.IsNotFound(err) {
145+
continue
146+
}
147+
utilruntime.HandleError(fmt.Errorf("can't get target imagestream %s/%s for releasepayload %s/%s: %v", targetNamespace, targetImageStreamName, payload.Namespace, payload.Name, err))
148+
continue
149+
}
150+
// Create a tag with remove__ prefix pointing to the original tag
151+
removeTagName := fmt.Sprintf("remove__%s", payload.Name)
152+
// Check if the remove__ tag already exists
153+
if existingTag := releasecontroller.FindTagReference(targetImageStream, removeTagName); existingTag != nil {
154+
// Tag already exists, just delete the ReleasePayload
155+
klog.V(2).Infof("Removing orphaned releasepayload %s/%s (remove__ tag already exists)", payload.Namespace, payload.Name)
156+
if err := c.releasePayloadClient.ReleasePayloads(payload.Namespace).Delete(context.TODO(), payload.Name, metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) {
157+
utilruntime.HandleError(fmt.Errorf("can't delete orphaned releasepayload %s/%s: %v", payload.Namespace, payload.Name, err))
158+
}
159+
continue
160+
}
161+
// Create the tag in the target ImageStream
162+
target := targetImageStream.DeepCopy()
163+
target.Spec.Tags = append(target.Spec.Tags, imagev1.TagReference{
164+
Name: removeTagName,
165+
From: &corev1.ObjectReference{
166+
Kind: "ImageStreamTag",
167+
Name: payload.Name,
168+
},
169+
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModePreserveOriginal},
170+
})
171+
klog.V(2).Infof("Garbage collecting releasepayload %s/%s by creating tag %s/%s:%s", payload.Namespace, payload.Name, targetNamespace, targetImageStreamName, removeTagName)
172+
_, err = c.imageClient.ImageStreams(target.Namespace).Update(context.TODO(), target, metav1.UpdateOptions{})
173+
if err != nil && !errors.IsNotFound(err) {
174+
utilruntime.HandleError(fmt.Errorf("can't create tag %s/%s:%s for garbage collection: %v", targetNamespace, targetImageStreamName, removeTagName, err))
175+
continue
176+
}
130177
klog.V(2).Infof("Removing orphaned releasepayload %s/%s", payload.Namespace, payload.Name)
131178
if err := c.releasePayloadClient.ReleasePayloads(payload.Namespace).Delete(context.TODO(), payload.Name, metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) {
132179
utilruntime.HandleError(fmt.Errorf("can't delete orphaned releasepayload %s/%s: %v", payload.Namespace, payload.Name, err))

pkg/release-controller/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ type ReleaseConfig struct {
152152
// AlternateImageRepository is the full path to an external Image Repository where we
153153
// will mirror Accepted releases to.
154154
// For example:
155-
// "alternateImageRepository": "quay.io/openshift-release-dev/dev-release"
155+
// "alternateImageRepository": "quay.io/openshift/ci"
156156
AlternateImageRepository string `json:"alternateImageRepository"`
157157

158158
// AlternateImageRepositorySecret is the name of the secret containing credentials to the

0 commit comments

Comments
 (0)