mirror of https://github.com/k3s-io/k3s
Merge pull request #5784 from wojtek-t/applyDefaultsInTryDecode
Hide applyDefaults method under pkg/kubelet/configpull/6/head
commit
4e3c07543e
|
@ -123,7 +123,7 @@ func tryDecodePodList(data []byte, source string, isFile bool) (parsed bool, pod
|
|||
return true, *newPods, err
|
||||
}
|
||||
|
||||
func tryDecodeSingleManifest(data []byte) (parsed bool, manifest v1beta1.ContainerManifest, pod api.Pod, err error) {
|
||||
func tryDecodeSingleManifest(data []byte, source string, isFile bool) (parsed bool, manifest v1beta1.ContainerManifest, pod api.Pod, err error) {
|
||||
// TODO: should be api.Scheme.Decode
|
||||
// This is awful. DecodeInto() expects to find an APIObject, which
|
||||
// Manifest is not. We keep reading manifest for now for compat, but
|
||||
|
@ -149,11 +149,14 @@ func tryDecodeSingleManifest(data []byte) (parsed bool, manifest v1beta1.Contain
|
|||
if err = api.Scheme.Convert(&newManifest, &pod); err != nil {
|
||||
return true, manifest, pod, err
|
||||
}
|
||||
if err = applyDefaults(&pod, source, isFile); err != nil {
|
||||
return true, manifest, pod, err
|
||||
}
|
||||
// Success.
|
||||
return true, manifest, pod, nil
|
||||
}
|
||||
|
||||
func tryDecodeManifestList(data []byte) (parsed bool, manifests []v1beta1.ContainerManifest, pods api.PodList, err error) {
|
||||
func tryDecodeManifestList(data []byte, source string, isFile bool) (parsed bool, manifests []v1beta1.ContainerManifest, pods api.PodList, err error) {
|
||||
// TODO: should be api.Scheme.Decode
|
||||
// See the comment in tryDecodeSingle().
|
||||
if err = yaml.Unmarshal(data, &manifests); err != nil {
|
||||
|
@ -174,6 +177,12 @@ func tryDecodeManifestList(data []byte) (parsed bool, manifests []v1beta1.Contai
|
|||
if err = api.Scheme.Convert(&list, &pods); err != nil {
|
||||
return true, manifests, pods, err
|
||||
}
|
||||
for i := range pods.Items {
|
||||
pod := &pods.Items[i]
|
||||
if err = applyDefaults(pod, source, isFile); err != nil {
|
||||
return true, manifests, pods, err
|
||||
}
|
||||
}
|
||||
// Success.
|
||||
return true, manifests, pods, nil
|
||||
}
|
||||
|
|
|
@ -138,16 +138,12 @@ func extractFromFile(filename string) (pod api.Pod, err error) {
|
|||
return pod, err
|
||||
}
|
||||
|
||||
parsed, _, pod, manifestErr := tryDecodeSingleManifest(data)
|
||||
parsed, _, pod, manifestErr := tryDecodeSingleManifest(data, filename, true)
|
||||
if parsed {
|
||||
if manifestErr != nil {
|
||||
// It parsed but could not be used.
|
||||
return pod, manifestErr
|
||||
}
|
||||
// It parsed!
|
||||
if err = applyDefaults(&pod, filename, true); err != nil {
|
||||
return pod, err
|
||||
}
|
||||
return pod, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -78,22 +78,19 @@ func (s *sourceURL) extractFromURL() error {
|
|||
s.data = data
|
||||
|
||||
// First try as if it's a single manifest
|
||||
parsed, manifest, pod, singleErr := tryDecodeSingleManifest(data)
|
||||
parsed, manifest, pod, singleErr := tryDecodeSingleManifest(data, s.url, false)
|
||||
if parsed {
|
||||
if singleErr != nil {
|
||||
// It parsed but could not be used.
|
||||
return singleErr
|
||||
}
|
||||
// It parsed!
|
||||
if err = applyDefaults(&pod, s.url, false); err != nil {
|
||||
return err
|
||||
}
|
||||
s.updates <- kubelet.PodUpdate{[]api.Pod{pod}, kubelet.SET, kubelet.HTTPSource}
|
||||
return nil
|
||||
}
|
||||
|
||||
// That didn't work, so try an array of manifests.
|
||||
parsed, manifests, pods, multiErr := tryDecodeManifestList(data)
|
||||
parsed, manifests, pods, multiErr := tryDecodeManifestList(data, s.url, false)
|
||||
if parsed {
|
||||
if multiErr != nil {
|
||||
// It parsed but could not be used.
|
||||
|
@ -106,13 +103,7 @@ func (s *sourceURL) extractFromURL() error {
|
|||
if len(manifests) == 0 && len(manifest.Version) != 0 {
|
||||
return singleErr
|
||||
}
|
||||
// Assume it parsed.
|
||||
for i := range pods.Items {
|
||||
pod := &pods.Items[i]
|
||||
if err = applyDefaults(pod, s.url, false); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// It parsed!
|
||||
s.updates <- kubelet.PodUpdate{pods.Items, kubelet.SET, kubelet.HTTPSource}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue