summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorjannfis <jann@mistrust.net>2022-01-12 10:27:56 +0100
committerGitHub <noreply@github.com>2022-01-12 10:27:56 +0100
commit752f305845d7fa3472c302e6854a58e657c85ad4 (patch)
treed724082aaae8e55c653f39ed4019aadcea724ce3 /pkg
parente1f65012575eac6cd46fc6fdfc2d1ef03ad9b930 (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.go2
-rw-r--r--pkg/image/version.go10
-rw-r--r--pkg/options/options.go12
-rw-r--r--pkg/options/options_test.go10
-rw-r--r--pkg/registry/client.go2
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
}