Skip to content

Commit

Permalink
Add --opamp-api-url flag to unix install script
Browse files Browse the repository at this point in the history
This commit adds a new flag to the install script, responsible for
setting the OpAmp API URL.

Previously, the OpAmp API URL was computed from the API URL. However,
this did not work correctly in all scenarios.

This change is related to a pending change in the agent and may need to
be held back until the agent change is committed.
  • Loading branch information
echlebek committed Apr 29, 2024
1 parent 3d57590 commit 1ef97b7
Showing 1 changed file with 29 additions and 16 deletions.
45 changes: 29 additions & 16 deletions install-script/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ ARG_SHORT_HELP='h'
ARG_LONG_HELP='help'
ARG_SHORT_API='a'
ARG_LONG_API='api'
ARG_SHORT_OPAMP_API='o'
ARG_LONG_OPAMP_API='opamp-api'
ARG_SHORT_TAG='t'
ARG_LONG_TAG='tag'
ARG_SHORT_VERSION='v'
Expand Down Expand Up @@ -81,6 +83,7 @@ fi
set -u

API_BASE_URL=""
OPAMP_API_URL=""
FIELDS=""
VERSION=""
FIPS=false
Expand All @@ -107,6 +110,7 @@ LAUNCHD_ENV_KEY=""
LAUNCHD_TOKEN_KEY=""

USER_API_URL=""
USER_OPAMP_API_URL=""
USER_TOKEN=""
USER_FIELDS=""

Expand All @@ -132,7 +136,7 @@ SYSTEMD_DISABLED=false
function usage() {
cat << EOF
Usage: bash install.sh [--${ARG_LONG_TOKEN} <token>] [--${ARG_LONG_TAG} <key>=<value> [ --${ARG_LONG_TAG} ...]] [--${ARG_LONG_API} <url>] [--${ARG_LONG_VERSION} <version>] \\
Usage: bash install.sh [--${ARG_LONG_TOKEN} <token>] [--${ARG_LONG_TAG} <key>=<value> [ --${ARG_LONG_TAG} ...]] [--${ARG_LONG_API} <url>] [--${ARG_LONG_OPAMP_API} <url>] [--${ARG_LONG_VERSION} <version>] \\
[--${ARG_LONG_YES}] [--${ARG_LONG_VERSION} <version>] [--${ARG_LONG_HELP}]
Supported arguments:
Expand All @@ -148,7 +152,8 @@ Supported arguments:
-${ARG_SHORT_PURGE}, --${ARG_LONG_PURGE} It has to be used with '--${ARG_LONG_UNINSTALL}'.
It removes all Sumo Logic Distribution for OpenTelemetry Collector related configuration and data.
-${ARG_SHORT_API}, --${ARG_LONG_API} <url> Api URL
-${ARG_SHORT_API}, --${ARG_LONG_API} <url> API URL, forces the collector to use non-default API
-${ARG_SHORT_OPAMP_API}, --${ARG_LONG_OPAMP_API} <url> OpAmp API URL, forces the collector to use non-default OpAmp API
-${ARG_SHORT_SKIP_SYSTEMD}, --${ARG_LONG_SKIP_SYSTEMD} Do not install systemd unit.
-${ARG_SHORT_SKIP_CONFIG}, --${ARG_LONG_SKIP_CONFIG} Do not create default configuration.
-${ARG_SHORT_VERSION}, --${ARG_LONG_VERSION} <version> Version of Sumo Logic Distribution for OpenTelemetry Collector to install, e.g. 0.57.2-sumo-1.
Expand Down Expand Up @@ -209,6 +214,9 @@ function parse_options() {
echo "--${DEPRECATED_ARG_LONG_TOKEN}" is deprecated. Please use "--${ARG_LONG_TOKEN}" instead.
set -- "$@" "-${ARG_SHORT_TOKEN}"
;;
"--${ARG_LONG_OPAMP_API}")
set -- "$@" "-${ARG_SHORT_OPAMP_API}"
;;
"--${ARG_LONG_API}")
set -- "$@" "-${ARG_SHORT_API}"
;;
Expand Down Expand Up @@ -261,7 +269,7 @@ function parse_options() {
"--${ARG_LONG_TIMEOUT}")
set -- "$@" "-${ARG_SHORT_TIMEOUT}"
;;
"-${ARG_SHORT_TOKEN}"|"-${ARG_SHORT_HELP}"|"-${ARG_SHORT_API}"|"-${ARG_SHORT_TAG}"|"-${ARG_SHORT_SKIP_CONFIG}"|"-${ARG_SHORT_VERSION}"|"-${ARG_SHORT_FIPS}"|"-${ARG_SHORT_YES}"|"-${ARG_SHORT_SKIP_SYSTEMD}"|"-${ARG_SHORT_UNINSTALL}"|"-${ARG_SHORT_PURGE}"|"-${ARG_SHORT_SKIP_TOKEN}"|"-${ARG_SHORT_DOWNLOAD}"|"-${ARG_SHORT_CONFIG_BRANCH}"|"-${ARG_SHORT_BINARY_BRANCH}"|"-${ARG_SHORT_BRANCH}"|"-${ARG_SHORT_KEEP_DOWNLOADS}"|"-${ARG_SHORT_TIMEOUT}"|"-${ARG_SHORT_INSTALL_HOSTMETRICS}"|"-${ARG_SHORT_REMOTELY_MANAGED}"|"-${ARG_SHORT_EPHEMERAL}")
"-${ARG_SHORT_TOKEN}"|"-${ARG_SHORT_HELP}"|"-${ARG_SHORT_API}"|"-${ARG_SHORT_OPAMP_API}"|"-${ARG_SHORT_TAG}"|"-${ARG_SHORT_SKIP_CONFIG}"|"-${ARG_SHORT_VERSION}"|"-${ARG_SHORT_FIPS}"|"-${ARG_SHORT_YES}"|"-${ARG_SHORT_SKIP_SYSTEMD}"|"-${ARG_SHORT_UNINSTALL}"|"-${ARG_SHORT_PURGE}"|"-${ARG_SHORT_SKIP_TOKEN}"|"-${ARG_SHORT_DOWNLOAD}"|"-${ARG_SHORT_CONFIG_BRANCH}"|"-${ARG_SHORT_BINARY_BRANCH}"|"-${ARG_SHORT_BRANCH}"|"-${ARG_SHORT_KEEP_DOWNLOADS}"|"-${ARG_SHORT_TIMEOUT}"|"-${ARG_SHORT_INSTALL_HOSTMETRICS}"|"-${ARG_SHORT_REMOTELY_MANAGED}"|"-${ARG_SHORT_EPHEMERAL}")
set -- "$@" "${arg}"
;;
"--${ARG_LONG_INSTALL_HOSTMETRICS}")
Expand All @@ -285,7 +293,7 @@ function parse_options() {

while true; do
set +e
getopts "${ARG_SHORT_HELP}${ARG_SHORT_TOKEN}:${ARG_SHORT_API}:${ARG_SHORT_TAG}:${ARG_SHORT_VERSION}:${ARG_SHORT_FIPS}${ARG_SHORT_YES}${ARG_SHORT_SKIP_SYSTEMD}${ARG_SHORT_UNINSTALL}${ARG_SHORT_PURGE}${ARG_SHORT_SKIP_TOKEN}${ARG_SHORT_SKIP_CONFIG}${ARG_SHORT_DOWNLOAD}${ARG_SHORT_KEEP_DOWNLOADS}${ARG_SHORT_CONFIG_BRANCH}:${ARG_SHORT_BINARY_BRANCH}:${ARG_SHORT_BRANCH}:${ARG_SHORT_EPHEMERAL}${ARG_SHORT_REMOTELY_MANAGED}${ARG_SHORT_INSTALL_HOSTMETRICS}${ARG_SHORT_TIMEOUT}:" opt
getopts "${ARG_SHORT_HELP}${ARG_SHORT_TOKEN}:${ARG_SHORT_API}:${ARG_SHORT_OPAMP_API}:${ARG_SHORT_TAG}:${ARG_SHORT_VERSION}:${ARG_SHORT_FIPS}${ARG_SHORT_YES}${ARG_SHORT_SKIP_SYSTEMD}${ARG_SHORT_UNINSTALL}${ARG_SHORT_PURGE}${ARG_SHORT_SKIP_TOKEN}${ARG_SHORT_SKIP_CONFIG}${ARG_SHORT_DOWNLOAD}${ARG_SHORT_KEEP_DOWNLOADS}${ARG_SHORT_CONFIG_BRANCH}:${ARG_SHORT_BINARY_BRANCH}:${ARG_SHORT_BRANCH}:${ARG_SHORT_EPHEMERAL}${ARG_SHORT_REMOTELY_MANAGED}${ARG_SHORT_INSTALL_HOSTMETRICS}${ARG_SHORT_TIMEOUT}:" opt
set -e

# Invalid argument catched, print and exit
Expand All @@ -300,6 +308,7 @@ function parse_options() {
"${ARG_SHORT_HELP}") usage; exit 0 ;;
"${ARG_SHORT_TOKEN}") SUMOLOGIC_INSTALLATION_TOKEN="${OPTARG}" ;;
"${ARG_SHORT_API}") API_BASE_URL="${OPTARG}" ;;
"${ARG_SHORT_OPAMP_API}") OPAMP_API_URL="${OPTARG}" ;;
"${ARG_SHORT_SKIP_CONFIG}") SKIP_CONFIG=true ;;
"${ARG_SHORT_VERSION}") VERSION="${OPTARG}" ;;
"${ARG_SHORT_FIPS}") FIPS=true ;;
Expand Down Expand Up @@ -681,7 +690,7 @@ function setup_config() {
mkdir -p "${REMOTE_CONFIG_DIRECTORY}"

write_sumologic_extension "${CONFIG_PATH}" "${INDENTATION}"
write_opamp_extension "${CONFIG_PATH}" "${REMOTE_CONFIG_DIRECTORY}" "${INDENTATION}" "${EXT_INDENTATION}" "${API_BASE_URL}"
write_opamp_extension "${CONFIG_PATH}" "${REMOTE_CONFIG_DIRECTORY}" "${INDENTATION}" "${EXT_INDENTATION}" "${OPAMP_API_URL}"

if [[ -n "${SUMOLOGIC_INSTALLATION_TOKEN}" && "${SYSTEMD_DISABLED}" == "true" ]]; then
write_installation_token "${SUMOLOGIC_INSTALLATION_TOKEN}" "${CONFIG_PATH}" "${EXT_INDENTATION}"
Expand Down Expand Up @@ -751,6 +760,11 @@ function setup_config() {
write_api_url "${API_BASE_URL}" "${COMMON_CONFIG_PATH}" "${EXT_INDENTATION}"
fi

# fill in opamp url
if [[ -n "${OPAMP_API_URL}" && -z "${USER_OPAMP_API_URL}" ]]; then
write_opamp_extension "${CONFIG_PATH}" "${REMOTE_CONFIG_DIRECTORY}" "${INDENTATION}" "${EXT_INDENTATION}" "${OPAMP_API_URL}"
fi

if [[ -n "${FIELDS}" && -z "${USER_FIELDS}" ]]; then
write_tags "${FIELDS}" "${COMMON_CONFIG_PATH}" "${INDENTATION}" "${EXT_INDENTATION}"
fi
Expand Down Expand Up @@ -796,7 +810,7 @@ function setup_config_darwin() {
echo -e "Creating remote configurations directory (${REMOTE_CONFIG_DIRECTORY})"
mkdir -p "${REMOTE_CONFIG_DIRECTORY}"

write_opamp_extension "${config_path}" "${REMOTE_CONFIG_DIRECTORY}" "${INDENTATION}" "${EXT_INDENTATION}" "${API_BASE_URL}"
write_opamp_extension "${config_path}" "${REMOTE_CONFIG_DIRECTORY}" "${INDENTATION}" "${EXT_INDENTATION}" "${OPAMP_API_URL}"

write_remote_config_launchd "${LAUNCHD_CONFIG}"

Expand Down Expand Up @@ -1380,18 +1394,11 @@ ${indentation}opamp:/" "${file}"

# if a different base url is specified, configure the corresponding opamp endpoint
if [[ -n "${api_url}" ]]; then
wss_url=${api_url/https:/"wss:"}
wss_url=${wss_url%/}
wss_url=${wss_url/open-events/"opamp-events"}
wss_url=${wss_url/open-collectors/"opamp-collectors"}
wss_url=${wss_url/\.net/".net/v1/opamp"}
wss_url=${wss_url/\.com/".com/v1/opamp"}

if grep "endpoint: wss:" "${file}" > /dev/null; then
sed -i.bak -e "s/endpoint: wss:.*$/endpoint: $(escape_sed "${wss_url}")/" "${file}"
sed -i.bak -e "s/endpoint: wss:.*$/endpoint: $(escape_sed "${api_url}")/" "${file}"
else
sed -i.bak -e "s/opamp:/opamp:\\
\\${ext_indentation}endpoint: $(escape_sed "${wss_url}")/" "${file}"
\\${ext_indentation}endpoint: $(escape_sed "${api_url}")/" "${file}"
fi
fi

Expand Down Expand Up @@ -1712,7 +1719,7 @@ set_tmpdir
install_missing_dependencies
check_dependencies

readonly SUMOLOGIC_INSTALLATION_TOKEN API_BASE_URL FIELDS CONTINUE FILE_STORAGE CONFIG_DIRECTORY SYSTEMD_CONFIG UNINSTALL
readonly SUMOLOGIC_INSTALLATION_TOKEN API_BASE_URL OPAMP_API_URL FIELDS CONTINUE FILE_STORAGE CONFIG_DIRECTORY SYSTEMD_CONFIG UNINSTALL
readonly USER_CONFIG_DIRECTORY USER_ENV_DIRECTORY CONFIG_DIRECTORY CONFIG_PATH COMMON_CONFIG_PATH
readonly ACL_LOG_FILE_PATHS
readonly INSTALL_HOSTMETRICS
Expand Down Expand Up @@ -1766,6 +1773,12 @@ if [[ -z "${DOWNLOAD_ONLY}" ]]; then
exit 1
fi

USER_OPAMP_API_URL="$(get_user_opamp_api_url "${COMMON_CONFIG_PATH}")"
if [[ -n "${USER_OPAMP_API_URL}" && -n "${OPAMP_API_URL}" && "${USER_OPAMP_API_URL}" != "${OPAMP_API_URL}" ]]; then
echo "You are trying to install with different opamp endpoint than in your configuration file!"
exit 1
fi

USER_FIELDS="$(get_user_tags "${COMMON_CONFIG_PATH}" "${INDENTATION}" "${EXT_INDENTATION}")"
FIELDS_TO_COMPARE="$(get_fields_to_compare "${FIELDS}")"

Expand Down

0 comments on commit 1ef97b7

Please sign in to comment.