Add CRIImageService.RemoveImage()
Signed-off-by: Kirtana Ashok <kiashok@microsoft.com>
This commit is contained in:
		@@ -34,17 +34,24 @@ import (
 | 
				
			|||||||
// Remove the whole image no matter the it's image id or reference. This is the
 | 
					// Remove the whole image no matter the it's image id or reference. This is the
 | 
				
			||||||
// semantic defined in CRI now.
 | 
					// semantic defined in CRI now.
 | 
				
			||||||
func (c *GRPCCRIImageService) RemoveImage(ctx context.Context, r *runtime.RemoveImageRequest) (*runtime.RemoveImageResponse, error) {
 | 
					func (c *GRPCCRIImageService) RemoveImage(ctx context.Context, r *runtime.RemoveImageRequest) (*runtime.RemoveImageResponse, error) {
 | 
				
			||||||
 | 
						err := c.CRIImageService.RemoveImage(ctx, r.GetImage())
 | 
				
			||||||
 | 
						if err != nil && !errdefs.IsNotFound(err) {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &runtime.RemoveImageResponse{}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *CRIImageService) RemoveImage(ctx context.Context, imageSpec *runtime.ImageSpec) error {
 | 
				
			||||||
	span := tracing.SpanFromContext(ctx)
 | 
						span := tracing.SpanFromContext(ctx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO: Move to separate function
 | 
						image, err := c.LocalResolve(imageSpec.GetImage())
 | 
				
			||||||
	image, err := c.LocalResolve(r.GetImage().GetImage())
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if errdefs.IsNotFound(err) {
 | 
							if errdefs.IsNotFound(err) {
 | 
				
			||||||
			span.AddEvent(err.Error())
 | 
								span.AddEvent(err.Error())
 | 
				
			||||||
			// return empty without error when image not found.
 | 
								// return empty without error when image not found.
 | 
				
			||||||
			return &runtime.RemoveImageResponse{}, nil
 | 
								return nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil, fmt.Errorf("can not resolve %q locally: %w", r.GetImage().GetImage(), err)
 | 
							return fmt.Errorf("can not resolve %q locally: %w", imageSpec.GetImage(), err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	span.SetAttributes(tracing.Attribute("image.id", image.ID))
 | 
						span.SetAttributes(tracing.Attribute("image.id", image.ID))
 | 
				
			||||||
	// Remove all image references.
 | 
						// Remove all image references.
 | 
				
			||||||
@@ -60,11 +67,11 @@ func (c *GRPCCRIImageService) RemoveImage(ctx context.Context, r *runtime.Remove
 | 
				
			|||||||
		if err == nil || errdefs.IsNotFound(err) {
 | 
							if err == nil || errdefs.IsNotFound(err) {
 | 
				
			||||||
			// Update image store to reflect the newest state in containerd.
 | 
								// Update image store to reflect the newest state in containerd.
 | 
				
			||||||
			if err := c.imageStore.Update(ctx, ref); err != nil {
 | 
								if err := c.imageStore.Update(ctx, ref); err != nil {
 | 
				
			||||||
				return nil, fmt.Errorf("failed to update image reference %q for %q: %w", ref, image.ID, err)
 | 
									return fmt.Errorf("failed to update image reference %q for %q: %w", ref, image.ID, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil, fmt.Errorf("failed to delete image reference %q for %q: %w", ref, image.ID, err)
 | 
							return fmt.Errorf("failed to delete image reference %q for %q: %w", ref, image.ID, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &runtime.RemoveImageResponse{}, nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user