Generate conversions/deep-copies for experimental. Currently we make (and register) duplicate functions but this is benign.
This commit is contained in:
@@ -22,9 +22,12 @@ import (
|
||||
"os"
|
||||
"path"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/v1"
|
||||
_ "k8s.io/kubernetes/pkg/expapi"
|
||||
_ "k8s.io/kubernetes/pkg/expapi/v1"
|
||||
pkg_runtime "k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
|
||||
@@ -32,9 +35,11 @@ import (
|
||||
flag "github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
const pkgBase = "k8s.io/kubernetes/pkg"
|
||||
|
||||
var (
|
||||
functionDest = flag.StringP("funcDest", "f", "-", "Output for conversion functions; '-' means stdout")
|
||||
version = flag.StringP("version", "v", "v1", "Version for conversion.")
|
||||
groupVersion = flag.StringP("version", "v", "api/v1", "groupPath/version for conversion.")
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -53,13 +58,20 @@ func main() {
|
||||
funcOut = file
|
||||
}
|
||||
|
||||
generator := pkg_runtime.NewConversionGenerator(api.Scheme.Raw(), path.Join("k8s.io/kubernetes/pkg/api", *version))
|
||||
apiShort := generator.AddImport("k8s.io/kubernetes/pkg/api")
|
||||
generator.AddImport("k8s.io/kubernetes/pkg/api/resource")
|
||||
group, version := path.Split(*groupVersion)
|
||||
group = strings.TrimRight(group, "/")
|
||||
|
||||
versionPath := path.Join(pkgBase, group, version)
|
||||
generator := pkg_runtime.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(*version) {
|
||||
if err := generator.GenerateConversionsForType(*version, knownType); err != nil {
|
||||
generator.OverwritePackage(version, "")
|
||||
for _, knownType := range api.Scheme.KnownTypes(version) {
|
||||
if !strings.HasPrefix(knownType.PkgPath(), versionPath) {
|
||||
continue
|
||||
}
|
||||
if err := generator.GenerateConversionsForType(version, knownType); err != nil {
|
||||
glog.Errorf("error while generating conversion functions for %v: %v", knownType, err)
|
||||
}
|
||||
}
|
||||
|
@@ -25,6 +25,8 @@ import (
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/v1"
|
||||
_ "k8s.io/kubernetes/pkg/expapi"
|
||||
_ "k8s.io/kubernetes/pkg/expapi/v1"
|
||||
pkg_runtime "k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
|
||||
@@ -32,9 +34,11 @@ import (
|
||||
flag "github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
const pkgBase = "k8s.io/kubernetes/pkg"
|
||||
|
||||
var (
|
||||
functionDest = flag.StringP("func-dest", "f", "-", "Output for deep copy functions; '-' means stdout")
|
||||
version = flag.StringP("version", "v", "v1", "Version for deep copies.")
|
||||
functionDest = flag.StringP("funcDest", "f", "-", "Output for deep copy functions; '-' means stdout")
|
||||
groupVersion = flag.StringP("version", "v", "", "groupPath/version for deep copies.")
|
||||
overwrites = flag.StringP("overwrites", "o", "", "Comma-separated overwrites for package names")
|
||||
)
|
||||
|
||||
@@ -54,15 +58,15 @@ func main() {
|
||||
funcOut = file
|
||||
}
|
||||
|
||||
knownVersion := *version
|
||||
group, version := path.Split(*groupVersion)
|
||||
group = strings.TrimRight(group, "/")
|
||||
registerTo := "api.Scheme"
|
||||
if knownVersion == "api" {
|
||||
knownVersion = api.Scheme.Raw().InternalVersion
|
||||
if *groupVersion == "api/" {
|
||||
registerTo = "Scheme"
|
||||
}
|
||||
pkgPath := path.Join("k8s.io/kubernetes/pkg/api", knownVersion)
|
||||
generator := pkg_runtime.NewDeepCopyGenerator(api.Scheme.Raw(), pkgPath, util.NewStringSet("k8s.io/kubernetes"))
|
||||
generator.AddImport("k8s.io/kubernetes/pkg/api")
|
||||
versionPath := path.Join(pkgBase, group, version)
|
||||
generator := pkg_runtime.NewDeepCopyGenerator(api.Scheme.Raw(), versionPath, util.NewStringSet("k8s.io/kubernetes"))
|
||||
generator.AddImport(path.Join(pkgBase, "api"))
|
||||
|
||||
if len(*overwrites) > 0 {
|
||||
for _, overwrite := range strings.Split(*overwrites, ",") {
|
||||
@@ -73,7 +77,10 @@ func main() {
|
||||
generator.OverwritePackage(vals[0], vals[1])
|
||||
}
|
||||
}
|
||||
for _, knownType := range api.Scheme.KnownTypes(knownVersion) {
|
||||
for _, knownType := range api.Scheme.KnownTypes(version) {
|
||||
if !strings.HasPrefix(knownType.PkgPath(), versionPath) {
|
||||
continue
|
||||
}
|
||||
if err := generator.AddType(knownType); err != nil {
|
||||
glog.Errorf("error while generating deep copy functions for %v: %v", knownType, err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user