package api import ( "errors" "fmt" kapi "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/runtime" ) // AddObjectsToTemplate adds the objects to the template using the target versions to choose the conversion destination func AddObjectsToTemplate(template *Template, objects []runtime.Object, targetVersions ...unversioned.GroupVersion) error { for i := range objects { obj := objects[i] if obj == nil { return errors.New("cannot add a nil object to a template") } kind, _, err := kapi.Scheme.ObjectKind(obj) if err != nil { return err } var targetVersion *unversioned.GroupVersion for j := range targetVersions { possibleVersion := targetVersions[j] if kind.Group == possibleVersion.Group { targetVersion = &possibleVersion break } } if targetVersion == nil { return fmt.Errorf("no target version found for object[%d], kind %v in %v", i, kind, targetVersions) } wrappedObject := runtime.NewEncodable(kapi.Codecs.LegacyCodec(*targetVersion), obj) template.Objects = append(template.Objects, wrappedObject) } return nil }