update generators for groupVersion

This commit is contained in:
deads2k 2015-11-19 09:24:16 -05:00
parent e0b7f52633
commit 47e496364d
3 changed files with 25 additions and 5 deletions

View File

@ -92,17 +92,25 @@ func main() {
glog.Fatalf("Error while writing package line: %v", err) glog.Fatalf("Error while writing package line: %v", err)
} }
var schemeVersion string
if *groupVersion == "" || *groupVersion == "/" {
// This occurs when we generate deep-copy for internal version.
schemeVersion = ""
} else {
schemeVersion = *groupVersion
}
versionPath := pkgPath(group, version) versionPath := pkgPath(group, version)
generator := kruntime.NewConversionGenerator(api.Scheme.Raw(), versionPath) generator := kruntime.NewConversionGenerator(api.Scheme.Raw(), versionPath)
apiShort := generator.AddImport(path.Join(pkgBase, "api")) apiShort := generator.AddImport(path.Join(pkgBase, "api"))
generator.AddImport(path.Join(pkgBase, "api/resource")) generator.AddImport(path.Join(pkgBase, "api/resource"))
// TODO(wojtek-t): Change the overwrites to a flag. // TODO(wojtek-t): Change the overwrites to a flag.
generator.OverwritePackage(version, "") generator.OverwritePackage(version, "")
for _, knownType := range api.Scheme.KnownTypes(*groupVersion) { for _, knownType := range api.Scheme.KnownTypes(schemeVersion) {
if knownType.PkgPath() != versionPath { if knownType.PkgPath() != versionPath {
continue continue
} }
if err := generator.GenerateConversionsForType(version, knownType); err != nil { if err := generator.GenerateConversionsForType(*groupVersion, knownType); err != nil {
glog.Errorf("Error while generating conversion functions for %v: %v", knownType, err) glog.Errorf("Error while generating conversion functions for %v: %v", knownType, err)
} }
} }

View File

@ -125,8 +125,9 @@ func main() {
generator.OverwritePackage(vals[0], vals[1]) generator.OverwritePackage(vals[0], vals[1])
} }
} }
var schemeVersion string var schemeVersion string
if version == "" { if *groupVersion == "" || *groupVersion == "/" {
// This occurs when we generate deep-copy for internal version. // This occurs when we generate deep-copy for internal version.
schemeVersion = "" schemeVersion = ""
} else { } else {

View File

@ -24,6 +24,7 @@ import (
"sort" "sort"
"strings" "strings"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/conversion"
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/sets"
) )
@ -86,10 +87,20 @@ func (g *conversionGenerator) AddImport(pkg string) string {
return g.addImportByPath(pkg) return g.addImportByPath(pkg)
} }
func (g *conversionGenerator) GenerateConversionsForType(version string, reflection reflect.Type) error { func (g *conversionGenerator) GenerateConversionsForType(gvString string, reflection reflect.Type) error {
gv, err := unversioned.ParseGroupVersion(gvString)
if err != nil {
return err
}
kind := reflection.Name() kind := reflection.Name()
// TODO this is equivalent to what it did before, but it needs to be fixed for the proper group // TODO this is equivalent to what it did before, but it needs to be fixed for the proper group
internalObj, err := g.scheme.NewObject(g.scheme.InternalVersions[""].String(), kind) internalGV, exists := g.scheme.InternalVersions[gv.Group]
if !exists {
return fmt.Errorf("no internal version for %v", gv)
}
internalObj, err := g.scheme.NewObject(internalGV.String(), kind)
if err != nil { if err != nil {
return fmt.Errorf("cannot create an object of type %v in internal version", kind) return fmt.Errorf("cannot create an object of type %v in internal version", kind)
} }