Skip to content

Commit 070b05c

Browse files
committed
Don't return no elements from an empty ImagePolicy.
1 parent 76382a3 commit 070b05c

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

controllers/templates/generators/imagepolicy/image_policy.go

+17-12
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/google/go-containerregistry/pkg/name"
1111
templatesv1 "github.com/weaveworks/gitopssets-controller/api/v1alpha1"
1212
"github.com/weaveworks/gitopssets-controller/controllers/templates/generators"
13+
"k8s.io/apimachinery/pkg/types"
1314
"sigs.k8s.io/controller-runtime/pkg/client"
1415
)
1516

@@ -45,34 +46,38 @@ func (g *ImagePolicyGenerator) Generate(ctx context.Context, sg *templatesv1.Git
4546
return nil, nil
4647
}
4748

48-
g.Logger.Info("generating params from ImagePolicy generator", "repo", sg.ImagePolicy.PolicyRef)
49+
g.Logger.Info("generating params from ImagePolicy generator", "imagePolicy", sg.ImagePolicy.PolicyRef)
4950

50-
var repo imagev1.ImagePolicy
51-
repoName := client.ObjectKey{Name: sg.ImagePolicy.PolicyRef, Namespace: ks.GetNamespace()}
52-
if err := g.Client.Get(ctx, repoName, &repo); err != nil {
51+
var imagePolicy imagev1.ImagePolicy
52+
imagePolicyName := client.ObjectKey{Name: sg.ImagePolicy.PolicyRef, Namespace: ks.GetNamespace()}
53+
if err := g.Client.Get(ctx, imagePolicyName, &imagePolicy); err != nil {
5354
return nil, fmt.Errorf("could not load ImagePolicy: %w", err)
5455
}
5556

5657
result := []map[string]any{}
5758

58-
if repo.Status.LatestImage == "" {
59+
if imagePolicy.Status.LatestImage == "" {
5960
g.Logger.Info("image policy has not calculated the latest image")
60-
return result, nil
61+
return nil, generators.ArtifactError("ImagePolicy",
62+
types.NamespacedName{
63+
Name: imagePolicy.GetName(),
64+
Namespace: imagePolicy.GetNamespace(),
65+
})
6166
}
6267

63-
latestTag, err := name.NewTag(repo.Status.LatestImage)
68+
latestTag, err := name.NewTag(imagePolicy.Status.LatestImage)
6469
if err != nil {
6570
return nil, err
6671
}
6772

68-
g.Logger.Info("image policy", "latestImage", repo.Status.LatestImage, "latestTag", latestTag.TagStr(), "previousImage", repo.Status.ObservedPreviousImage)
73+
g.Logger.Info("image policy", "latestImage", imagePolicy.Status.LatestImage, "latestTag", latestTag.TagStr(), "previousImage", imagePolicy.Status.ObservedPreviousImage)
6974

7075
// This stores empty strings the for the previous tag if it's empty because
7176
// that saves users having to check for the existence of the fields in their
7277
// templates.
7378
previousTag := ""
74-
if repo.Status.ObservedPreviousImage != "" {
75-
parsedTag, err := name.NewTag(repo.Status.ObservedPreviousImage)
79+
if imagePolicy.Status.ObservedPreviousImage != "" {
80+
parsedTag, err := name.NewTag(imagePolicy.Status.ObservedPreviousImage)
7681
if err != nil {
7782
return nil, err
7883
}
@@ -81,10 +86,10 @@ func (g *ImagePolicyGenerator) Generate(ctx context.Context, sg *templatesv1.Git
8186
}
8287

8388
generated := map[string]any{
84-
"latestImage": repo.Status.LatestImage,
89+
"latestImage": imagePolicy.Status.LatestImage,
8590
"image": latestTag.Repository.Name(),
8691
"latestTag": latestTag.TagStr(),
87-
"previousImage": repo.Status.ObservedPreviousImage,
92+
"previousImage": imagePolicy.Status.ObservedPreviousImage,
8893
"previousTag": previousTag,
8994
}
9095

controllers/templates/generators/imagepolicy/image_policy_test.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ func TestGenerate(t *testing.T) {
3838
objects []runtime.Object
3939
want []map[string]any
4040
}{
41-
{
42-
"no policy image",
43-
&templatesv1.ImagePolicyGenerator{
44-
PolicyRef: "test-policy",
45-
},
46-
[]runtime.Object{test.NewImagePolicy()},
47-
[]map[string]any{},
48-
},
4941
{
5042
"image policy in status",
5143
&templatesv1.ImagePolicyGenerator{
@@ -128,6 +120,15 @@ func TestGenerate_errors(t *testing.T) {
128120
objects []runtime.Object
129121
wantErr string
130122
}{
123+
{
124+
"no policy image",
125+
&templatesv1.ImagePolicyGenerator{
126+
PolicyRef: "test-policy",
127+
},
128+
[]runtime.Object{test.NewImagePolicy()},
129+
`no artifact for ImagePolicy default/test-policy`,
130+
},
131+
131132
{
132133
name: "missing image policy resource",
133134
generator: &templatesv1.ImagePolicyGenerator{

0 commit comments

Comments
 (0)