From 678b958567e70e06da8e3e8d892c6e2493805655 Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Sun, 10 Sep 2023 21:41:01 +0800 Subject: [PATCH] use universal decoder and add a check on default dns Policy of static pod for test --- cmd/kubeadm/app/phases/etcd/local_test.go | 3 +++ cmd/kubeadm/app/util/marshal.go | 19 +++++-------------- cmd/kubeadm/app/util/marshal_test.go | 4 ++-- cmd/kubeadm/app/util/staticpod/utils.go | 4 ++-- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/cmd/kubeadm/app/phases/etcd/local_test.go b/cmd/kubeadm/app/phases/etcd/local_test.go index 5ef1a1be86f..56ab0d0c4f8 100644 --- a/cmd/kubeadm/app/phases/etcd/local_test.go +++ b/cmd/kubeadm/app/phases/etcd/local_test.go @@ -261,6 +261,9 @@ func TestCreateLocalEtcdStaticPodManifestFileWithPatches(t *testing.T) { t.Errorf("Error executing ReadStaticPodFromDisk: %v", err) return } + if pod.Spec.DNSPolicy != "" { + t.Errorf("DNSPolicy should be empty but: %v", pod.Spec.DNSPolicy) + } if _, ok := pod.ObjectMeta.Annotations["patched"]; !ok { t.Errorf("Patches were not applied to %s", kubeadmconstants.Etcd) diff --git a/cmd/kubeadm/app/util/marshal.go b/cmd/kubeadm/app/util/marshal.go index 6be6b87ade8..0226854cf11 100644 --- a/cmd/kubeadm/app/util/marshal.go +++ b/cmd/kubeadm/app/util/marshal.go @@ -55,22 +55,13 @@ func MarshalToYamlForCodecs(obj runtime.Object, gv schema.GroupVersion, codecs s } // UnmarshalFromYaml unmarshals yaml into an object. -func UnmarshalFromYaml(buffer []byte, gv schema.GroupVersion) (runtime.Object, error) { - return UnmarshalFromYamlForCodecs(buffer, gv, clientsetscheme.Codecs) +func UnmarshalFromYaml(buffer []byte) (runtime.Object, error) { + return UnmarshalFromYamlForCodecs(buffer, clientsetscheme.Codecs) } -// UnmarshalFromYamlForCodecs unmarshals yaml into an object using the specified codec -// TODO: Is specifying the gv really needed here? -// TODO: Can we support json out of the box easily here? -func UnmarshalFromYamlForCodecs(buffer []byte, gv schema.GroupVersion, codecs serializer.CodecFactory) (runtime.Object, error) { - const mediaType = runtime.ContentTypeYAML - info, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), mediaType) - if !ok { - return nil, errors.Errorf("unsupported media type %q", mediaType) - } - - decoder := codecs.DecoderToVersion(info.Serializer, gv) - obj, err := runtime.Decode(decoder, buffer) +// UnmarshalFromYamlForCodecs unmarshals yaml into an object using the universal deserializer +func UnmarshalFromYamlForCodecs(buffer []byte, codecs serializer.CodecFactory) (runtime.Object, error) { + obj, _, err := codecs.UniversalDeserializer().Decode(buffer, nil, nil) if err != nil { return nil, errors.Wrapf(err, "failed to decode %s into runtime.Object", buffer) } diff --git a/cmd/kubeadm/app/util/marshal_test.go b/cmd/kubeadm/app/util/marshal_test.go index 4cb2aa3f42e..ed67db46e8c 100644 --- a/cmd/kubeadm/app/util/marshal_test.go +++ b/cmd/kubeadm/app/util/marshal_test.go @@ -84,7 +84,7 @@ func TestMarshalUnmarshalYaml(t *testing.T) { t.Logf("\n%s", bytes) - obj2, err := UnmarshalFromYaml(bytes, corev1.SchemeGroupVersion) + obj2, err := UnmarshalFromYaml(bytes) if err != nil { t.Fatalf("unexpected error marshalling: %v", err) } @@ -144,7 +144,7 @@ func TestMarshalUnmarshalToYamlForCodecs(t *testing.T) { } t.Logf("\n%s", bytes) - obj, err := UnmarshalFromYamlForCodecs(bytes, kubeadmapiv1.SchemeGroupVersion, codecs) + obj, err := UnmarshalFromYamlForCodecs(bytes, codecs) if err != nil { t.Fatalf("unexpected error unmarshalling InitConfiguration: %v", err) } diff --git a/cmd/kubeadm/app/util/staticpod/utils.go b/cmd/kubeadm/app/util/staticpod/utils.go index 4a403eb5a45..251a3f0ea5f 100644 --- a/cmd/kubeadm/app/util/staticpod/utils.go +++ b/cmd/kubeadm/app/util/staticpod/utils.go @@ -190,7 +190,7 @@ func PatchStaticPod(pod *v1.Pod, patchesDir string, output io.Writer) (*v1.Pod, return pod, err } - obj, err := kubeadmutil.UnmarshalFromYaml(patchTarget.Data, v1.SchemeGroupVersion) + obj, err := kubeadmutil.UnmarshalFromYaml(patchTarget.Data) if err != nil { return pod, errors.Wrap(err, "failed to unmarshal patched manifest from YAML") } @@ -233,7 +233,7 @@ func ReadStaticPodFromDisk(manifestPath string) (*v1.Pod, error) { return &v1.Pod{}, errors.Wrapf(err, "failed to read manifest for %q", manifestPath) } - obj, err := kubeadmutil.UnmarshalFromYaml(buf, v1.SchemeGroupVersion) + obj, err := kubeadmutil.UnmarshalFromYaml(buf) if err != nil { return &v1.Pod{}, errors.Errorf("failed to unmarshal manifest for %q from YAML: %v", manifestPath, err) }