Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 28 additions & 4 deletions install_script.sh.template
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,33 @@ function remove_rpm_gpg_keys() {
done
}

function get_redhat_release_version() {
local release_file
local version=""

for release_file in "${1:-/etc/redhat-release}" "${2:-/etc/system-release}"; do
if [ -r "$release_file" ]; then
version=$(grep -oE '[0-9]+' <"$release_file" | head -1)
if [ -n "$version" ]; then
printf '%s' "$version"
return 0
fi
fi
done

for release_file in "${3:-/etc/os-release}" "${4:-/usr/lib/os-release}"; do
if [ -r "$release_file" ]; then
version=$(grep -E '^VERSION_ID=' <"$release_file" | head -1 | cut -d = -f 2 | grep -oE '[0-9]+' | head -1)
if [ -n "$version" ]; then
printf '%s' "$version"
return 0
fi
fi
done

printf '7'
}

# Emulate hashmap with simple switch case
function getMapData() {

Expand Down Expand Up @@ -1397,10 +1424,7 @@ if [ "$OS" == "Red Hat" ]; then
fi
# NOTE: CentOS/RHEL 6 don't have /etc/os-release. /etc/centos-release and /etc/redhat-release
# aren't necessarily on the system, so this is not 100 % reliable, but best we can do
release_version=$(grep -oE '[0-9]+' </etc/redhat-release 2>/dev/null | head -1)
if [ -z "$release_version" ]; then
release_version=7
fi
release_version=$(get_redhat_release_version /etc/redhat-release /etc/system-release /etc/os-release /usr/lib/os-release)
if { [ "$DISTRIBUTION" == "Red Hat" ] || [ "$DISTRIBUTION" == "CentOS" ]; } && [ "$release_version" -lt 7 ]; then
if [ -n "$agent_minor_version_without_patch" ]; then
if [ "$agent_minor_version_without_patch" -ge "52" ]; then
Expand Down
53 changes: 53 additions & 0 deletions unit_tests/test_install_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,59 @@ testParEnabledWithoutApiKeyOnlyEnrollment() {
assertEquals "$(sudo yq eval '.private_action_runner.api_key_only_enrollment' $config_file)" "null"
}

### get_redhat_release_version
setUpReleaseFiles() {
release_dir=$(mktemp -d)
missing="$release_dir/missing"
redhat_release="$release_dir/redhat-release"
system_release="$release_dir/system-release"
os_release="$release_dir/os-release"
usr_lib_os_release="$release_dir/usr-lib-os-release"
}
testRedhatReleasePreferred() {
setUpReleaseFiles
echo "CentOS Linux release 7.9.2009 (Core)" > "$redhat_release"
echo "Amazon Linux release 2 (Karoo)" > "$system_release"
echo 'VERSION_ID="9.4"' > "$os_release"
assertEquals "7" "$(get_redhat_release_version "$redhat_release" "$system_release" "$os_release" "$usr_lib_os_release")"
}
testSystemReleaseUsedWhenRedhatReleaseMissing() {
setUpReleaseFiles
echo "Amazon Linux release 2 (Karoo)" > "$system_release"
echo 'VERSION_ID="9.4"' > "$os_release"
assertEquals "2" "$(get_redhat_release_version "$missing" "$system_release" "$os_release" "$usr_lib_os_release")"
}
testOsReleaseUsedWhenReleaseFilesMissing() {
setUpReleaseFiles
echo 'VERSION_ID="9.4"' > "$os_release"
assertEquals "9" "$(get_redhat_release_version "$missing" "$missing" "$os_release" "$usr_lib_os_release")"
}
testUsrLibOsReleaseUsedAsLastSource() {
setUpReleaseFiles
echo 'VERSION_ID=8' > "$usr_lib_os_release"
assertEquals "8" "$(get_redhat_release_version "$missing" "$missing" "$missing" "$usr_lib_os_release")"
}
testFallsBackToSevenWhenNothingAvailable() {
setUpReleaseFiles
assertEquals "7" "$(get_redhat_release_version "$missing" "$missing" "$missing" "$missing")"
}
testEmptyFilesFallThroughToNextSource() {
setUpReleaseFiles
: > "$redhat_release"
: > "$system_release"
echo 'VERSION_ID="9.4"' > "$os_release"
assertEquals "9" "$(get_redhat_release_version "$redhat_release" "$system_release" "$os_release" "$usr_lib_os_release")"
}
testNonNumericOsReleaseFallsBack() {
setUpReleaseFiles
echo 'VERSION_ID=rawhide' > "$os_release"
assertEquals "7" "$(get_redhat_release_version "$missing" "$missing" "$os_release" "$missing")"
}
testMissingRedhatReleaseIsSilent() {
setUpReleaseFiles
assertEquals "" "$(get_redhat_release_version "$missing" "$missing" "$missing" "$missing" 2>&1 >/dev/null)"
}

### install_apm_ssi
getApmSsiInstallerURL() {
(
Expand Down
Loading