resolveImage validates an image tag via the ImageResolver if one is provided. Returns the image unchanged when the resolver is nil or the image contains variable references that cannot be resolved.
( ctx context.Context, resolver ImageResolver, image string, )
| 181 | // provided. Returns the image unchanged when the resolver is nil or |
| 182 | // the image contains variable references that cannot be resolved. |
| 183 | func resolveImage( |
| 184 | ctx context.Context, resolver ImageResolver, image string, |
| 185 | ) (string, error) { |
| 186 | if resolver == nil { |
| 187 | return image, nil |
| 188 | } |
| 189 | |
| 190 | if strings.Contains(image, "${") { |
| 191 | return image, nil |
| 192 | } |
| 193 | |
| 194 | resolved, err := resolver.Resolve(ctx, image) |
| 195 | if err != nil { |
| 196 | return "", fmt.Errorf("%w: %s: %w", ErrImageResolve, image, err) |
| 197 | } |
| 198 | |
| 199 | if resolved != image { |
| 200 | log.Printf("Resolved image %s -> %s", image, resolved) |
| 201 | } |
| 202 | |
| 203 | return resolved, nil |
| 204 | } |
| 205 | |
| 206 | // processContainers applies env var fixes, image fixes, and replacement |
| 207 | // annotations to all containers in a pod spec. It returns an error wrapping |