Merge pull request #57879 from bowei/gce-gen
Automatic merge from submit-queue (batch tested with PRs 58025, 57112, 57879, 57571, 58062). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Code generation for GCE compute interface Use code generation to "write" most of the GCE cloud provider library. This enables the following: - Consistent interfaces, including handling of the different API versions (GA, alpha, beta) - Efficient implementation of cross cutting features such as metrics, logging, tracing etc. Adding such features has in the past been a tedious and error prone endeavor. - High fidelity mocks for all of the compute API. What this means is that most of our controller logic can be tested as unit tests in a consistent way without creating individual mocks by hand. ```release-note NONE ```
This commit is contained in:
@@ -87,6 +87,7 @@ pkg/cloudprovider
|
||||
pkg/cloudprovider/providers/aws
|
||||
pkg/cloudprovider/providers/fake
|
||||
pkg/cloudprovider/providers/gce
|
||||
pkg/cloudprovider/providers/gce/cloud
|
||||
pkg/cloudprovider/providers/openstack
|
||||
pkg/cloudprovider/providers/ovirt
|
||||
pkg/cloudprovider/providers/photon
|
||||
|
38
hack/update-cloudprovider-gce.sh
Executable file
38
hack/update-cloudprovider-gce.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2018 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}")/..
|
||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
GENERATOR="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen/main.go"
|
||||
|
||||
GEN_GO="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen.go"
|
||||
GEN_TEST_GO="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen_test.go"
|
||||
|
||||
kube::golang::setup_env
|
||||
|
||||
TMPFILE=$(mktemp verify-cloudprovider-gce-XXXX)
|
||||
trap "{ rm -f ${TMPFILE}; }" EXIT
|
||||
|
||||
go run "${GENERATOR}" > ${TMPFILE}
|
||||
mv "${TMPFILE}" "${GEN_GO}"
|
||||
go run "${GENERATOR}" -mode test > ${TMPFILE}
|
||||
mv "${TMPFILE}" "${GEN_TEST_GO}"
|
||||
|
||||
exit 0
|
49
hack/verify-cloudprovider-gce.sh
Executable file
49
hack/verify-cloudprovider-gce.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2018 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}")/..
|
||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
GENERATOR="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen/main.go"
|
||||
|
||||
GEN_GO="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen.go"
|
||||
GEN_TEST_GO="${KUBE_ROOT}/pkg/cloudprovider/providers/gce/cloud/gen_test.go"
|
||||
|
||||
kube::golang::setup_env
|
||||
|
||||
TMPFILE=$(mktemp verify-cloudprovider-gce-XXXX)
|
||||
trap "{ rm -f ${TMPFILE}; }" EXIT
|
||||
|
||||
go run "${GENERATOR}" > ${TMPFILE}
|
||||
if ! diff "${TMPFILE}" "${GEN_GO}"; then
|
||||
echo "Generated file ${GEN_GO} needs to be updated (run hack/update-cloudprovider-gce.sh)"
|
||||
echo
|
||||
diff -u "${TMPFILE}" "${GEN_GO}" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
go run "${GENERATOR}" -mode test > ${TMPFILE}
|
||||
if ! diff "${TMPFILE}" "${GEN_TEST_GO}"; then
|
||||
echo "Generated file ${GEN_TEST_GO} needs to be updated (run hack/update-cloudprovider-gce.sh)"
|
||||
echo
|
||||
diff -u "${TMPFILE}" "${GEN_TEST_GO}" || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user