1
0
mirror of https://github.com/coreos/fedora-coreos-config.git synced 2026-02-05 09:45:30 +01:00
Files
fedora-coreos-config/tests/kola/data/commonlib.sh
Michael Armijo c48e62a667 tests/kola: switch container helpers to Fedora 43
This should have been part of 51a217a1a2
but there was a failure observed in the
`ext.config.podman.rootless-systemd` test that wasn't seen using the
Fedora 42 container images. There must have been some update with either
systemd, selinux-policy, coreos-assembler, or elsewhere that allows
httpd to start in a rootless-systemd environment again becasue the test
is now passing.
2025-11-14 18:10:06 -05:00

169 lines
4.0 KiB
Bash

# shellcheck shell=bash
# This is a common library created for the ok & fatal function and symlinks
# added to the data/ in each directory
ok() {
echo "ok" "$@"
}
fatal() {
echo "$@" >&2
exit 1
}
get_ipv4_for_nic() {
local nic_name=$1
local ip
ip="$(ip -j addr show "${nic_name}" | jq -r '.[0].addr_info | map(select(.family == "inet")) | .[0].local')"
if [ -z "$ip" ]; then
echo "Error: can not get ip for ${nic_name}"
exit 1
fi
echo "$ip"
}
get_fedora_container_ref() {
local repo='quay.io/fedora/fedora'
local tag='43'
echo "${repo}:${tag}"
}
get_fedora_minimal_container_ref() {
local repo='quay.io/fedora/fedora-minimal'
local tag='43'
echo "${repo}:${tag}"
}
get_fcos_stream() {
rpm-ostree status -b --json | jq -r '.deployments[0]["base-commit-meta"]["fedora-coreos.stream"]'
}
is_fcos() {
source /etc/os-release
[ "${ID}" == "fedora" ] && [ "${VARIANT_ID}" == "coreos" ]
}
# Note when using this, you probably also want to check `get_rhel_maj_ver`.
is_rhcos() {
source /etc/os-release
{ [ "${ID}" == "rhel" ] && [ "${VARIANT_ID}" == "coreos" ]; } || \
[ "${ID}" == "rhcos" ]
}
get_fedora_ver() {
source /etc/os-release
if is_fcos; then
echo "${VERSION_ID}"
fi
}
get_rhel_ver() {
source /etc/os-release
if [ "${ID}" == "rhcos" ]; then
echo "${RHEL_VERSION}"
elif [ "${ID}" == "rhel" ]; then
echo "${VERSION_ID}"
else
fatal "Unknown ID $ID"
fi
}
get_cs_ver() {
source /etc/os-release
if [ "${ID}" == "scos" ] && [ "${VARIANT_ID}" == "coreos" ]; then
source /usr/lib/os-release.stream
echo "${VERSION_ID}"
elif [ "${ID}" == "centos" ] && [ "${VARIANT_ID}" == "coreos" ]; then
echo "${VERSION_ID}"
else
fatal "Unknown ID $ID"
fi
}
get_rhel_maj_ver() {
local ver; ver=$(get_rhel_ver)
echo "${ver%%.*}"
}
# rhcos9
is_rhcos9() {
source /etc/os-release
{ [ "${ID}" == "rhcos" ] && [ "${RHEL_VERSION%%.*}" -eq 9 ]; } || \
{ [ "${ID}" == "rhel" ] && [ "${VERSION_ID%%.*}" -eq 9 ]; }
}
# scos
is_scos() {
source /etc/os-release
{ [ "${ID}" == "scos" ] || [ "${ID}" == "centos" ]; } && [ "${VARIANT_ID}" == "coreos" ]
}
# match rhcos9 / c9s, or rhcos10 /c10s
match_maj_ver() {
local ver=$1
[ "$(get_rhel_maj_ver)" == "${ver}" ] || [ "$(get_cs_ver)" == "${ver}" ]
}
IFS=" " read -r -a cmdline <<< "$(</proc/cmdline)"
cmdline_arg() {
local name="$1" value=""
for arg in "${cmdline[@]}"; do
if [[ "${arg%%=*}" == "${name}" ]]; then
value="${arg#*=}"
fi
done
echo "${value}"
}
# Wait for a specified time (default 60s) while a service is
# activating.
is_service_active() {
local service="$1"; shift
local timeout="${1:-60}"; shift
# TODO: Maybe at some point in the future we'll be able
# to set --property=JobTimeoutSec=${timeout} and
# we won't have to run it through `/bin/timeout`.
timeout "${timeout}s" \
systemd-run --wait \
--property="After=${service}" \
echo "Waited for $service to finish starting"
# return actual result
systemctl is-active "${service}"
}
## Some functions to support version comparison
# Returns true iff $1 is equal to $2
vereq() {
[ "$1" == "$2" ]
}
# Returns true iff $1 is less than $2
verlt() {
vereq "$1" "$2" && return 1
local lowest
lowest="$(echo -e "$1\n$2" | sort -V | head -n 1)"
[ "$1" == "$lowest" ]
}
# Returns true iff $1 is less than or equal to $2
verlte() {
vereq "$1" "$2" || verlt "$1" "$2"
}
# Returns true iff $1 is greater than to $2
vergt() {
! verlte "$1" "$2"
}
# Returns true iff $1 is greater than or equal to $2
vergte() {
vereq "$1" "$2" || vergt "$1" "$2"
}
# Verify the instance is Confidential VM type that matches expected
assert_confidential_type_match() {
local cvm_type=$(systemd-detect-virt --cvm)
local expected=$1
[ "${cvm_type}" == "${expected}" ]
}