Skip to content

Commit

Permalink
Merge pull request #618 from jottofar/bug-1976307-is-delete-fix
Browse files Browse the repository at this point in the history
Bug 1976307: add ImageStreams manifest delete annotation logic
  • Loading branch information
openshift-merge-robot committed Jun 29, 2021
2 parents d48ed58 + 95b542b commit a304b71
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
7 changes: 6 additions & 1 deletion lib/resourcebuilder/resourcebuilder.go
Expand Up @@ -82,8 +82,13 @@ func (b *builder) Do(ctx context.Context) error {
if b.modifier != nil {
b.modifier(typedObject)
}
if _, _, err := resourceapply.ApplyImageStreamv1(ctx, b.imageClientv1, typedObject); err != nil {
if deleteReq, err := resourcedelete.DeleteImageStreamv1(ctx, b.imageClientv1, typedObject,
updatingMode); err != nil {
return err
} else if !deleteReq {
if _, _, err := resourceapply.ApplyImageStreamv1(ctx, b.imageClientv1, typedObject); err != nil {
return err
}
}
case *securityv1.SecurityContextConstraints:
if b.modifier != nil {
Expand Down
41 changes: 41 additions & 0 deletions lib/resourcedelete/imagestream.go
@@ -0,0 +1,41 @@
package resourcedelete

import (
"context"
"fmt"

imagev1 "github.com/openshift/api/image/v1"
imageclientv1 "github.com/openshift/client-go/image/clientset/versioned/typed/image/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// DeleteImageStreamv1 checks the given resource for a valid delete annotation. If found
// and in UpdatingMode it will issue a delete request or provide status of a previousily issued delete request.
// If not in UpdatingMode it simply returns an indication that the delete annotation was found. An error is
// returned if an invalid annotation is found or an error occurs during delete processing.
func DeleteImageStreamv1(ctx context.Context, client imageclientv1.ImageStreamsGetter, required *imagev1.ImageStream,
updateMode bool) (bool, error) {

if delAnnoFound, err := ValidDeleteAnnotation(required.Annotations); !delAnnoFound || err != nil {
return delAnnoFound, err
} else if !updateMode {
return true, nil
}
resource := Resource{
Kind: "imagestream",
Namespace: required.Namespace,
Name: required.Name,
}
existing, err := client.ImageStreams(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if deleteRequested, err := GetDeleteProgress(resource, err); err == nil {
if !deleteRequested {
if err := client.ImageStreams(required.Namespace).Delete(ctx, required.Name, metav1.DeleteOptions{}); err != nil {
return true, fmt.Errorf("Delete request for %s failed, err=%v", resource, err)
}
SetDeleteRequested(existing, resource)
}
} else {
return true, fmt.Errorf("Error running delete for %s, err=%v", resource, err)
}
return true, nil
}

0 comments on commit a304b71

Please sign in to comment.