Commit 8214f7bb authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

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.
parents 17b22cb0 bd6a9604
...@@ -41,6 +41,7 @@ filegroup( ...@@ -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( ...@@ -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 ( ...@@ -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 ...@@ -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( ...@@ -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 ( ...@@ -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. ...@@ -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 ( ...@@ -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 ...@@ -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 ...@@ -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( ...@@ -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 ( ...@@ -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) { ...@@ -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))))
} }
} }
} }
......
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"],
)
/*
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 ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment