diff --git a/hack/godep-save.sh b/hack/godep-save.sh index 86ddecd9c1f..3b7667dbbeb 100755 --- a/hack/godep-save.sh +++ b/hack/godep-save.sh @@ -50,6 +50,9 @@ pushd "${KUBE_ROOT}" > /dev/null if [ ! -e "vendor/k8s.io/kube-aggregator" ]; then ln -s ../../staging/src/k8s.io/kube-aggregator vendor/k8s.io/kube-aggregator fi + if [ ! -e "vendor/k8s.io/kube-apiextensions-server" ]; then + ln -s ../../staging/src/k8s.io/kube-apiextensions-server vendor/k8s.io/kube-apiextensions-server + fi if [ ! -e "vendor/k8s.io/sample-apiserver" ]; then ln -s ../../staging/src/k8s.io/sample-apiserver vendor/k8s.io/sample-apiserver fi diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index f9597a194cd..3f5f9efbe7e 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -30,6 +30,7 @@ kube::golang::server_targets() { cmd/kubeadm cmd/hyperkube vendor/k8s.io/kube-aggregator + vendor/k8s.io/kube-apiextensions-server plugin/cmd/kube-scheduler ) echo "${targets[@]}" diff --git a/hack/make-rules/helpers/cache_go_dirs.sh b/hack/make-rules/helpers/cache_go_dirs.sh index 12e6223f780..27415532659 100755 --- a/hack/make-rules/helpers/cache_go_dirs.sh +++ b/hack/make-rules/helpers/cache_go_dirs.sh @@ -39,7 +39,7 @@ function kfind() { # include the "special" vendor directories which are actually part # of the Kubernetes source tree - generators will use these for # including certain core API concepts. - find -H . ./vendor/k8s.io/apimachinery ./vendor/k8s.io/apiserver ./vendor/k8s.io/kube-aggregator ./vendor/k8s.io/sample-apiserver ./vendor/k8s.io/metrics \ + find -H . ./vendor/k8s.io/apimachinery ./vendor/k8s.io/apiserver ./vendor/k8s.io/kube-aggregator ./vendor/k8s.io/kube-apiextensions-server ./vendor/k8s.io/metrics ./vendor/k8s.io/sample-apiserver \ \( \ -not \( \ \( \ diff --git a/hack/make-rules/test.sh b/hack/make-rules/test.sh index d8155ff3c1e..8cce276e3af 100755 --- a/hack/make-rules/test.sh +++ b/hack/make-rules/test.sh @@ -72,6 +72,9 @@ kube::test::find_dirs() { find ./staging/src/k8s.io/kube-aggregator -name '*_test.go' \ -name '*_test.go' -print0 | xargs -0n1 dirname | sed 's|^\./staging/src/|./vendor/|' | LC_ALL=C sort -u + find ./staging/src/k8s.io/kube-apiextensions-server -name '*_test.go' \ + -name '*_test.go' -print0 | xargs -0n1 dirname | sed 's|^\./staging/src/|./vendor/|' | LC_ALL=C sort -u + find ./staging/src/k8s.io/sample-apiserver -name '*_test.go' \ -name '*_test.go' -print0 | xargs -0n1 dirname | sed 's|^\./staging/src/|./vendor/|' | LC_ALL=C sort -u ) diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index 210ed527ced..3c8d75b6dc1 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -103,3 +103,4 @@ ${informergen} \ # call generation on sub-project for now vendor/k8s.io/kube-aggregator/hack/update-codegen.sh vendor/k8s.io/sample-apiserver/hack/update-codegen.sh +vendor/k8s.io/kube-apiextensions-server/hack/update-codegen.sh diff --git a/hack/verify-codegen.sh b/hack/verify-codegen.sh index 2721e312928..cef0a60d2b0 100755 --- a/hack/verify-codegen.sh +++ b/hack/verify-codegen.sh @@ -26,6 +26,7 @@ kube::golang::setup_env # call verify on sub-project for now vendor/k8s.io/kube-aggregator/hack/verify-codegen.sh vendor/k8s.io/sample-apiserver/hack/verify-codegen.sh +vendor/k8s.io/kube-apiextensions-server/hack/verify-codegen.sh "${KUBE_ROOT}/hack/update-codegen.sh" --verify-only diff --git a/staging/src/k8s.io/kube-apiextensions-server/hack/update-codegen.sh b/staging/src/k8s.io/kube-apiextensions-server/hack/update-codegen.sh new file mode 100755 index 00000000000..23f60f40043 --- /dev/null +++ b/staging/src/k8s.io/kube-apiextensions-server/hack/update-codegen.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# 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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../../../../.. +APIFEDERATOR_ROOT=$(dirname "${BASH_SOURCE}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +if LANG=C sed --help 2>&1 | grep -q GNU; then + SED="sed" +elif which gsed &>/dev/null; then + SED="gsed" +else + echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2 + exit 1 +fi + +# Register function to be called on EXIT to remove generated binary. +function cleanup { + rm -f "${CLIENTGEN:-}" + rm -f "${listergen:-}" + rm -f "${informergen:-}" +} +trap cleanup EXIT + +echo "Building client-gen" +CLIENTGEN="${PWD}/client-gen-binary" +go build -o "${CLIENTGEN}" ./cmd/libs/go2idl/client-gen + +PREFIX=k8s.io/kube-apiextensions-server/pkg/apis +INPUT_BASE="--input-base ${PREFIX}" +INPUT_APIS=( +apiextensions/ +apiextensions/v1alpha1 +) +INPUT="--input ${INPUT_APIS[@]}" +CLIENTSET_PATH="--clientset-path k8s.io/kube-apiextensions-server/pkg/client/clientset" + +${CLIENTGEN} ${INPUT_BASE} ${INPUT} ${CLIENTSET_PATH} --output-base ${KUBE_ROOT}/vendor +${CLIENTGEN} --clientset-name="clientset" ${INPUT_BASE} --input apiextensions/v1alpha1 ${CLIENTSET_PATH} --output-base ${KUBE_ROOT}/vendor + + +echo "Building lister-gen" +listergen="${PWD}/lister-gen" +go build -o "${listergen}" ./cmd/libs/go2idl/lister-gen + +LISTER_INPUT="--input-dirs k8s.io/kube-apiextensions-server/pkg/apis/apiextensions --input-dirs k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1" +LISTER_PATH="--output-package k8s.io/kube-apiextensions-server/pkg/client/listers" +${listergen} ${LISTER_INPUT} ${LISTER_PATH} --output-base ${KUBE_ROOT}/vendor + + +echo "Building informer-gen" +informergen="${PWD}/informer-gen" +go build -o "${informergen}" ./cmd/libs/go2idl/informer-gen + +${informergen} \ + --output-base ${KUBE_ROOT}/vendor \ + --input-dirs k8s.io/kube-apiextensions-server/pkg/apis/apiextensions --input-dirs k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1 \ + --versioned-clientset-package k8s.io/kube-apiextensions-server/pkg/client/clientset/clientset \ + --internal-clientset-package k8s.io/kube-apiextensions-server/pkg/client/clientset/internalclientset \ + --listers-package k8s.io/kube-apiextensions-server/pkg/client/listers \ + --output-package k8s.io/kube-apiextensions-server/pkg/client/informers + "$@" diff --git a/staging/src/k8s.io/kube-apiextensions-server/hack/verify-codegen.sh b/staging/src/k8s.io/kube-apiextensions-server/hack/verify-codegen.sh new file mode 100755 index 00000000000..68c4e2c4d1f --- /dev/null +++ b/staging/src/k8s.io/kube-apiextensions-server/hack/verify-codegen.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# 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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../../../../.. +APIFEDERATOR_ROOT=$(dirname "${BASH_SOURCE}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +DIFFROOT="${APIFEDERATOR_ROOT}/pkg" +TMP_DIFFROOT="${APIFEDERATOR_ROOT}/_tmp/pkg" +_tmp="${APIFEDERATOR_ROOT}/_tmp" + +cleanup() { + rm -rf "${_tmp}" +} +trap "cleanup" EXIT SIGINT + +cleanup + +mkdir -p "${TMP_DIFFROOT}" +cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}" + +"${APIFEDERATOR_ROOT}/hack/update-codegen.sh" +echo "diffing ${DIFFROOT} against freshly generated codegen" +ret=0 +diff -Naupr "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$? +cp -a "${TMP_DIFFROOT}"/* "${DIFFROOT}" +if [[ $ret -eq 0 ]] +then + echo "${DIFFROOT} up to date." +else + echo "${DIFFROOT} is out of date. Please run hack/update-codegen.sh" + exit 1 +fi diff --git a/vendor/k8s.io/kube-apiextensions-server b/vendor/k8s.io/kube-apiextensions-server new file mode 120000 index 00000000000..c1386f12198 --- /dev/null +++ b/vendor/k8s.io/kube-apiextensions-server @@ -0,0 +1 @@ +../../staging/src/k8s.io/kube-apiextensions-server \ No newline at end of file