From 7b8ac280238b2b36a90433a6565af4465eb8ea09 Mon Sep 17 00:00:00 2001 From: Craig Jellick Date: Mon, 11 Dec 2017 21:48:47 -0700 Subject: [PATCH] Explicit group and version for native types No longer guess group and version from package structure --- generator/generator.go | 13 ++++++------- main.go | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/generator/generator.go b/generator/generator.go index 719231e8..f4780cfd 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -3,11 +3,11 @@ package generator import ( "fmt" "path" - "reflect" "strings" "github.com/rancher/norman/generator" "github.com/rancher/norman/types" + "k8s.io/apimachinery/pkg/runtime/schema" ) var ( @@ -28,14 +28,13 @@ func Generate(schemas *types.Schemas) { } } -func GenerateNativeTypes(objs ...interface{}) { - pkgNamePaths := strings.Split(reflect.TypeOf(objs[0]).PkgPath(), "/") - version := pkgNamePaths[len(pkgNamePaths)-1] - group := pkgNamePaths[len(pkgNamePaths)-2] +func GenerateNativeTypes(gv schema.GroupVersion, objs ...interface{}) { + version := gv.Version + group := gv.Group groupPath := group - if group == "core" { - group = "" + if groupPath == "" { + groupPath = "core" } k8sOutputPackage := path.Join(basePackage, baseK8s, groupPath, version) diff --git a/main.go b/main.go index c58e1ac0..7a58bca2 100644 --- a/main.go +++ b/main.go @@ -19,8 +19,8 @@ func main() { generator.Generate(clusterSchema.Schemas) generator.Generate(projectSchema.Schemas) // Group by API group - generator.GenerateNativeTypes(v1.Pod{}, v1.Node{}, v1.ComponentStatus{}, v1.Namespace{}, v1.Event{}) - generator.GenerateNativeTypes(v1beta2.Deployment{}) - generator.GenerateNativeTypes(rbacv1.RoleBinding{}, rbacv1.ClusterRoleBinding{}, rbacv1.ClusterRole{}) - generator.GenerateNativeTypes(extv1beta1.PodSecurityPolicy{}) + generator.GenerateNativeTypes(v1.SchemeGroupVersion, v1.Pod{}, v1.Node{}, v1.ComponentStatus{}, v1.Namespace{}, v1.Event{}) + generator.GenerateNativeTypes(v1beta2.SchemeGroupVersion, v1beta2.Deployment{}) + generator.GenerateNativeTypes(rbacv1.SchemeGroupVersion, rbacv1.RoleBinding{}, rbacv1.ClusterRoleBinding{}, rbacv1.ClusterRole{}) + generator.GenerateNativeTypes(extv1beta1.SchemeGroupVersion, extv1beta1.PodSecurityPolicy{}) }