Skip to content

Commit fd69001

Browse files
committed
Fix defaulting for native types
1 parent 4c487b0 commit fd69001

File tree

1 file changed

+13
-1
lines changed
  • staging/src/k8s.io/apiserver/pkg/admission/plugin/policy/mutating

1 file changed

+13
-1
lines changed

staging/src/k8s.io/apiserver/pkg/admission/plugin/policy/mutating/dispatcher.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
k8serrors "k8s.io/apimachinery/pkg/api/errors"
2828
"k8s.io/apimachinery/pkg/api/meta"
2929
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3031
"k8s.io/apimachinery/pkg/runtime/schema"
3132
"k8s.io/apimachinery/pkg/types"
3233
"k8s.io/apiserver/pkg/admission"
@@ -249,9 +250,20 @@ func (d *dispatcher) dispatchOne(
249250
return err
250251
}
251252

253+
switch versionedAttributes.VersionedObject.(type) {
254+
case *unstructured.Unstructured:
255+
// No conversion needed before defaulting for the patch object if the admitted object is unstructured.
256+
default:
257+
// Before defaulting, if the admitted object is a typed object, convert unstructured patch result back to a typed object.
258+
newVersionedObject, err = o.GetObjectConvertor().ConvertToVersion(newVersionedObject, versionedAttributes.GetKind().GroupVersion())
259+
if err != nil {
260+
return err
261+
}
262+
}
263+
o.GetObjectDefaulter().Default(newVersionedObject)
264+
252265
versionedAttributes.Dirty = true
253266
versionedAttributes.VersionedObject = newVersionedObject
254-
o.GetObjectDefaulter().Default(newVersionedObject)
255267
return nil
256268
}
257269

0 commit comments

Comments
 (0)