pkg/autoupdate: remove image map from updater
It is not state needed after assembling the tasks, so remove it to keep
the task struct simpler.
@@ -53,7 +53,6 @@ var supportedPolicies = map[string]Policy{
// updater includes shared state for auto-updating one or more containers.
type updater struct {
conn *dbus.Conn
- idToImage map[string]*libimage.Image
options *entities.AutoUpdateOptions
unitToTasks map[string][]*task
updatedRawImages map[string]bool
@@ -126,24 +125,6 @@ func ValidateImageReference(imageName string) error {
return nil
}
-func (u *updater) assembleImageMap(ctx context.Context) error {
- // Create a map from `image ID -> *libimage.Image` for image lookups.
- listOptions := &libimage.ListImagesOptions{
- Filters: []string{"readonly=false"},
- }
- imagesSlice, err := u.runtime.LibimageRuntime().ListImages(ctx, nil, listOptions)
- if err != nil {
- return err
- }
- imageMap := make(map[string]*libimage.Image)
- for i := range imagesSlice {
- imageMap[imagesSlice[i].ID()] = imagesSlice[i]
- }
-
- u.idToImage = imageMap
- return nil
-}
-
// AutoUpdate looks up containers with a specified auto-update policy and acts
// accordingly.
//
@@ -383,7 +364,8 @@ func (u *updater) restartSystemdUnit(ctx context.Context, ctr *libpod.Container,
func (u *updater) assembleTasks(ctx context.Context) []error {
// Assemble a map `image ID -> *libimage.Image` that we can consult
// later on for lookups.
- if err := u.assembleImageMap(ctx); err != nil {
+ imageMap, err := u.assembleImageMap(ctx)
+ if err != nil {
return []error{err}
}
@@ -432,7 +414,7 @@ func (u *updater) assembleTasks(ctx context.Context) []error {
}
id, _ := ctr.Image()
- image, exists := u.idToImage[id]
+ image, exists := imageMap[id]
if !exists {
err := fmt.Errorf("internal error: no image found for ID %s", id)
errors = append(errors, err)
@@ -455,6 +437,23 @@ func (u *updater) assembleTasks(ctx context.Context) []error {
return errors
}
+// assembleImageMap creates a map from `image ID -> *libimage.Image` for image lookups.
+func (u *updater) assembleImageMap(ctx context.Context) (map[string]*libimage.Image, error) {
+ listOptions := &libimage.ListImagesOptions{
+ Filters: []string{"readonly=false"},
+ }
+ imagesSlice, err := u.runtime.LibimageRuntime().ListImages(ctx, nil, listOptions)
+ if err != nil {
+ return nil, err
+ }
+ imageMap := make(map[string]*libimage.Image)
+ for i := range imagesSlice {
+ imageMap[imagesSlice[i].ID()] = imagesSlice[i]
+ }
+
+ return imageMap, nil
+}
+
// newerRemoteImageAvailable returns true if there corresponding image on the remote
// registry is newer.
func newerRemoteImageAvailable(ctx context.Context, img *libimage.Image, origName string, authfile string) (bool, error) {
