mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 05:03:09 +00:00
Informer/lister can't use ObjectMeta to detect internal
Instead look for json tags
This commit is contained in:
parent
36acd90aba
commit
9fd9c33264
@ -74,7 +74,7 @@ func generatedBy() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// objectMetaForPackage returns the type of ObjectMeta used by package p.
|
// objectMetaForPackage returns the type of ObjectMeta used by package p.
|
||||||
func objectMetaForPackage(p *types.Package) (*types.Type, error) {
|
func objectMetaForPackage(p *types.Package) (*types.Type, bool, error) {
|
||||||
generatingForPackage := false
|
generatingForPackage := false
|
||||||
for _, t := range p.Types {
|
for _, t := range p.Types {
|
||||||
// filter out types which dont have genclient=true.
|
// filter out types which dont have genclient=true.
|
||||||
@ -84,19 +84,19 @@ func objectMetaForPackage(p *types.Package) (*types.Type, error) {
|
|||||||
generatingForPackage = true
|
generatingForPackage = true
|
||||||
for _, member := range t.Members {
|
for _, member := range t.Members {
|
||||||
if member.Name == "ObjectMeta" {
|
if member.Name == "ObjectMeta" {
|
||||||
return member.Type, nil
|
return member.Type, isInternal(member), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if generatingForPackage {
|
if generatingForPackage {
|
||||||
return nil, fmt.Errorf("unable to find ObjectMeta for any types in package %s", p.Path)
|
return nil, false, fmt.Errorf("unable to find ObjectMeta for any types in package %s", p.Path)
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// isInternal returns true if t's package is k8s.io/kubernetes/pkg/api.
|
// isInternal returns true if the tags for a member do not contain a json tag
|
||||||
func isInternal(t *types.Type) bool {
|
func isInternal(m types.Member) bool {
|
||||||
return t.Name.Package == "k8s.io/kubernetes/pkg/api"
|
return !strings.Contains(m.Tags, "json")
|
||||||
}
|
}
|
||||||
|
|
||||||
func packageForGroup(base string, group clientgentypes.Group) string {
|
func packageForGroup(base string, group clientgentypes.Group) string {
|
||||||
@ -128,7 +128,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
for _, inputDir := range arguments.InputDirs {
|
for _, inputDir := range arguments.InputDirs {
|
||||||
p := context.Universe.Package(inputDir)
|
p := context.Universe.Package(inputDir)
|
||||||
|
|
||||||
objectMeta, err := objectMetaForPackage(p)
|
objectMeta, internal, err := objectMetaForPackage(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatal(err)
|
glog.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
|
|
||||||
var gv clientgentypes.GroupVersion
|
var gv clientgentypes.GroupVersion
|
||||||
|
|
||||||
if isInternal(objectMeta) {
|
if internal {
|
||||||
lastSlash := strings.LastIndex(p.Path, "/")
|
lastSlash := strings.LastIndex(p.Path, "/")
|
||||||
if lastSlash == -1 {
|
if lastSlash == -1 {
|
||||||
glog.Fatalf("error constructing internal group version for package %q", p.Path)
|
glog.Fatalf("error constructing internal group version for package %q", p.Path)
|
||||||
|
@ -87,7 +87,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
for _, inputDir := range arguments.InputDirs {
|
for _, inputDir := range arguments.InputDirs {
|
||||||
p := context.Universe.Package(inputDir)
|
p := context.Universe.Package(inputDir)
|
||||||
|
|
||||||
objectMeta, err := objectMetaForPackage(p)
|
objectMeta, internal, err := objectMetaForPackage(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatal(err)
|
glog.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -99,7 +99,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
var gv clientgentypes.GroupVersion
|
var gv clientgentypes.GroupVersion
|
||||||
var internalGVPkg string
|
var internalGVPkg string
|
||||||
|
|
||||||
if isInternal(objectMeta) {
|
if internal {
|
||||||
lastSlash := strings.LastIndex(p.Path, "/")
|
lastSlash := strings.LastIndex(p.Path, "/")
|
||||||
if lastSlash == -1 {
|
if lastSlash == -1 {
|
||||||
glog.Fatalf("error constructing internal group version for package %q", p.Path)
|
glog.Fatalf("error constructing internal group version for package %q", p.Path)
|
||||||
@ -165,7 +165,7 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
}
|
}
|
||||||
|
|
||||||
// objectMetaForPackage returns the type of ObjectMeta used by package p.
|
// objectMetaForPackage returns the type of ObjectMeta used by package p.
|
||||||
func objectMetaForPackage(p *types.Package) (*types.Type, error) {
|
func objectMetaForPackage(p *types.Package) (*types.Type, bool, error) {
|
||||||
generatingForPackage := false
|
generatingForPackage := false
|
||||||
for _, t := range p.Types {
|
for _, t := range p.Types {
|
||||||
// filter out types which dont have genclient=true.
|
// filter out types which dont have genclient=true.
|
||||||
@ -175,19 +175,19 @@ func objectMetaForPackage(p *types.Package) (*types.Type, error) {
|
|||||||
generatingForPackage = true
|
generatingForPackage = true
|
||||||
for _, member := range t.Members {
|
for _, member := range t.Members {
|
||||||
if member.Name == "ObjectMeta" {
|
if member.Name == "ObjectMeta" {
|
||||||
return member.Type, nil
|
return member.Type, isInternal(member), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if generatingForPackage {
|
if generatingForPackage {
|
||||||
return nil, fmt.Errorf("unable to find ObjectMeta for any types in package %s", p.Path)
|
return nil, false, fmt.Errorf("unable to find ObjectMeta for any types in package %s", p.Path)
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// isInternal returns true if t's package is k8s.io/kubernetes/pkg/api.
|
// isInternal returns true if the tags for a member do not contain a json tag
|
||||||
func isInternal(t *types.Type) bool {
|
func isInternal(m types.Member) bool {
|
||||||
return t.Name.Package == "k8s.io/kubernetes/pkg/api"
|
return !strings.Contains(m.Tags, "json")
|
||||||
}
|
}
|
||||||
|
|
||||||
// listerGenerator produces a file of listers for a given GroupVersion and
|
// listerGenerator produces a file of listers for a given GroupVersion and
|
||||||
|
Loading…
Reference in New Issue
Block a user