From bd9c04cf5d79b96c43da9fc513aec143fb0392e3 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 23 Sep 2016 17:48:48 -0700 Subject: [PATCH] Move openapi output to a flag rather than tag --- Makefile.generated_files | 2 + .../go2idl/openapi-gen/generators/openapi.go | 37 +++++-------------- pkg/generated/openapi/doc.go | 1 - 3 files changed, 11 insertions(+), 29 deletions(-) diff --git a/Makefile.generated_files b/Makefile.generated_files index df1c34da372..59f916d56f6 100644 --- a/Makefile.generated_files +++ b/Makefile.generated_files @@ -296,6 +296,7 @@ $(DEEPCOPY_GEN): # The result file, in each pkg, of open-api generation. OPENAPI_BASENAME := $(GENERATED_FILE_PREFIX)openapi OPENAPI_FILENAME := $(OPENAPI_BASENAME).go +OPENAPI_OUTPUT_PKG := pkg/generated/openapi # The tool used to generate open apis. OPENAPI_GEN := $(BIN_DIR)/openapi-gen @@ -321,6 +322,7 @@ gen_openapi: $(OPENAPI_FILES) --v $(KUBE_VERBOSE) \ --logtostderr \ -i $$(cat $(META_DIR)/$(OPENAPI_GEN).todo | paste -sd, -) \ + -p $(PRJ_SRC_PATH)/$(OPENAPI_OUTPUT_PKG) \ -O $(OPENAPI_BASENAME); \ fi diff --git a/cmd/libs/go2idl/openapi-gen/generators/openapi.go b/cmd/libs/go2idl/openapi-gen/generators/openapi.go index f2e8dec5353..497fe54b442 100644 --- a/cmd/libs/go2idl/openapi-gen/generators/openapi.go +++ b/cmd/libs/go2idl/openapi-gen/generators/openapi.go @@ -30,7 +30,6 @@ import ( "k8s.io/gengo/namer" "k8s.io/gengo/types" "k8s.io/kubernetes/pkg/genericapiserver/openapi/common" - "k8s.io/kubernetes/pkg/util/sets" "github.com/golang/glog" ) @@ -42,8 +41,6 @@ const tagName = "k8s:openapi-gen" const ( tagValueTrue = "true" tagValueFalse = "false" - // Should only be used only for test - tagTargetType = "target" ) func hasOpenAPITagValue(comments []string, value string) bool { @@ -77,7 +74,6 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat if err != nil { glog.Fatalf("Failed loading boilerplate: %v", err) } - inputs := sets.NewString(context.Inputs...) header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( ` @@ -85,32 +81,20 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat `)...) - targets := []*types.Package{} - for i := range inputs { - glog.V(5).Infof("considering pkg %q", i) - pkg, ok := context.Universe[i] - if !ok { - // If the input had no Go files, for example. - continue - } - if hasOpenAPITagValue(pkg.Comments, tagTargetType) || hasOpenAPITagValue(pkg.DocComments, tagTargetType) { - glog.V(5).Infof("target package : %q", pkg) - targets = append(targets, pkg) - } + if err := context.AddDir(arguments.OutputPackagePath); err != nil { + glog.Fatalf("Failed to load output package: %v", err) } - switch len(targets) { - case 0: - // If no target package found, that means the generated file in target package is up to date - // and build excluded the target package. - return generator.Packages{} - case 1: - pkg := targets[0] - return generator.Packages{&generator.DefaultPackage{ + pkg := context.Universe[arguments.OutputPackagePath] + if pkg == nil { + glog.Fatalf("Got nil output package: %v", err) + } + return generator.Packages{ + &generator.DefaultPackage{ PackageName: strings.Split(filepath.Base(pkg.Path), ".")[0], PackagePath: pkg.Path, HeaderText: header, GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { - return []generator.Generator{NewOpenAPIGen(arguments.OutputFileBaseName, targets[0], context)} + return []generator.Generator{NewOpenAPIGen(arguments.OutputFileBaseName, pkg, context)} }, FilterFunc: func(c *generator.Context, t *types.Type) bool { // There is a conflict between this codegen and codecgen, we should avoid types generated for codecgen @@ -127,9 +111,6 @@ func Packages(context *generator.Context, arguments *args.GeneratorArgs) generat return false }, }, - } - default: - glog.Fatalf("Duplicate target type found: %v", targets) } return generator.Packages{} } diff --git a/pkg/generated/openapi/doc.go b/pkg/generated/openapi/doc.go index cd40eb2533a..c3a444ea826 100644 --- a/pkg/generated/openapi/doc.go +++ b/pkg/generated/openapi/doc.go @@ -15,5 +15,4 @@ limitations under the License. */ // openapi generated definitions. -// +k8s:openapi-gen=target package openapi