mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 00:52:55 +00:00
added support for multiple kubernetes openapi schemas
This commit is contained in:
14
kyaml/openapi/scripts/fetchSchemaFromCluster.sh
Executable file
14
kyaml/openapi/scripts/fetchSchemaFromCluster.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2020 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
MYGOBIN=$(go env GOPATH)/bin
|
||||
VERSION=$1
|
||||
|
||||
cp $HOME/.kube/config /tmp/kubeconfig.txt | true
|
||||
$MYGOBIN/kind create cluster --image kindest/node:$VERSION --name=getopenapidata
|
||||
$MYGOBIN/kpt live fetch-k8s-schema --pretty-print > /tmp/new_swagger.json
|
||||
$MYGOBIN/kind delete cluster --name=getopenapidata
|
||||
cp /tmp/kubeconfig.txt $HOME/.kube/config | true
|
||||
mkdir -p kubernetesapi/"${VERSION//.}"
|
||||
cp /tmp/new_swagger.json kubernetesapi/"${VERSION//.}"/swagger.json
|
||||
11
kyaml/openapi/scripts/generateSwaggerDotGo.sh
Executable file
11
kyaml/openapi/scripts/generateSwaggerDotGo.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2020 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
MYGOBIN=$(go env GOPATH)/bin
|
||||
VERSION=$1
|
||||
|
||||
$MYGOBIN/go-bindata \
|
||||
--pkg "${VERSION//.}" \
|
||||
-o kubernetesapi/"${VERSION//.}"/swagger.go \
|
||||
kubernetesapi/"${VERSION//.}"/swagger.json
|
||||
84
kyaml/openapi/scripts/makeOpenApiInfoDotGo.sh
Executable file
84
kyaml/openapi/scripts/makeOpenApiInfoDotGo.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2020 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# This will read from the directory kubernetesapi
|
||||
# and use subdirectory names to generate
|
||||
# kubernetesapi/openapiinfo.go
|
||||
#
|
||||
# This script should only be run after the
|
||||
# swagger.json and swagger.go files are generated.
|
||||
|
||||
set -e
|
||||
|
||||
if ! command -v jq &> /dev/null ; then
|
||||
echo Please install jq
|
||||
echo on ubuntu: sudo apt-get install jq
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info_list=()
|
||||
version_list=()
|
||||
|
||||
V=`ls kubernetesapi | grep v.*`
|
||||
for VERSION in $V
|
||||
do
|
||||
openapiinfo=$(\
|
||||
jq -r '.info' kubernetesapi/$VERSION/swagger.json | \
|
||||
sed 's/[\" *]//g' | \
|
||||
tr -d '\n' )
|
||||
info_list+=( $openapiinfo )
|
||||
version_list+=( ${VERSION} )
|
||||
done
|
||||
|
||||
|
||||
# add imports to openapiinfo.go
|
||||
cat <<EOF >kubernetesapi/openapiinfo.go
|
||||
// Copyright 2020 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Code generated by $0; DO NOT EDIT.
|
||||
|
||||
package kubernetesapi
|
||||
|
||||
import (
|
||||
EOF
|
||||
|
||||
for version in ${version_list[@]}
|
||||
do
|
||||
cat <<EOF >>kubernetesapi/openapiinfo.go
|
||||
"sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/$version"
|
||||
EOF
|
||||
done
|
||||
|
||||
# add info string for `kustomize openapi info` command
|
||||
OPEN_API_INFO=`echo ${info_list[@]} | tr " " ","`
|
||||
cat <<EOF >>kubernetesapi/openapiinfo.go
|
||||
)
|
||||
|
||||
const Info = "$OPEN_API_INFO"
|
||||
EOF
|
||||
|
||||
# add map for `initSchema` in openapi.go to use
|
||||
cat <<EOF >>kubernetesapi/openapiinfo.go
|
||||
|
||||
var OpenApiMustAsset = map[string]func(string)[]byte{
|
||||
EOF
|
||||
|
||||
latest=""
|
||||
for version in ${version_list[@]}
|
||||
do
|
||||
latest=$version
|
||||
cat <<EOF >>kubernetesapi/openapiinfo.go
|
||||
"$version": $version.MustAsset,
|
||||
EOF
|
||||
done
|
||||
|
||||
# add latest version to be used as a default
|
||||
cat <<EOF >>kubernetesapi/openapiinfo.go
|
||||
}
|
||||
|
||||
const DefaultOpenApi = "$latest"
|
||||
EOF
|
||||
|
||||
|
||||
Reference in New Issue
Block a user