Refactor pkg/kubelet/config

This commit is contained in:
Wojciech Tyczynski 2015-03-23 10:29:46 +01:00
parent ef758881d1
commit b395c40e19
3 changed files with 15 additions and 19 deletions

View File

@ -123,7 +123,7 @@ func tryDecodePodList(data []byte, source string, isFile bool) (parsed bool, pod
return true, *newPods, err 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 // TODO: should be api.Scheme.Decode
// This is awful. DecodeInto() expects to find an APIObject, which // This is awful. DecodeInto() expects to find an APIObject, which
// Manifest is not. We keep reading manifest for now for compat, but // 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 { if err = api.Scheme.Convert(&newManifest, &pod); err != nil {
return true, manifest, pod, err return true, manifest, pod, err
} }
if err = applyDefaults(&pod, source, isFile); err != nil {
return true, manifest, pod, err
}
// Success. // Success.
return true, manifest, pod, nil 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 // TODO: should be api.Scheme.Decode
// See the comment in tryDecodeSingle(). // See the comment in tryDecodeSingle().
if err = yaml.Unmarshal(data, &manifests); err != nil { 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 { if err = api.Scheme.Convert(&list, &pods); err != nil {
return true, manifests, pods, err 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. // Success.
return true, manifests, pods, nil return true, manifests, pods, nil
} }

View File

@ -138,16 +138,12 @@ func extractFromFile(filename string) (pod api.Pod, err error) {
return pod, err return pod, err
} }
parsed, _, pod, manifestErr := tryDecodeSingleManifest(data) parsed, _, pod, manifestErr := tryDecodeSingleManifest(data, filename, true)
if parsed { if parsed {
if manifestErr != nil { if manifestErr != nil {
// It parsed but could not be used. // It parsed but could not be used.
return pod, manifestErr return pod, manifestErr
} }
// It parsed!
if err = applyDefaults(&pod, filename, true); err != nil {
return pod, err
}
return pod, nil return pod, nil
} }

View File

@ -78,22 +78,19 @@ func (s *sourceURL) extractFromURL() error {
s.data = data s.data = data
// First try as if it's a single manifest // 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 parsed {
if singleErr != nil { if singleErr != nil {
// It parsed but could not be used. // It parsed but could not be used.
return singleErr return singleErr
} }
// It parsed! // It parsed!
if err = applyDefaults(&pod, s.url, false); err != nil {
return err
}
s.updates <- kubelet.PodUpdate{[]api.Pod{pod}, kubelet.SET, kubelet.HTTPSource} s.updates <- kubelet.PodUpdate{[]api.Pod{pod}, kubelet.SET, kubelet.HTTPSource}
return nil return nil
} }
// That didn't work, so try an array of manifests. // 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 parsed {
if multiErr != nil { if multiErr != nil {
// It parsed but could not be used. // It parsed but could not be used.
@ -106,13 +103,7 @@ func (s *sourceURL) extractFromURL() error {
if len(manifests) == 0 && len(manifest.Version) != 0 { if len(manifests) == 0 && len(manifest.Version) != 0 {
return singleErr return singleErr
} }
// Assume it parsed. // It parsed!
for i := range pods.Items {
pod := &pods.Items[i]
if err = applyDefaults(pod, s.url, false); err != nil {
return err
}
}
s.updates <- kubelet.PodUpdate{pods.Items, kubelet.SET, kubelet.HTTPSource} s.updates <- kubelet.PodUpdate{pods.Items, kubelet.SET, kubelet.HTTPSource}
return nil return nil
} }