added a hidden openapi info command

This commit is contained in:
Natasha Sarkar
2020-10-16 13:53:42 -07:00
parent 7e04be9ec6
commit a4f1f0841e
8 changed files with 94 additions and 8 deletions

View File

@@ -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
)

View File

@@ -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")

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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:
( \

14
kyaml/hack/fetchOpenApiData.sh Executable file
View File

@@ -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

View File

@@ -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 }"

View File

@@ -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