Skip to content

Commit f1def19

Browse files
authored
Merge pull request #1405 from ta924/main
avoid copying canary labels to primary on promotion
2 parents f3f6266 + 44363d5 commit f1def19

8 files changed

+32
-10
lines changed

pkg/canary/daemonset_controller.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,8 @@ func (c *DaemonSetController) Promote(cd *flaggerv1.Canary) error {
175175
primaryCopy.ObjectMeta.Annotations[k] = v
176176
}
177177
// update ds labels
178-
primaryCopy.ObjectMeta.Labels = make(map[string]string)
179178
filteredLabels := includeLabelsByPrefix(canary.ObjectMeta.Labels, c.includeLabelPrefix)
180-
for k, v := range filteredLabels {
181-
primaryCopy.ObjectMeta.Labels[k] = v
182-
}
179+
primaryCopy.ObjectMeta.Labels = makePrimaryLabels(filteredLabels, primaryLabelValue, label)
183180

184181
// apply update
185182
_, err = c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Update(context.TODO(), primaryCopy, metav1.UpdateOptions{})

pkg/canary/daemonset_controller_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ func TestDaemonSetController_Promote(t *testing.T) {
9999
daePrimaryLabels := daePrimary.ObjectMeta.Labels
100100
daeSourceLabels := dae2.ObjectMeta.Labels
101101
assert.Equal(t, daeSourceLabels["app.kubernetes.io/test-label-1"], daePrimaryLabels["app.kubernetes.io/test-label-1"])
102+
assert.Equal(t, "podinfo-primary", daePrimaryLabels["name"])
102103

103104
daePrimaryAnnotations := daePrimary.ObjectMeta.Annotations
104105
daeSourceAnnotations := dae2.ObjectMeta.Annotations

pkg/canary/deployment_controller.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,8 @@ func (c *DeploymentController) Promote(cd *flaggerv1.Canary) error {
129129
primaryCopy.ObjectMeta.Annotations[k] = v
130130
}
131131
// update deploy labels
132-
primaryCopy.ObjectMeta.Labels = make(map[string]string)
133132
filteredLabels := includeLabelsByPrefix(canary.ObjectMeta.Labels, c.includeLabelPrefix)
134-
for k, v := range filteredLabels {
135-
primaryCopy.ObjectMeta.Labels[k] = v
136-
}
133+
primaryCopy.ObjectMeta.Labels = makePrimaryLabels(filteredLabels, primaryLabelValue, label)
137134

138135
// apply update
139136
_, err = c.kubeClient.AppsV1().Deployments(cd.Namespace).Update(context.TODO(), primaryCopy, metav1.UpdateOptions{})

pkg/canary/deployment_controller_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ func TestDeploymentController_Promote(t *testing.T) {
9595
depPrimaryLabels := depPrimary.ObjectMeta.Labels
9696
depSourceLabels := dep2.ObjectMeta.Labels
9797
assert.Equal(t, depSourceLabels["app.kubernetes.io/test-label-1"], depPrimaryLabels["app.kubernetes.io/test-label-1"])
98+
assert.Equal(t, "podinfo-primary", depPrimaryLabels["name"])
9899

99100
depPrimaryAnnotations := depPrimary.ObjectMeta.Annotations
100101
depSourceAnnotations := dep2.ObjectMeta.Annotations

pkg/canary/util.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func includeLabelsByPrefix(labels map[string]string, includeLabelPrefixes []stri
115115
continue
116116
}
117117
for _, includeLabelPrefix := range includeLabelPrefixes {
118-
if includeLabelPrefix == "*" || strings.HasPrefix(key, includeLabelPrefix) {
118+
if includeLabelPrefix == "*" || (includeLabelPrefix != "" && strings.HasPrefix(key, includeLabelPrefix)) {
119119
filteredLabels[key] = value
120120
break
121121
}

pkg/canary/util_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ func TestIncludeLabelsByPrefixWithWildcard(t *testing.T) {
5656
})
5757
}
5858

59+
func TestIncludeLabelsNoIncludes(t *testing.T) {
60+
labels := map[string]string{
61+
"foo": "foo-value",
62+
"bar": "bar-value",
63+
"lorem": "ipsum",
64+
}
65+
includeLabelPrefix := []string{""}
66+
67+
filteredLabels := includeLabelsByPrefix(labels, includeLabelPrefix)
68+
69+
assert.Equal(t, map[string]string{}, filteredLabels)
70+
}
71+
5972
func TestMakePrimaryLabels(t *testing.T) {
6073
labels := map[string]string{
6174
"lorem": "ipsum",

pkg/router/util.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func includeLabelsByPrefix(labels map[string]string, includeLabelPrefixes []stri
1717
continue
1818
}
1919
for _, includeLabelPrefix := range includeLabelPrefixes {
20-
if includeLabelPrefix == "*" || strings.HasPrefix(key, includeLabelPrefix) {
20+
if includeLabelPrefix == "*" || (includeLabelPrefix != "" && strings.HasPrefix(key, includeLabelPrefix)) {
2121
filteredLabels[key] = value
2222
break
2323
}

pkg/router/util_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,16 @@ func TestIncludeLabelsByPrefixWithWildcard(t *testing.T) {
5656
"lorem": "ipsum",
5757
})
5858
}
59+
60+
func TestIncludeLabelsNoIncludes(t *testing.T) {
61+
labels := map[string]string{
62+
"foo": "foo-value",
63+
"bar": "bar-value",
64+
"lorem": "ipsum",
65+
}
66+
includeLabelPrefix := []string{""}
67+
68+
filteredLabels := includeLabelsByPrefix(labels, includeLabelPrefix)
69+
70+
assert.Equal(t, map[string]string{}, filteredLabels)
71+
}

0 commit comments

Comments
 (0)