opa: Improve the download logic

The versions.yaml has a default for the amd64 binary, but there is no
code to actually build the arm64 binary, which seems an overlook.

Let's simplify the OPA logic by removing the direct link to the binary,
and construct that link as part of the checks we do to decide whether we
need to build OPA or not.

Fixes: #8373

Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com>
Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
This commit is contained in:
Zvonko Kaiser
2023-11-03 12:04:29 +00:00
parent 4516f38165
commit ab597a4d5b
2 changed files with 10 additions and 13 deletions

View File

@@ -700,12 +700,20 @@ EOF
# OPA should be built from the cached source code instead of downloading
# this binary.
#
local opa_repo_url="$(get_package_version_from_kata_yaml externals.open-policy-agent.url)"
local opa_version="$(get_package_version_from_kata_yaml externals.open-policy-agent.version)"
if [ "$ARCH" == "ppc64le" ] || [ "$ARCH" == "s390x" ]; then
opa_repo_url="$(get_package_version_from_kata_yaml externals.open-policy-agent.url)"
info "Building OPA binary from source at ${opa_repo_url}"
build_opa_from_source "${opa_repo_url}" || die "Failed to build OPA"
else
opa_bin_url="$(get_package_version_from_kata_yaml externals.open-policy-agent.meta.binary)"
local opa_binary_arch
case ${ARCH} in
x86_64) opa_binary_arch="amd64" ;;
aarch64) opa_binary_arch="arm64" ;;
*) die "Unsupported architecture for the OPA binary" ;;
esac
local opa_bin_url="${opa_repo_url}/releases/download/${opa_version}/opa_linux_${opa_binary_arch}_static"
info "Downloading OPA binary from ${opa_bin_url}"
curl --fail -L "${opa_bin_url}" -o opa || die "Failed to download OPA"
fi