Merge pull request #8383 from jodh-intel/kata-manager-add-list-option

utils: kata-manager: Add option to list versions
This commit is contained in:
James O. D. Hunt
2023-11-13 16:18:36 +00:00
committed by GitHub

View File

@@ -27,6 +27,10 @@ readonly kata_releases_url="https://api.github.com/repos/${kata_slug}/releases"
readonly containerd_releases_url="https://api.github.com/repos/${containerd_slug}/releases"
readonly containerd_io_releases_url="https://raw.githubusercontent.com/containerd/containerd.io/main/content/releases.md"
readonly docker_slug="moby/moby"
readonly docker_project="Docker (moby)"
readonly docker_releases_url="https://api.github.com/repos/${docker_slug}/releases"
# Directory created when unpacking a binary release archive downloaded from
# $kata_releases_url.
readonly kata_install_dir="${kata_install_dir:-/opt/kata}"
@@ -109,7 +113,7 @@ github_get_latest_release()
local latest
latest=$(curl -sL "$url" |\
jq -r '.[].tag_name | select(contains("-") | not)' |\
sort -t "." -k1,1n -k2,2n -k3,3n |\
sort -t '.' -V |\
tail -1 || true)
[ -z "$latest" ] && die "Cannot determine latest release from $url"
@@ -260,6 +264,7 @@ Options:
-f : Force installation (use with care).
-h : Show this help statement.
-k <version> : Specify Kata Containers version.
-l : List installed and available versions only, then exit (uses network).
-o : Only install Kata Containers.
-r : Don't cleanup on failure (retain files).
-t : Disable self test (don't try to create a container after install).
@@ -279,9 +284,12 @@ $warnings
Advice:
- You can check the latest version of Kata Containers by running:
- You can check the latest version of Kata Containers by running
one of the following:
$ $script_name -l
$ kata-runtime check --only-list-releases
$ kata-ctl check only-list-releases
EOF
}
@@ -772,7 +780,7 @@ test_installation()
local image="docker.io/library/busybox:latest"
sudo $tool image pull "$image"
local container_name="test-kata"
local container_name="${script_name/./-}-test-kata"
# Used to prove that the kernel in the container
# is different to the host kernel.
@@ -885,6 +893,55 @@ validate_containerd_flavour()
grep -qE "$flavours_regex" <<< "$flavour" || die "expected flavour to match '$flavours_regex', found '$flavour'"
}
list_versions()
{
local -r not_installed='<not installed>'
# The latest available checks will hit the network so inform the
# user what we are doing in case of network delays.
info "Getting version details"
local installed_kata
installed_kata=$("$kata_shim_v2" --version 2>/dev/null ||\
echo "$not_installed")
local installed_containerd
installed_containerd=$(containerd --version 2>/dev/null ||\
echo "$not_installed")
local installed_docker
installed_docker=$(docker --version 2>/dev/null ||\
echo "$not_installed")
local latest_kata
latest_kata=$(github_get_latest_release "$kata_releases_url" || true)
[ -z "$latest_kata" ] && \
die "cannot determine latest version of $project"
local latest_containerd
latest_containerd=$(github_get_latest_release "$containerd_releases_url" || true)
[ -z "$latest_containerd" ] && \
die "cannot determine latest version of $containerd_project"
local latest_docker
latest_docker=$(github_get_latest_release "$docker_releases_url" || true)
[ -z "$latest_docker" ] && \
die "cannot determine latest version of $docker_project"
info "$kata_project: installed version: $installed_kata"
info "$kata_project: latest version: $latest_kata"
echo
info "$containerd_project: installed version: $installed_containerd"
info "$containerd_project: latest version: $latest_containerd"
echo
info "$docker_project: installed version: $installed_docker"
info "$docker_project: latest version: $latest_docker"
}
handle_args()
{
local cleanup="true"
@@ -894,13 +951,14 @@ handle_args()
local only_run_test="false"
local enable_debug="false"
local install_docker="false"
local list_versions='false'
local opt
local kata_version=""
local containerd_flavour="lts"
while getopts "c:dDfhk:ortT" opt "$@"
while getopts "c:dDfhk:lortT" opt "$@"
do
case "$opt" in
c) containerd_flavour="$OPTARG" ;;
@@ -909,6 +967,7 @@ handle_args()
f) force="true" ;;
h) usage; exit 0 ;;
k) kata_version="$OPTARG" ;;
l) list_versions='true' ;;
o) skip_containerd="true" ;;
r) cleanup="false" ;;
t) disable_test="true" ;;
@@ -920,6 +979,8 @@ handle_args()
shift $[$OPTIND-1]
[ "$list_versions" = 'true' ] && list_versions && exit 0
[ -z "$kata_version" ] && kata_version="${1:-}" || true
[ -z "$containerd_flavour" ] && containerd_flavour="${2:-}" || true