@@ -13,6 +13,7 @@ import (
13
13
"k8s.io/apimachinery/pkg/labels"
14
14
"k8s.io/apimachinery/pkg/runtime"
15
15
"k8s.io/apimachinery/pkg/runtime/schema"
16
+ apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
16
17
)
17
18
18
19
const (
@@ -125,16 +126,38 @@ func Adoptable(target Owner, owners []metav1.OwnerReference) bool {
125
126
}
126
127
127
128
// OwnersIntersect checks to see if any member of targets exists in owners
128
- func OwnersIntersect (targets []Owner , ownerLabels map [string ]string ) bool {
129
+ func OwnersIntersect (targets []Owner , apiservice * apiregistrationv1.APIService ) bool {
130
+ ownerLabels := apiservice .GetLabels ()
129
131
if len (ownerLabels ) == 0 {
130
132
// Resources with no owners are not adoptable
133
+ log .Debugf ("Did not contain labels for apiservice %v" , apiservice .GetName ())
134
+ return false
135
+ }
136
+
137
+ svcOwnerKind , ok := ownerLabels [OwnerKind ]
138
+ if ! ok {
139
+ log .Warnf ("missing owner kind for apiservice %v" , apiservice .GetName ())
140
+ return false
141
+ }
142
+ svcOwnerNamespace , ok := ownerLabels [OwnerNamespaceKey ]
143
+ if ! ok {
144
+ log .Warnf ("missing owner namespace for apiservice %v" , apiservice .GetName ())
145
+ return false
146
+ }
147
+ svcOwnerName , ok := ownerLabels [OwnerKey ]
148
+ if ! ok {
149
+ log .Warnf ("missing owner name for apiservice %v" , apiservice .GetName ())
131
150
return false
132
151
}
133
152
134
153
for _ , target := range targets {
135
- if ownerLabels [OwnerKind ] == target .GetObjectKind ().GroupVersionKind ().Kind &&
136
- ownerLabels [OwnerNamespaceKey ] == target .GetNamespace () &&
137
- ownerLabels [OwnerKey ] == target .GetName () {
154
+ if err := InferGroupVersionKind (target ); err != nil {
155
+ log .Warnf ("GVK infer failed for %v: %v" , target , err )
156
+ return false
157
+ }
158
+ if svcOwnerKind == target .GetObjectKind ().GroupVersionKind ().Kind &&
159
+ svcOwnerNamespace == target .GetNamespace () &&
160
+ svcOwnerName == target .GetName () {
138
161
return true
139
162
}
140
163
}
0 commit comments