From a4f1f0841e9c6718c01e628f68c1f59a6e4ea71d Mon Sep 17 00:00:00 2001 From: Natasha Sarkar Date: Fri, 16 Oct 2020 13:53:42 -0700 Subject: [PATCH] added a hidden openapi info command --- kustomize/go.mod | 9 ++++-- kustomize/internal/commands/commands.go | 2 ++ .../internal/commands/openapi/info/info.go | 28 +++++++++++++++++++ .../internal/commands/openapi/openapi.go | 27 ++++++++++++++++++ kyaml/Makefile | 4 +-- kyaml/hack/fetchOpenApiData.sh | 14 ++++++++++ kyaml/openapi/kubernetesapi/openapiinfo.go | 8 ++++++ releasing/README.md | 10 +++++-- 8 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 kustomize/internal/commands/openapi/info/info.go create mode 100644 kustomize/internal/commands/openapi/openapi.go create mode 100755 kyaml/hack/fetchOpenApiData.sh create mode 100644 kyaml/openapi/kubernetesapi/openapiinfo.go diff --git a/kustomize/go.mod b/kustomize/go.mod index d49300a71..cf3a855f6 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -10,6 +10,7 @@ require ( k8s.io/client-go v0.17.3 sigs.k8s.io/kustomize/api v0.6.3 sigs.k8s.io/kustomize/cmd/config v0.8.2 + sigs.k8s.io/kustomize/kyaml v0.9.2 sigs.k8s.io/yaml v1.2.0 ) @@ -19,6 +20,8 @@ exclude ( sigs.k8s.io/kustomize/cmd/config v0.2.0 ) -replace sigs.k8s.io/kustomize/api v0.6.3 => ../api - -replace sigs.k8s.io/kustomize/cmd/config v0.8.2 => ../cmd/config +replace ( + sigs.k8s.io/kustomize/api v0.6.3 => ../api + sigs.k8s.io/kustomize/cmd/config v0.8.2 => ../cmd/config + sigs.k8s.io/kustomize/kyaml v0.9.2 => ../kyaml +) diff --git a/kustomize/internal/commands/commands.go b/kustomize/internal/commands/commands.go index 5cb62fb8b..1bf185f37 100644 --- a/kustomize/internal/commands/commands.go +++ b/kustomize/internal/commands/commands.go @@ -19,6 +19,7 @@ import ( "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/build" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/create" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit" + "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/openapi" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/version" ) @@ -43,6 +44,7 @@ See https://sigs.k8s.io/kustomize edit.NewCmdEdit(fSys, v, uf), create.NewCmdCreate(fSys, uf), version.NewCmdVersion(stdOut), + openapi.NewCmdOpenAPI(stdOut), ) configcobra.AddCommands(c, "kustomize") diff --git a/kustomize/internal/commands/openapi/info/info.go b/kustomize/internal/commands/openapi/info/info.go new file mode 100644 index 000000000..a3534d032 --- /dev/null +++ b/kustomize/internal/commands/openapi/info/info.go @@ -0,0 +1,28 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package info + +import ( + "fmt" + "io" + + "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi" +) + +// NewCmdInfo makes a new info command. +func NewCmdInfo(w io.Writer) *cobra.Command { + + infoCmd := cobra.Command{ + Use: "info", + Short: "Prints the `info` field from the kubernetes OpenAPI data", + Example: `kustomize openapi info`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Fprintln(w, kubernetesapi.Info) + }, + Hidden: true, + } + + return &infoCmd +} diff --git a/kustomize/internal/commands/openapi/openapi.go b/kustomize/internal/commands/openapi/openapi.go new file mode 100644 index 000000000..de5c0dc0d --- /dev/null +++ b/kustomize/internal/commands/openapi/openapi.go @@ -0,0 +1,27 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package openapi + +import ( + "io" + + "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/cmd/config/configcobra" + "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/openapi/info" +) + +// NewCmdOpenAPI makes a new openapi command. +func NewCmdOpenAPI(w io.Writer) *cobra.Command { + + openApiCmd := &cobra.Command{ + Use: "openapi", + Short: "Commands for interacting with the OpenAPI data", + Example: `kustomize openapi info`, + } + + openApiCmd.AddCommand(info.NewCmdInfo(w)) + configcobra.AddCommands(openApiCmd, "openapi") + + return openApiCmd +} diff --git a/kyaml/Makefile b/kyaml/Makefile index 87008eb4e..bbb7fd563 100644 --- a/kyaml/Makefile +++ b/kyaml/Makefile @@ -36,9 +36,7 @@ vet: go vet ./... openapi: - (which $(GOPATH)/bin/go-bindata || go get -u github.com/go-bindata/go-bindata/...) - $(GOPATH)/bin/go-bindata --pkg kubernetesapi -o openapi/kubernetesapi/swagger.go openapi/kubernetesapi/swagger.json - $(GOPATH)/bin/go-bindata --pkg kustomizationapi -o openapi/kustomizationapi/swagger.go openapi/kustomizationapi/swagger.json + ./hack/fetchOpenApiData.sh $(MYGOBIN)/kind: ( \ diff --git a/kyaml/hack/fetchOpenApiData.sh b/kyaml/hack/fetchOpenApiData.sh new file mode 100755 index 000000000..0a8e080dc --- /dev/null +++ b/kyaml/hack/fetchOpenApiData.sh @@ -0,0 +1,14 @@ +if ! command -v jq &> /dev/null ; then + echo Please install jq + echo on ubuntu: sudo apt-get install jq + exit 1 +fi + +GOPATH=$(go env GOPATH) + +OPENAPIINFO=$(jq -r '.info' openapi/kubernetesapi/swagger.json | sed 's/[\" *]//g' | tr -d '\n') +sed -i "s/Info = \".*\"/Info = \"$OPENAPIINFO\"/g" 'openapi/kubernetesapi/openapiinfo.go' + +(go get -u github.com/go-bindata/go-bindata/...) +$GOPATH/bin/go-bindata --pkg kubernetesapi -o openapi/kubernetesapi/swagger.go openapi/kubernetesapi/swagger.json +$GOPATH/bin/go-bindata --pkg kustomizationapi -o openapi/kustomizationapi/swagger.go openapi/kustomizationapi/swagger.json diff --git a/kyaml/openapi/kubernetesapi/openapiinfo.go b/kyaml/openapi/kubernetesapi/openapiinfo.go new file mode 100644 index 000000000..0248f17bb --- /dev/null +++ b/kyaml/openapi/kubernetesapi/openapiinfo.go @@ -0,0 +1,8 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package kubernetesapi + +const Info = "{ title:Kubernetes, version:v1.17.0 }" + + diff --git a/releasing/README.md b/releasing/README.md index 0b0c7b3d6..8b2855dec 100644 --- a/releasing/README.md +++ b/releasing/README.md @@ -30,8 +30,14 @@ The dependencies determine the release order: Thus, do `kyaml` first, then `cli-utils`, etc. #### Consider fetching new OpenAPI data -The Kubernetes OpenAPI data changes no more frequently than once per quarter. Instructions -on how to get a new OpenAPI sample can be found in the +The Kubernetes OpenAPI data changes no more frequently than once per quarter. +You can check the current version that kustomize is using with the +following command. +``` +kustomize openapi info +``` + +Instructions on how to get a new OpenAPI sample can be found in the [OpenAPI Readme]. #### Establish clean state