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{}) }