mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Merge pull request #45839 from caesarxuchao/client-gen-vendor
Automatic merge from submit-queue let client-gen understand vendor This is extracted from #44784, where we move external api types to k8s.io/api. After the move, the types will locate at vendor/k8s.io/api/xxx. However, gengo index the parsed package using the import path, which is stripped of the vendor/ prefix, so we'll need to strip the vendor/ prefix as necessary in client-gen. This PR doesn't produce any change to the generated clientset yet since all types are still in the kubernetes repo.
This commit is contained in:
commit
8214f7bb29
@ -41,6 +41,7 @@ filegroup(
|
|||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//cmd/libs/go2idl/client-gen/args:all-srcs",
|
"//cmd/libs/go2idl/client-gen/args:all-srcs",
|
||||||
"//cmd/libs/go2idl/client-gen/generators:all-srcs",
|
"//cmd/libs/go2idl/client-gen/generators:all-srcs",
|
||||||
|
"//cmd/libs/go2idl/client-gen/path:all-srcs",
|
||||||
"//cmd/libs/go2idl/client-gen/test_apis/testgroup:all-srcs",
|
"//cmd/libs/go2idl/client-gen/test_apis/testgroup:all-srcs",
|
||||||
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset:all-srcs",
|
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset:all-srcs",
|
||||||
"//cmd/libs/go2idl/client-gen/types:all-srcs",
|
"//cmd/libs/go2idl/client-gen/types:all-srcs",
|
||||||
|
@ -22,6 +22,7 @@ go_library(
|
|||||||
"//cmd/libs/go2idl/client-gen/args:go_default_library",
|
"//cmd/libs/go2idl/client-gen/args:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/generators/fake:go_default_library",
|
"//cmd/libs/go2idl/client-gen/generators/fake:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library",
|
"//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library",
|
||||||
|
"//cmd/libs/go2idl/client-gen/path:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/k8s.io/gengo/args:go_default_library",
|
"//vendor/k8s.io/gengo/args:go_default_library",
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args"
|
clientgenargs "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/args"
|
||||||
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/fake"
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/fake"
|
||||||
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/scheme"
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/generators/scheme"
|
||||||
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path"
|
||||||
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
@ -275,7 +276,8 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat
|
|||||||
|
|
||||||
gvToTypes := map[clientgentypes.GroupVersion][]*types.Type{}
|
gvToTypes := map[clientgentypes.GroupVersion][]*types.Type{}
|
||||||
for gv, inputDir := range customArgs.GroupVersionToInputPath {
|
for gv, inputDir := range customArgs.GroupVersionToInputPath {
|
||||||
p := context.Universe.Package(inputDir)
|
// Package are indexed with the vendor prefix stripped
|
||||||
|
p := context.Universe.Package(path.Vendorless(inputDir))
|
||||||
for n, t := range p.Types {
|
for n, t := range p.Types {
|
||||||
// filter out types which are not included in user specified overrides.
|
// filter out types which are not included in user specified overrides.
|
||||||
typesOverride, ok := includedTypesOverrides[gv]
|
typesOverride, ok := includedTypesOverrides[gv]
|
||||||
|
@ -19,6 +19,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//cmd/libs/go2idl/client-gen/args:go_default_library",
|
"//cmd/libs/go2idl/client-gen/args:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library",
|
"//cmd/libs/go2idl/client-gen/generators/scheme:go_default_library",
|
||||||
|
"//cmd/libs/go2idl/client-gen/path:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/k8s.io/gengo/generator:go_default_library",
|
"//vendor/k8s.io/gengo/generator:go_default_library",
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
"k8s.io/gengo/types"
|
"k8s.io/gengo/types"
|
||||||
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// genFakeForType produces a file for each top-level type.
|
// genFakeForType produces a file for each top-level type.
|
||||||
@ -99,7 +100,7 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
|||||||
}
|
}
|
||||||
|
|
||||||
// allow user to define a group name that's different from the one parsed from the directory.
|
// allow user to define a group name that's different from the one parsed from the directory.
|
||||||
p := c.Universe.Package(g.inputPackage)
|
p := c.Universe.Package(path.Vendorless(g.inputPackage))
|
||||||
if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil {
|
if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil {
|
||||||
groupName = override[0]
|
groupName = override[0]
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
"k8s.io/gengo/types"
|
"k8s.io/gengo/types"
|
||||||
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
|
// genGroup produces a file for a group client, e.g. ExtensionsClient for the extension group.
|
||||||
@ -76,7 +77,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
|||||||
groupName = ""
|
groupName = ""
|
||||||
}
|
}
|
||||||
// allow user to define a group name that's different from the one parsed from the directory.
|
// allow user to define a group name that's different from the one parsed from the directory.
|
||||||
p := c.Universe.Package(g.inputPackage)
|
p := c.Universe.Package(path.Vendorless(g.inputPackage))
|
||||||
if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil {
|
if override := types.ExtractCommentTags("+", p.DocComments)["groupName"]; override != nil {
|
||||||
groupName = override[0]
|
groupName = override[0]
|
||||||
}
|
}
|
||||||
@ -95,7 +96,7 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
|
|||||||
"restDefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
|
"restDefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "DefaultKubernetesUserAgent"}),
|
||||||
"restRESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
"restRESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||||
"restRESTClientFor": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}),
|
"restRESTClientFor": c.Universe.Function(types.Name{Package: "k8s.io/client-go/rest", Name: "RESTClientFor"}),
|
||||||
"SchemeGroupVersion": c.Universe.Variable(types.Name{Package: g.inputPackage, Name: "SchemeGroupVersion"}),
|
"SchemeGroupVersion": c.Universe.Variable(types.Name{Package: path.Vendorless(g.inputPackage), Name: "SchemeGroupVersion"}),
|
||||||
}
|
}
|
||||||
sw.Do(groupInterfaceTemplate, m)
|
sw.Do(groupInterfaceTemplate, m)
|
||||||
sw.Do(groupClientTemplate, m)
|
sw.Do(groupClientTemplate, m)
|
||||||
|
@ -12,6 +12,7 @@ go_library(
|
|||||||
srcs = ["generator_for_scheme.go"],
|
srcs = ["generator_for_scheme.go"],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//cmd/libs/go2idl/client-gen/path:go_default_library",
|
||||||
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
"//cmd/libs/go2idl/client-gen/types:go_default_library",
|
||||||
"//vendor/k8s.io/gengo/generator:go_default_library",
|
"//vendor/k8s.io/gengo/generator:go_default_library",
|
||||||
"//vendor/k8s.io/gengo/namer:go_default_library",
|
"//vendor/k8s.io/gengo/namer:go_default_library",
|
||||||
|
@ -26,6 +26,7 @@ import (
|
|||||||
"k8s.io/gengo/generator"
|
"k8s.io/gengo/generator"
|
||||||
"k8s.io/gengo/namer"
|
"k8s.io/gengo/namer"
|
||||||
"k8s.io/gengo/types"
|
"k8s.io/gengo/types"
|
||||||
|
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/path"
|
||||||
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
clientgentypes "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -66,10 +67,10 @@ func (g *GenScheme) Imports(c *generator.Context) (imports []string) {
|
|||||||
packagePath = filepath.Dir(packagePath)
|
packagePath = filepath.Dir(packagePath)
|
||||||
}
|
}
|
||||||
packagePath = filepath.Join(packagePath, "install")
|
packagePath = filepath.Join(packagePath, "install")
|
||||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s \"%s\"", group.Group.NonEmpty(), packagePath)))
|
imports = append(imports, strings.ToLower(fmt.Sprintf("%s \"%s\"", group.Group.NonEmpty(), path.Vendorless(packagePath))))
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), packagePath)))
|
imports = append(imports, strings.ToLower(fmt.Sprintf("%s%s \"%s\"", group.Group.NonEmpty(), version.NonEmpty(), path.Vendorless(packagePath))))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
27
cmd/libs/go2idl/client-gen/path/BUILD
Normal file
27
cmd/libs/go2idl/client-gen/path/BUILD
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
load(
|
||||||
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
|
"go_library",
|
||||||
|
)
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["path.go"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
)
|
31
cmd/libs/go2idl/client-gen/path/path.go
Normal file
31
cmd/libs/go2idl/client-gen/path/path.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package path
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
// Vendorless removes the longest match of "*/vendor/" from the front of p.
|
||||||
|
// It is useful if a package locates in vendor/, e.g.,
|
||||||
|
// k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1, because gengo
|
||||||
|
// indexes the package with its import path, e.g.,
|
||||||
|
// k8s.io/apimachinery/pkg/apis/meta/v1,
|
||||||
|
func Vendorless(p string) string {
|
||||||
|
if pos := strings.LastIndex(p, "/vendor/"); pos != -1 {
|
||||||
|
return p[pos+len("/vendor/"):]
|
||||||
|
}
|
||||||
|
return p
|
||||||
|
}
|
@ -26,6 +26,7 @@ cmd/kubectl
|
|||||||
cmd/kubelet
|
cmd/kubelet
|
||||||
cmd/libs/go2idl/client-gen
|
cmd/libs/go2idl/client-gen
|
||||||
cmd/libs/go2idl/client-gen/generators
|
cmd/libs/go2idl/client-gen/generators
|
||||||
|
cmd/libs/go2idl/client-gen/path
|
||||||
cmd/libs/go2idl/client-gen/test_apis/testgroup/install
|
cmd/libs/go2idl/client-gen/test_apis/testgroup/install
|
||||||
cmd/libs/go2idl/conversion-gen
|
cmd/libs/go2idl/conversion-gen
|
||||||
cmd/libs/go2idl/deepcopy-gen
|
cmd/libs/go2idl/deepcopy-gen
|
||||||
|
Loading…
Reference in New Issue
Block a user