Skip to content

Commit 20e47fc

Browse files
authored
Merge branch 'kubernetes-sigs:main' into docsaurs_mermaid
2 parents fa809c9 + a6ed785 commit 20e47fc

File tree

3 files changed

+53
-7
lines changed

3 files changed

+53
-7
lines changed

pkg/metadata/labels.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ const (
3737
OwnedLabel = LabelKROPrefix + "owned"
3838
KROVersionLabel = LabelKROPrefix + "kro-version"
3939

40+
ManagedByLabelKey = "app.kubernetes.io/managed-by"
41+
ManagedByKROValue = "kro"
42+
4043
InstanceIDLabel = LabelKROPrefix + "instance-id"
4144
InstanceLabel = LabelKROPrefix + "instance-name"
4245
InstanceNamespaceLabel = LabelKROPrefix + "instance-namespace"
@@ -50,6 +53,9 @@ const (
5053
// IsKROOwned returns true if the resource is owned by KRO.
5154
func IsKROOwned(meta metav1.Object) bool {
5255
v, ok := meta.GetLabels()[OwnedLabel]
56+
if !ok {
57+
return meta.GetLabels()[ManagedByLabelKey] == ManagedByKROValue
58+
}
5359
return ok && booleanFromString(v)
5460
}
5561

@@ -85,11 +91,13 @@ func CompareRGDOwnership(existing, desired metav1.ObjectMeta) (kroOwned, nameMat
8591
// SetKROOwned sets the OwnedLabel to true on the resource.
8692
func SetKROOwned(meta metav1.ObjectMeta) {
8793
setLabel(&meta, OwnedLabel, stringFromBoolean(true))
94+
setLabel(&meta, ManagedByLabelKey, ManagedByKROValue)
8895
}
8996

9097
// SetKROUnowned sets the OwnedLabel to false on the resource.
9198
func SetKROUnowned(meta metav1.ObjectMeta) {
9299
setLabel(&meta, OwnedLabel, stringFromBoolean(false))
100+
unsetLabel(&meta, ManagedByLabelKey, ManagedByKROValue)
93101
}
94102

95103
var (
@@ -205,3 +213,16 @@ func setLabel(meta metav1.Object, key, value string) {
205213
labels[key] = value
206214
meta.SetLabels(labels)
207215
}
216+
217+
// Helper function to unset a label
218+
func unsetLabel(meta metav1.Object, key, value string) {
219+
labels := meta.GetLabels()
220+
if labels == nil {
221+
return
222+
}
223+
v := labels[key]
224+
if v == value {
225+
delete(labels, key)
226+
meta.SetLabels(labels)
227+
}
228+
}

pkg/metadata/labels_test.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,16 @@ func TestSetKROOwned(t *testing.T) {
162162
{
163163
name: "set owned on empty label",
164164
initialLabels: map[string]string{},
165-
expected: map[string]string{OwnedLabel: "true"},
165+
expected: map[string]string{
166+
OwnedLabel: "true", ManagedByLabelKey: ManagedByKROValue,
167+
},
166168
},
167169
{
168-
name: "override existing owned label",
169-
initialLabels: map[string]string{OwnedLabel: "false"},
170-
expected: map[string]string{OwnedLabel: "true"},
170+
name: "override existing owned and mangedby labels",
171+
initialLabels: map[string]string{OwnedLabel: "false", ManagedByLabelKey: "other"},
172+
expected: map[string]string{
173+
OwnedLabel: "true", ManagedByLabelKey: ManagedByKROValue,
174+
},
171175
},
172176
}
173177

@@ -189,13 +193,20 @@ func TestSetKROUnowned(t *testing.T) {
189193
{
190194
name: "set unowned on empty label",
191195
initialLabels: map[string]string{},
192-
expected: map[string]string{OwnedLabel: "false"},
196+
expected: map[string]string{
197+
OwnedLabel: "false",
198+
},
193199
},
194200
{
195-
name: "override existing owned label",
196-
initialLabels: map[string]string{OwnedLabel: "true"},
201+
name: "override existing owned label and remove managedBy label",
202+
initialLabels: map[string]string{OwnedLabel: "true", ManagedByLabelKey: ManagedByKROValue},
197203
expected: map[string]string{OwnedLabel: "false"},
198204
},
205+
{
206+
name: "don't remove if mangedBy label if value is not kro",
207+
initialLabels: map[string]string{OwnedLabel: "true", ManagedByLabelKey: "other"},
208+
expected: map[string]string{OwnedLabel: "false", ManagedByLabelKey: "other"},
209+
},
199210
}
200211

201212
for _, tc := range cases {

test/integration/suites/core/kubernetes_time_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
// Copyright 2025 The Kube Resource Orchestrator Authors
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
115
package core_test
216

317
import (

0 commit comments

Comments
 (0)