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)
}
var schemeVersion string
if *groupVersion == "" || *groupVersion == "/" {
// This occurs when we generate deep-copy for internal version.
schemeVersion = ""
} else {
schemeVersion = *groupVersion
}
versionPath := pkgPath(group, version)
generator := kruntime.NewConversionGenerator(api.Scheme.Raw(), versionPath)
apiShort := generator.AddImport(path.Join(pkgBase, "api"))
generator.AddImport(path.Join(pkgBase, "api/resource"))
// TODO(wojtek-t): Change the overwrites to a flag.
generator.OverwritePackage(version, "")
for _, knownType := range api.Scheme.KnownTypes(*groupVersion) {
for _, knownType := range api.Scheme.KnownTypes(schemeVersion) {
if knownType.PkgPath() != versionPath {
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)
}
}

View File

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

View File

@ -24,6 +24,7 @@ import (
"sort"
"strings"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/conversion"
"k8s.io/kubernetes/pkg/util/sets"
)
@ -86,10 +87,20 @@ func (g *conversionGenerator) AddImport(pkg string) string {
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()
// 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 {
return fmt.Errorf("cannot create an object of type %v in internal version", kind)
}