diff options
| author | jannfis <jann@mistrust.net> | 2022-01-12 10:27:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-12 10:27:56 +0100 |
| commit | 752f305845d7fa3472c302e6854a58e657c85ad4 (patch) | |
| tree | d724082aaae8e55c653f39ed4019aadcea724ce3 /pkg | |
| parent | e1f65012575eac6cd46fc6fdfc2d1ef03ad9b930 (diff) | |
fix: Fetch metadata for multi-arch images with latest strategy (#342)
* fix: Fetch metadata for multi-arch images with latest strategy
Signed-off-by: jannfis <jann@mistrust.net>
* Simplify
Signed-off-by: jannfis <jann@mistrust.net>
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/argocd/update.go | 2 | ||||
| -rw-r--r-- | pkg/image/version.go | 10 | ||||
| -rw-r--r-- | pkg/options/options.go | 12 | ||||
| -rw-r--r-- | pkg/options/options_test.go | 10 | ||||
| -rw-r--r-- | pkg/registry/client.go | 2 |
5 files changed, 20 insertions, 16 deletions
diff --git a/pkg/argocd/update.go b/pkg/argocd/update.go index 0a92ff2..6fdecce 100644 --- a/pkg/argocd/update.go +++ b/pkg/argocd/update.go @@ -197,7 +197,7 @@ func UpdateApplication(updateConf *UpdateConfiguration, state *SyncIterationStat vc.SortMode = applicationImage.GetParameterUpdateStrategy(updateConf.UpdateApp.Application.Annotations) vc.MatchFunc, vc.MatchArgs = applicationImage.GetParameterMatch(updateConf.UpdateApp.Application.Annotations) vc.IgnoreList = applicationImage.GetParameterIgnoreTags(updateConf.UpdateApp.Application.Annotations) - vc.Options = applicationImage.GetPlatformOptions(updateConf.UpdateApp.Application.Annotations, updateConf.IgnorePlatforms) + vc.Options = applicationImage.GetPlatformOptions(updateConf.UpdateApp.Application.Annotations, updateConf.IgnorePlatforms).WithMetadata(vc.SortMode.NeedsMetadata()) // The endpoint can provide default credentials for pulling images err = rep.SetEndpointCredentials(updateConf.KubeClient) diff --git a/pkg/image/version.go b/pkg/image/version.go index 3e1b39f..242fff3 100644 --- a/pkg/image/version.go +++ b/pkg/image/version.go @@ -165,3 +165,13 @@ func (vsm VersionSortMode) IsCacheable() bool { return true } } + +// NeedsMetadata returns true if v requires image metadata to work correctly +func (vsm VersionSortMode) NeedsMetadata() bool { + switch vsm { + case VersionSortLatest: + return true + default: + return false + } +} diff --git a/pkg/options/options.go b/pkg/options/options.go index c1a6462..152518e 100644 --- a/pkg/options/options.go +++ b/pkg/options/options.go @@ -70,18 +70,12 @@ func (o *ManifestOptions) Platforms() []string { } // WantsMetdata returns true if metadata should be requested -func (o *ManifestOptions) WantsMetdata() bool { +func (o *ManifestOptions) WantsMetadata() bool { return o.metadata } // WithMetadata sets metadata to be requested -func (o *ManifestOptions) WithMetadata() *ManifestOptions { - o.metadata = true - return o -} - -// WithoutMetadata sets metadata not not be requested -func (o *ManifestOptions) WithoutMetadata() *ManifestOptions { - o.metadata = false +func (o *ManifestOptions) WithMetadata(val bool) *ManifestOptions { + o.metadata = val return o } diff --git a/pkg/options/options_test.go b/pkg/options/options_test.go index d0a7fdc..a89fc1b 100644 --- a/pkg/options/options_test.go +++ b/pkg/options/options_test.go @@ -42,15 +42,15 @@ func Test_WantsPlatform(t *testing.T) { func Test_WantsMetadata(t *testing.T) { opts := NewManifestOptions() t.Run("Empty options", func(t *testing.T) { - assert.False(t, opts.WantsMetdata()) + assert.False(t, opts.WantsMetadata()) }) t.Run("Wants metadata", func(t *testing.T) { - opts = opts.WithMetadata() - assert.True(t, opts.WantsMetdata()) + opts = opts.WithMetadata(true) + assert.True(t, opts.WantsMetadata()) }) t.Run("Does not want metadata", func(t *testing.T) { - opts = opts.WithoutMetadata() - assert.False(t, opts.WantsMetdata()) + opts = opts.WithMetadata(false) + assert.False(t, opts.WantsMetadata()) }) } diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 2f8a7c9..b3beb82 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -276,7 +276,7 @@ func (client *registryClient) TagMetadata(manifest distribution.Manifest, opts * // For some strategies, we do not need to fetch metadata for further // processing. - if !opts.WantsMetdata() { + if !opts.WantsMetadata() { return ti, nil } |
