8442d47f5a
Change-Id: I6af8eb8790f0bdafa5ffcaa4465b9cad6bfec50f Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
89 lines
2.6 KiB
Bash
Executable File
89 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -o errexit
|
|
|
|
# Exit early if python3 is not available.
|
|
python3 --version > /dev/null
|
|
|
|
KURYR_DIR=${KURYR_DIR:-./}
|
|
KURYR_API_PROTO="kuryr_kubernetes/pod_resources/api.proto"
|
|
|
|
# If API_VERSION is not specified assuming v1alpha1.
|
|
VERSION=${API_VERSION:-v1alpha1}
|
|
|
|
ACTIVATED="no"
|
|
ENV_DIR=$(mktemp -d -t kuryr-tmp-env-XXXXXXXXXX)
|
|
|
|
function cleanup() {
|
|
if [ "${ACTIVATED}" = "yes" ]; then deactivate; fi
|
|
rm -rf "${ENV_DIR}"
|
|
}
|
|
trap cleanup EXIT INT
|
|
|
|
if [ -z "${KUBERNETES_API_PROTO}" ]; then
|
|
|
|
echo "KUBERNETES_API_PROTO is not specified." \
|
|
"Trying to download api.proto from the k8s github."
|
|
|
|
pushd "${ENV_DIR}"
|
|
|
|
BASE_URL="https://raw.githubusercontent.com/kubernetes/kubernetes/master"
|
|
PROTO_FILE="pkg/kubelet/apis/podresources/${VERSION}/api.proto"
|
|
|
|
wget "${BASE_URL}/${PROTO_FILE}" -O api.proto
|
|
|
|
KUBERNETES_API_PROTO="$PWD/api.proto"
|
|
popd
|
|
fi
|
|
|
|
if [ ! -f "${KUBERNETES_API_PROTO}" ]; then
|
|
echo "Can't find ${KUBERNETES_API_PROTO}"
|
|
exit 1
|
|
fi
|
|
|
|
KUBERNETES_API_PROTO=$(readlink -e "${KUBERNETES_API_PROTO}")
|
|
|
|
pushd "${KURYR_DIR}"
|
|
|
|
# Obtaining api version from the proto file.
|
|
VERSION=$(grep package "${KUBERNETES_API_PROTO}" \
|
|
| sed 's/^package *\(.*\)\;$/\1/')
|
|
echo "\
|
|
// Generated from kubernetes/pkg/kubelet/apis/podresources/${VERSION}/api.proto
|
|
// To regenerate api.proto, api_pb2.py and api_pb2_grpc.py follow instructions
|
|
// from doc/source/devref/updating_pod_resources_api.rst.
|
|
" > ${KURYR_API_PROTO}
|
|
|
|
# Stripping unwanted dependencies.
|
|
sed '/gogoproto/d;/api.pb.go/d' "${KUBERNETES_API_PROTO}" >> ${KURYR_API_PROTO}
|
|
echo '' >> ${KURYR_API_PROTO}
|
|
# Stripping redundant empty lines.
|
|
sed -i '/^$/N;/^\n$/D' ${KURYR_API_PROTO}
|
|
|
|
# Creating new virtual environment.
|
|
python3 -m venv "${ENV_DIR}"
|
|
source "${ENV_DIR}/bin/activate"
|
|
ACTIVATED="yes"
|
|
|
|
pip install grpcio-tools==1.19
|
|
|
|
# Checking protobuf version.
|
|
protobuf_version=$(grep protobuf lower-constraints.txt \
|
|
| sed 's/^protobuf==\([0-9\.]*\)\.[0-9]*$/\1/')
|
|
protoc_version=$(python -m grpc_tools.protoc --version \
|
|
| sed 's/^libprotoc \([0-9\.]*\)\.[0-9]*$/\1/')
|
|
if [ "${protobuf_version}" != "${protoc_version}" ]; then
|
|
echo "protobuf version in lower-constraints.txt (${protobuf_version})" \
|
|
"!= installed protoc compiler version (${protoc_version})."
|
|
echo "Please, update requirements.txt and lower-constraints.txt or" \
|
|
"change version of grpcio-tools used in this script."
|
|
# Clearing api.proto to highlight the issue.
|
|
echo '' > ${KURYR_API_PROTO}
|
|
exit 1
|
|
fi
|
|
|
|
# Generating python bindings.
|
|
python -m grpc_tools.protoc -I./ \
|
|
--python_out=. --grpc_python_out=. ${KURYR_API_PROTO}
|
|
popd
|