From 5046962d358744ed4829512a7d172b0816a2b085 Mon Sep 17 00:00:00 2001 From: "James Hughes (Splunk)" Date: Wed, 5 Feb 2025 13:44:04 -0800 Subject: [PATCH] Adopts the orca testing into the releaser pipeline CI/CD. (#5867) * Adopts the orca testing into the releaser pipeline CI/CD. Significant fixes and some reorganization. The gateway and collectd tests will reappear in separate PRs in order to keep cognitive load down on this one. Signed-off-by: James Hughes * Update packaging/technical-addon/packaging-scripts/cicd-tests/happypath-test.sh Co-authored-by: Curtis Robert --------- Signed-off-by: James Hughes Co-authored-by: Curtis Robert --- .gitattributes | 3 + .github/workflows/splunk-ta-otel.yml | 16 ++- .gitlab-ci.yml | 97 ++++++++++++- packaging/technical-addon/Makefile | 9 +- packaging/technical-addon/README.md | 8 +- .../linux_x86_64/bin/Splunk_TA_otel.sh | 2 +- .../windows_x86_64/bin/Splunk_TA_otel.cmd | 64 ++++----- .../packaging-scripts/cicd-tests/collectd.sh | 43 ------ .../packaging-scripts/cicd-tests/gateway.sh | 29 ---- .../cicd-tests/happypath-test.sh | 129 ++++++++++++++++++ .../packaging-scripts/cspell/cspell.json | 2 +- .../packaging-scripts/deploy-and-verify.sh | 100 -------------- .../orca-playbook-linux-restart.yml | 15 -- .../orca-playbook-windows-restart.yml | 16 --- .../orca-playbook-windows.yml | 7 +- 15 files changed, 280 insertions(+), 260 deletions(-) create mode 100644 .gitattributes delete mode 100755 packaging/technical-addon/packaging-scripts/cicd-tests/collectd.sh delete mode 100755 packaging/technical-addon/packaging-scripts/cicd-tests/gateway.sh create mode 100755 packaging/technical-addon/packaging-scripts/cicd-tests/happypath-test.sh delete mode 100755 packaging/technical-addon/packaging-scripts/deploy-and-verify.sh delete mode 100644 packaging/technical-addon/packaging-scripts/orca-playbook-linux-restart.yml delete mode 100644 packaging/technical-addon/packaging-scripts/orca-playbook-windows-restart.yml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..c19bacb180 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# See https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings#example +*.cmd text eol=crlf +*.ps1 text eol=crlf diff --git a/.github/workflows/splunk-ta-otel.yml b/.github/workflows/splunk-ta-otel.yml index 809f5253f2..56771f37c9 100644 --- a/.github/workflows/splunk-ta-otel.yml +++ b/.github/workflows/splunk-ta-otel.yml @@ -129,4 +129,18 @@ jobs: set -o pipefail make -e bundle.d otelcol generate-technical-addon copy-local-build-to-ta package-ta make -e discovery-test-ta - + spell-check: + name: spell-check + runs-on: ubuntu-latest + needs: [setup-environment] + steps: + - name: Check out the codebase. + uses: actions/checkout@v4 + with: + sparse-checkout: packaging/technical-addon/ + - uses: streetsidesoftware/cspell-action@v6 + with: + config: packaging/technical-addon/packaging-scripts/cspell/cspell.json + root: packaging/technical-addon/Splunk_TA_otel + files: | + !**/agent-bundle/** diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e7549c3df0..490c104187 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,20 @@ default: - image: '${DOCKER_CICD_REPO}/ci-container/debian-bookworm:3.5.0' + image: "${DOCKER_CICD_REPO}/ci-container/debian-bookworm:3.5.0" + id_tokens: + CI_JOB_JWT: + aud: + - "$CICD_VAULT_ADDR" + - "$SECRETS_URL" variables: WIN_2019_BASE_IMAGE: mcr.microsoft.com/windows/servercore:ltsc2019 WIN_2022_BASE_IMAGE: mcr.microsoft.com/windows/servercore:ltsc2022 + SPLUNK_OTELCOL_DOWNLOAD_BASE: + value: "https://github.com/signalfx/splunk-otel-collector/releases/download" + description: 'URL to download artifacts from' + BUILD_DIR: + value: '${CI_PROJECT_DIR}/build' + description: 'in this CI, where builds are stored' stages: - update-deps @@ -11,6 +22,8 @@ stages: - build - sign-binaries - package + - code-analysis + - orca-tests - sign-packages - release - docker-manifest-release @@ -412,6 +425,88 @@ agent-bundle-windows: paths: - dist/agent-bundle_windows_amd64.zip +.auth-setup: + variables: + TEST_FOLDER: $BUILD_DIR/$CI_JOB_ID + before_script: | + creds-helper init + creds-helper pypi "$PYPI_READER_ROLE" + eval "$(creds-helper artifactory --eval "$PYPI_READER_ROLE" )" + pip install --upgrade pip + pip install --upgrade splunk-orca + splunk_orca --help + pushd ~ + echo ${ORCA_TAR_GZ} | base64 -d > orca_cred.tar.gz + tar -xzvf ~/orca_cred.tar.gz + echo "area = otel-collector" >> ~/.orca/orca.conf + popd + +package-technical-addon: + image: "${DOCKER_CICD_REPO}/ci-container/python-3.11-bullseye:1.19.0" + stage: "package" + script: | + make distribute-ta -e + artifacts: + paths: + - "$BUILD_DIR/out/distribution/Splunk_TA_otel*.tgz" + - "$BUILD_DIR/packaging-scripts" + - "$BUILD_DIR/Makefile" + parallel: + matrix: + - PLATFORM: ["all"] + +test-happypath-ta: + image: "${DOCKER_CICD_REPO}/ci-container/python-3.11-bullseye:1.19.0" + extends: .auth-setup + stage: orca-tests + dependencies: + - "package-technical-addon" + parallel: + matrix: + - UF_VERSION: ["9.0.2", "8.2.7"] + SPLUNK_PLATFORM: ["x64_centos_7"] + ORCA_CLOUD: ["aws"] + ORCA_OPTION: [""] + PLATFORM: ["linux"] + - UF_VERSION: ["9.0.2", "8.2.7"] + SPLUNK_PLATFORM: ["x64_windows_2019","x64_windows_2022" ] + ORCA_CLOUD: ["aws"] + ORCA_OPTION: [""] + PLATFORM: ["windows"] + script: | + make orca-test-ta -e + after_script: + # spin down orca deployments + - "cd ${CI_PROJECT_DIR}" + - deployment_id=$(grep "orca_deployment_id" $TEST_FOLDER/orca_deployment.json | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') + - splunk_orca --cloud ${ORCA_CLOUD} destroy "${deployment_id}" + artifacts: + when: always + paths: + - "$BUILD_DIR/out/**/*" + - "$BUILD_DIR/$CI_JOB_ID/**/*" +AppInspect_local: + image: "${DOCKER_CICD_REPO}/ci-container/python-3.11-bullseye:1.19.0" + dependencies: + - "package-technical-addon" + stage: code-analysis + # AppInspect regex bugs out on python 3.11 + image: docker.repo.splunkdev.net/ci-cd/ci-container/python-3.9:1.26.0 + before_script: + - pip install splunk-add-on-ucc-framework + - pip install splunk-packaging-toolkit + - pip install splunk-appinspect + script: + - 'which "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" && exit 1' + - splunk-appinspect inspect --mode precert --included-tags cloud --output-file "$BUILD_DIR/out/appinspect_report_local.json" "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" + artifacts: + paths: + - "$BUILD_DIR/out/appinspect_report_local.json" + - "$BUILD_DIR/out/distribution/**/*" + expire_in: 21 day + when: always + allow_failure: false + .instrumentation-deb-rpm: extends: .trigger-filter stage: package diff --git a/packaging/technical-addon/Makefile b/packaging/technical-addon/Makefile index a1335e7dae..5bfb6f8bf8 100644 --- a/packaging/technical-addon/Makefile +++ b/packaging/technical-addon/Makefile @@ -1,6 +1,6 @@ # Used for building SOURCE_DIR?=$(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -BUILD_DIR?=./build +BUILD_DIR?=$(realpath .)/build OTEL_COLLECTOR_VERSION?=0.111.0 SPLUNK_OTELCOL_DOWNLOAD_BASE?=https://github.com/signalfx/splunk-otel-collector/releases/download PLATFORM?=linux @@ -87,8 +87,8 @@ package-ta: env-guard-ta .PHONY: distribute-ta distribute-ta: generate-technical-addon download-release package-ta -.PHONY: verify-ta -verify-ta: env-guard-verify +.PHONY: orca-test-ta +orca-test-ta: env-guard-verify SOURCE_DIR="$(SOURCE_DIR)" \ BUILD_DIR="$(BUILD_DIR)" \ ARCH="$(ARCH)" \ @@ -98,7 +98,7 @@ verify-ta: env-guard-verify UF_VERSION="$(UF_VERSION)" \ SPLUNK_PLATFORM="$(SPLUNK_PLATFORM)" \ OLLY_ACCESS_TOKEN="$(OLLY_ACCESS_TOKEN)" \ - $(SOURCE_DIR)/packaging-scripts/deploy-and-verify.sh + $(SOURCE_DIR)/packaging-scripts/cicd-tests/happypath-test.sh .PHONY: smoketest-ta smoketest-ta: @@ -116,7 +116,6 @@ discovery-test-ta: PLATFORM="$(PLATFORM)" \ $(SOURCE_DIR)/packaging-scripts/cicd-tests/discovery/discovery-docker-test.sh - .PHONY: update-ta-deps update-ta-deps: SOURCE_DIR="$(SOURCE_DIR)" \ diff --git a/packaging/technical-addon/README.md b/packaging/technical-addon/README.md index 92b27f2bf8..39ec15c9f3 100644 --- a/packaging/technical-addon/README.md +++ b/packaging/technical-addon/README.md @@ -1,9 +1,3 @@ -# Need Help? -See `#otel-ta-community` for help. - -# Developing this TA -See [`CONTRIBUTING.md`](./CONTRIBUTING.md) - # Configuration ## environment variables In addition to the typical collector environment variables, we additionally provide @@ -36,6 +30,8 @@ operating system (ex windows, linux). This can be accomplished by removing either `Splunk_TA_Otel/linux_x86_64` or `Splunk_TA_Otel/windows_x86_64`, respectively. +Further, they may remove the agent bundle downloaded to the `bin/` folder in these platform specific directories if they don't need smart agent support. + ## Maintaining configuration between upgrades As with all TAs, any changes made to `configs` will be overwritten. Customers should copy any relevant custom configuration from `configs/` or `defaults/` diff --git a/packaging/technical-addon/Splunk_TA_otel/linux_x86_64/bin/Splunk_TA_otel.sh b/packaging/technical-addon/Splunk_TA_otel/linux_x86_64/bin/Splunk_TA_otel.sh index f3268fb30e..2d2b82c00a 100755 --- a/packaging/technical-addon/Splunk_TA_otel/linux_x86_64/bin/Splunk_TA_otel.sh +++ b/packaging/technical-addon/Splunk_TA_otel/linux_x86_64/bin/Splunk_TA_otel.sh @@ -521,7 +521,7 @@ extract_bundle() { BUNDLE_PARENT="$(realpath --canonicalize-missing "$SPLUNK_BUNDLE_DIR/../")" splunk_TA_otel_log_msg "DEBUG" "will cd to $BUNDLE_PARENT" tar -C "$BUNDLE_PARENT" -xzf "$splunk_TA_otel_script_directory/$SMART_AGENT_BUNDLE" || splunk_TA_otel_log_error "failed to extract $splunk_TA_otel_script_directory/$SMART_AGENT_BUNDLE to $SPLUNK_BUNDLE_DIR" - splunk_TA_otel_log_msg "INFO" "agent bundle extracted to $SPLUNK_BUNDLE_DIR" + splunk_TA_otel_log_msg "INFO" "Done extracting agent bundle to $SPLUNK_BUNDLE_DIR" # Patch everything in agent-bundle/bin to use our provided .so root_path="$(readlink -f "$splunk_bundle_dir_value")" diff --git a/packaging/technical-addon/Splunk_TA_otel/windows_x86_64/bin/Splunk_TA_otel.cmd b/packaging/technical-addon/Splunk_TA_otel/windows_x86_64/bin/Splunk_TA_otel.cmd index e9d3b85ade..f6892a37f8 100644 --- a/packaging/technical-addon/Splunk_TA_otel/windows_x86_64/bin/Splunk_TA_otel.cmd +++ b/packaging/technical-addon/Splunk_TA_otel/windows_x86_64/bin/Splunk_TA_otel.cmd @@ -6,8 +6,8 @@ set "splunk_otel_common_ps_name=Splunk_TA_otel_utils.ps1" set "SPLUNK_OTEL_TA_HOME=" set "SPLUNK_OTEL_TA_PLATFORM_HOME=" - set "SPLUNK_OTEL_FLAGS=" + :: BEGIN AUTOGENERATED CODE set "configd_name=configd" set "configd_value=" @@ -51,7 +51,6 @@ set "splunk_access_token_file_name=splunk_access_token_file" set "splunk_access_token_file_value=" :: END AUTOGENERATED CODE - echo on echo "Starting Splunk TA Otel." echo off @@ -61,7 +60,7 @@ if "%1%"=="" goto splunk_TA_otel_run_agent if "%1%"=="--scheme" goto splunk_TA_otel_scheme if "%1%"=="--validate-arguments" goto splunk_TA_otel_validate_arg :: exit if no matching handler for argument -exit /b +exit /b 1 :: main entry hooks @@ -69,17 +68,16 @@ exit /b setlocal echo "display scheme called" endlocal -exit /B +exit /b 0 :splunk_TA_otel_validate_arg setlocal echo "validate args called" endlocal -exit /B 0 - +exit /b 0 :splunk_TA_otel_run_agent -setlocal +setlocal enabledelayedexpansion :: READING CONFIGURATION FROM STDIN call :splunk_TA_otel_read_configs @@ -88,14 +86,13 @@ call :splunk_TA_otel_log_msg "INFO" "Logging TA notices to %splunk_TA_otel_log_f :: By default, otel will register itself as a windows service. In context of the TA, we want splunk to manage our lifecycle, so turn this off. set "NO_WINDOWS_SERVICE=1" -if "%SPLUNK_ACCESS_TOKEN%"=="" ( - call :splunk_TA_otel_log_msg "INFO" "Grabbing SPLUNK_ACCESS_TOKEN from file %splunk_access_token_file%" +if "%SPLUNK_ACCESS_TOKEN%" == "" ( + call :splunk_TA_otel_log_msg "INFO" "Grabbing SPLUNK_ACCESS_TOKEN from file %splunk_access_token_file_value%" call :get_access_token ) else ( call :splunk_TA_otel_log_msg "INFO" "Environment variable SPLUNK_ACCESS_TOKEN already set." ) - :: BEGIN AUTOGENERATED CODE if "%gomemlimit_value%" == "" ( call :splunk_TA_otel_log_msg "DEBUG" "Param %gomemlimit_name% not set" @@ -115,13 +112,11 @@ if "%splunk_bundle_dir_value%" == "" ( if "%splunk_config_value%" == "" ( call :splunk_TA_otel_log_msg "DEBUG" "Param %splunk_config_name% not set" ) else ( - set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% --config=%splunk_config_value%" set "SPLUNK_CONFIG=%splunk_config_value%" ) if "%splunk_config_dir_value%" == "" ( call :splunk_TA_otel_log_msg "DEBUG" "Param %splunk_config_dir_name% not set" ) else ( - set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% --config-dir=%splunk_config_dir_value%" set "SPLUNK_CONFIG_DIR=%splunk_config_dir_value%" ) if "%splunk_collectd_dir_value%" == "" ( @@ -184,20 +179,10 @@ if "%splunk_access_token_file_value%" == "" ( ) else ( set "SPLUNK_ACCESS_TOKEN_FILE=%splunk_access_token_file_value%" ) -if "%configd_value%" == "true" ( - set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% --configd" -) else ( - call :splunk_TA_otel_log_msg "DEBUG" "Optional flag %configd_name% not set" -) -if "%discovery_value%" == "true" ( - set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% --discovery" -) else ( - call :splunk_TA_otel_log_msg "DEBUG" "Optional flag %discovery_name% not set" -) -if "%discovery_properties_value%" != "" ( - set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% --discovery-properties=%discovery_properties_value%" -) else ( +if "%discovery_properties_value%" == "" ( call :splunk_TA_otel_log_msg "DEBUG" "Optional flag %discovery_properties_name% not set" +) else ( + set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% /discovery-properties='%discovery_properties_value%'" ) :: END AUTOGENERATED CODE @@ -205,7 +190,7 @@ if "%discovery_properties_value%" != "" ( call :extract_bundle set "command_line=%splunk_TA_otel_app_directory%%splunk_otel_process_name%" -start /B "" "%command_line%" "%SPLUNK_OTEL_FLAGS%" > "%splunk_otel_log_file_value%" 2>&1 +start /B "" "%command_line%" %SPLUNK_OTEL_FLAGS% > "%splunk_otel_log_file_value%" 2>&1 set "splunk_otel_common_ps=%splunk_TA_otel_app_directory%%splunk_otel_common_ps_name%" start /B "" /I /WAIT powershell "& '%splunk_otel_common_ps%' '%splunk_otel_process_name%' '%splunk_TA_otel_log_file%'" @@ -228,18 +213,16 @@ for /f "delims=" %%a in ('powershell -noninteractive -noprofile -command "get-da if not "%log_type%%SPLUNK_OTEL_TA_DEBUG%" == "DEBUG" ( echo "%log_date%" "%log_type%" "%log_msg%" >> "%splunk_TA_otel_log_file%" ) - +echo off endlocal -exit /B 0 +exit /b 0 :splunk_TA_otel_read_configs echo "INFO grabbing config from stdin..." - - -for /F "tokens=1,2 delims==" %%I in ('powershell -noninteractive -noprofile -command "$input | Select-String -Pattern '.*?(%configd_name%|%discovery_name%|%discovery_properties_name%|%gomemlimit_name%|%splunk_access_token_file_name%|%splunk_api_url_name%|%splunk_ballast_size_mib_name%|%splunk_bundle_dir_name%|%splunk_collectd_dir_name%|%splunk_config_name%|%splunk_config_dir_name%|%splunk_config_yaml_name%|%splunk_debug_config_server_name%|%splunk_gateway_url_name%|%splunk_hec_url_name%|%splunk_ingest_url_name%|%splunk_listen_interface_name%|%splunk_memory_limit_mib_name%|%splunk_memory_total_mib_name%|%splunk_otel_log_file_name%|%splunk_realm_name%).*?>(.*?)<' | ForEach-Object { $_.Matches.Groups[1].Value + '=' + $_.Matches.Groups[2].Value }"') do ( - if "%%I"=="%configd_name%" set "configd_value=%%J" - if "%%I"=="%discovery_name%" set "discovery_value=%%J" +for /F "tokens=1,2 delims==" %%I in ('powershell -noninteractive -noprofile -command "$input | Select-String -Pattern '.*?(%configd_name%|%discovery_name%|%discovery_properties_name%|%gomemlimit_name%|%splunk_api_url_name%|%splunk_bundle_dir_name%|%splunk_config_name%|%splunk_config_dir_name%|%splunk_collectd_dir_name%|%splunk_debug_config_server_name%|%splunk_config_yaml_name%|%splunk_gateway_url_name%|%splunk_hec_url_name%|%splunk_listen_interface_name%|%splunk_memory_limit_mib_name%|%splunk_memory_total_mib_name%|%splunk_otel_log_file_name%|%splunk_ingest_url_name%|%splunk_realm_name%|%splunk_access_token_file_name%|session_key).*?>(.*?)<' | ForEach-Object { $_.Matches.Groups[1].Value + '=' + $_.Matches.Groups[2].Value }"') do ( + if "%%I"=="%configd_name%" set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% /configd" + if "%%I"=="%discovery_name%" set "SPLUNK_OTEL_FLAGS=%SPLUNK_OTEL_FLAGS% /discovery" if "%%I"=="%discovery_properties_name%" set "discovery_properties_value=%%J" if "%%I"=="%gomemlimit_name%" set "gomemlimit_value=%%J" if "%%I"=="%splunk_api_url_name%" set "splunk_api_url_value=%%J" @@ -296,7 +279,6 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splu set "splunk_access_token_file_value=%%i" ) - :: expand params in splunk_bundle_dir_value for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splunk_bundle_dir_value%' -replace '\$SPLUNK_OTEL_TA_PLATFORM_HOME', '%SPLUNK_OTEL_TA_PLATFORM_HOME%'"') do ( set "splunk_bundle_dir_value=%%i" @@ -308,7 +290,6 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splu set "splunk_bundle_dir_value=%%i" ) - :: expand params in splunk_config_value for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splunk_config_value%' -replace '\$SPLUNK_OTEL_TA_PLATFORM_HOME', '%SPLUNK_OTEL_TA_PLATFORM_HOME%'"') do ( set "splunk_config_value=%%i" @@ -320,7 +301,6 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splu set "splunk_config_value=%%i" ) - :: expand params in splunk_config_dir_value for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splunk_config_dir_value%' -replace '\$SPLUNK_OTEL_TA_PLATFORM_HOME', '%SPLUNK_OTEL_TA_PLATFORM_HOME%'"') do ( set "splunk_config_dir_value=%%i" @@ -332,7 +312,6 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splu set "splunk_config_dir_value=%%i" ) - :: expand params in splunk_collectd_dir_value for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splunk_collectd_dir_value%' -replace '\$SPLUNK_OTEL_TA_PLATFORM_HOME', '%SPLUNK_OTEL_TA_PLATFORM_HOME%'"') do ( set "splunk_collectd_dir_value=%%i" @@ -344,7 +323,6 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splu set "splunk_collectd_dir_value=%%i" ) - :: expand params in splunk_config_yaml_value for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%splunk_config_yaml_value%' -replace '\$SPLUNK_OTEL_TA_PLATFORM_HOME', '%SPLUNK_OTEL_TA_PLATFORM_HOME%'"') do ( set "splunk_config_yaml_value=%%i" @@ -377,15 +355,21 @@ for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%disc for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "'%discovery_properties_value%' -replace '\$SPLUNK_HOME', '%SPLUNK_HOME%'"') do ( set "discovery_properties_value=%%i" ) + :: END AUTOGENERATED CODE +exit /b 0 :get_access_token set /p SPLUNK_ACCESS_TOKEN=<"%splunk_access_token_file_value%" -exit /B 0 +exit /b 0 :extract_bundle +setlocal call :splunk_TA_otel_log_msg "INFO" "Extract agent bundle from '%splunk_TA_otel_app_directory%\agent-bundle_windows_amd64.zip' to %splunk_bundle_dir%" for /f "delims=" %%i in ('powershell -noninteractive -noprofile -command "if (-not (Test-Path '%splunk_bundle_dir%')) {Expand-Archive -LiteralPath '%splunk_TA_otel_app_directory%\agent-bundle_windows_amd64.zip' -Destination '%splunk_bundle_dir%\..\' -Force }"') do ( call :splunk_TA_otel_log_msg "DEBUG" "result from extract: %%i" ) -exit /B 0 +call :splunk_TA_otel_log_msg "INFO" "Done extracting agent bundle from '%splunk_TA_otel_app_directory%\agent-bundle_windows_amd64.zip' to %splunk_bundle_dir%" +endlocal +exit /b 0 + diff --git a/packaging/technical-addon/packaging-scripts/cicd-tests/collectd.sh b/packaging/technical-addon/packaging-scripts/cicd-tests/collectd.sh deleted file mode 100755 index 06ab534f91..0000000000 --- a/packaging/technical-addon/packaging-scripts/cicd-tests/collectd.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -eux -set -o pipefail - -# customize TA -BUILD_DIR="$(realpath "$BUILD_DIR")" - -# Set ta-agent-config.yml with mysql config -TEMP_DIR="$BUILD_DIR/ci-cd/collectd" -mkdir -p "$TEMP_DIR" -tar xzvf "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" -C "$TEMP_DIR" -cp -r "$TEMP_DIR/Splunk_TA_otel/default/" "$TEMP_DIR/Splunk_TA_otel/local/" -echo "$OLLY_ACCESS_TOKEN" > "$TEMP_DIR/Splunk_TA_otel/local/access_token" -sed -i '/splunk_config/d' "$TEMP_DIR/Splunk_TA_otel/local/inputs.conf" -mkdir "$TEMP_DIR/Splunk_TA_otel/configs/mysql" -cp "$SOURCE_DIR/packaging-scripts/cicd-tests/mysql/ta-agent-config.yaml" "$TEMP_DIR/Splunk_TA_otel/configs/mysql" -echo "splunk_config=\$SPLUNK_OTEL_TA_HOME/configs/mysql/ta-agent-config.yaml" >> "$TEMP_DIR/Splunk_TA_otel/local/inputs.conf" -tar -C "$TEMP_DIR" -hcz -f "$TEMP_DIR/Splunk_TA_otel.tgz" "Splunk_TA_otel" - -# Create ORCA container & grab id -splunk_orca -vvv --cloud kubernetes --printer sdd-json --deployment-file "$BUILD_DIR/orca_deployment_collectd.json" --ansible-log "$BUILD_DIR/ansible-local.log" create --env SPLUNK_CONNECTION_TIMEOUT=600 --so 1 --splunk-version "${UF_VERSION}" --platform x64_centos_7 --local-apps "$BUILD_DIR/ci-cd/collectd/Splunk_TA_otel.tgz" --cloud-instance-type-mapping '{"universal_forwarder": "c5.large", "heavy_forwarder": "c5.large", "indexer": "c5.large", "eventgen_standalone": "c5.large", "testrunner": "c5.large", "license_master": "c5.large", "deployment_server": "c5.large", "deployer": "c5.large", "eventgen_server": "c5.large", "cluster_master": "c5.large", "search_head": "c5.large", "eventgen_controller": "c5.large", "standalone": "c5.large"}' --playbook "$SOURCE_DIR/packaging-scripts/orca-playbook-$PLATFORM.yml,site.yml" --custom-services "$SOURCE_DIR/packaging-scripts/orca-playbook-mysql.yml" -deployment_id="$(grep "orca_deployment_id" "$BUILD_DIR/orca_deployment_collectd.json" | awk -F ':' '{print $2}' | awk -F '"' '{print $2}')" -echo "deployment_id: $deployment_id" -splunk_orca --cloud kubernetes show containers --deployment-id "${deployment_id}" >> "$BUILD_DIR/container_details_collectd.txt" -sed -i '/custom/d' "$BUILD_DIR/container_details_collectd.txt" -orca_container=$(grep "Container Name" "$BUILD_DIR/container_details_collectd.txt" | awk -F " " '{print $8}') - -# Change to the host running mysql in the config yaml -custom_ip="$(jq -r '.server_roles.custom[0].host' "$BUILD_DIR/orca_deployment_collectd.json")" -echo "custom IP: $custom_ip" -sed -i "s/127.0.0.1/$custom_ip/g" "$TEMP_DIR/Splunk_TA_otel/configs/mysql/ta-agent-config.yaml" -splunk_orca --cloud kubernetes copy to "${orca_container}" ${ORCA_OPTION} --source "$TEMP_DIR/Splunk_TA_otel/configs/mysql/ta-agent-config.yaml" --destination /opt/splunk/etc/apps/Splunk_TA_otel/configs/mysql -splunk_orca --cloud kubernetes provision "${deployment_id}" --playbooks "$SOURCE_DIR/packaging-scripts/orca-playbook-linux-restart.yml" -sleep 90s -splunk_orca --cloud kubernetes copy from "${orca_container}" ${ORCA_OPTION} --source /opt/splunk/var/log/splunk/otel.log --destination "$BUILD_DIR/splunklog" -grep -q "Failed to connect to database mysql" "$BUILD_DIR/splunklog/otel.log" && exit 1 -grep -q "Collectd died when it was supposed to be running" "$BUILD_DIR/splunklog/otel.log" && exit 1 - -# clean up orca container -splunk_orca --cloud kubernetes destroy "${deployment_id}" - -mv "$BUILD_DIR/orca_deployment_collectd.json" "$BUILD_DIR/container_details_collectd.txt" "$BUILD_DIR/ansible-local.log" "$TEMP_DIR" -rm "$TEMP_DIR/Splunk_TA_otel.tgz" -exit 0 diff --git a/packaging/technical-addon/packaging-scripts/cicd-tests/gateway.sh b/packaging/technical-addon/packaging-scripts/cicd-tests/gateway.sh deleted file mode 100755 index 55fef13e39..0000000000 --- a/packaging/technical-addon/packaging-scripts/cicd-tests/gateway.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -eux -set -o pipefail - -# customize TA -BUILD_DIR="$(realpath "$BUILD_DIR")" - -# Set gateway -TEMP_DIR="$BUILD_DIR/ci-cd/gateway" -mkdir -p "$TEMP_DIR" -tar xzvf "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" -C "$TEMP_DIR" -cp -r "$TEMP_DIR/Splunk_TA_otel/default/" "$TEMP_DIR/Splunk_TA_otel/local/" -echo "$OLLY_ACCESS_TOKEN" > "$TEMP_DIR/Splunk_TA_otel/local/access_token" -echo "splunk_config=\$SPLUNK_OTEL_TA_HOME/configs/ta-gateway-config.yaml" >> "$TEMP_DIR/Splunk_TA_otel/local/inputs.conf" -tar -C "$TEMP_DIR" -hcz -f "$TEMP_DIR/Splunk_TA_otel.tgz" "Splunk_TA_otel" - -# Set gateway -TEMP_DIR="$BUILD_DIR/ci-cd/gateway-agent" -mkdir -p "$TEMP_DIR" -tar xzvf "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" -C "$TEMP_DIR" -cp -r "$TEMP_DIR/Splunk_TA_otel/default/" "$TEMP_DIR/Splunk_TA_otel/local/" -echo "$OLLY_ACCESS_TOKEN" > "$TEMP_DIR/Splunk_TA_otel/local/access_token" -echo "splunk_config=\$SPLUNK_OTEL_TA_HOME/configs/ta-agent-to-gateway-config.yaml" >> "$TEMP_DIR/Splunk_TA_otel/local/inputs.conf" -echo "gateway_url=localhost" >> "$TEMP_DIR/Splunk_TA_otel/local/inputs.conf" -tar -C "$TEMP_DIR" -hcz -f "$TEMP_DIR/Splunk_TA_otel_agent_to_gateway.tgz" "Splunk_TA_otel" - -splunk_orca -v --cloud kubernetes --ansible-log "$BUILD_DIR/ansible-local-gateway.log" create --env SPLUNK_CONNECTION_TIMEOUT=600 --platform x64_centos_7 --local-apps "$BUILD_DIR/ci-cd/gateway/Splunk_TA_otel.tgz" --local-apps "$BUILD_DIR/ci-cd/gateway-agent/Splunk_TA_otel_agent_to_gateway.tgz" --playbook "$SOURCE_DIR/packaging-scripts/orca-playbook-linux.yml,site.yml" -rm "$BUILD_DIR/ci-cd/gateway/Splunk_TA_otel.tgz" -rm "$TEMP_DIR/Splunk_TA_otel_agent_to_gateway.tgz" -exit 0 diff --git a/packaging/technical-addon/packaging-scripts/cicd-tests/happypath-test.sh b/packaging/technical-addon/packaging-scripts/cicd-tests/happypath-test.sh new file mode 100755 index 0000000000..1610704768 --- /dev/null +++ b/packaging/technical-addon/packaging-scripts/cicd-tests/happypath-test.sh @@ -0,0 +1,129 @@ +#!/bin/bash -eux + +set -o pipefail +which jq || (echo "jq not found" && exit 1) +source "${SOURCE_DIR}/packaging-scripts/cicd-tests/add-access-token.sh" +BUILD_DIR="$(realpath "$BUILD_DIR")" +TA_FULLPATH="$(repack_with_access_token "$OLLY_ACCESS_TOKEN" "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" | tail -n 1)" +CI_JOB_ID="${CI_JOB_ID:-$(basename $(dirname "$TA_FULLPATH"))}" +TEST_FOLDER="${TEST_FOLDER:-$BUILD_DIR/$CI_JOB_ID}" +mkdir -p "$TEST_FOLDER" + +# Create ORCA container & grab id +splunk_orca -vvv --cloud "${ORCA_CLOUD}" --printer sdd-json --deployment-file "$TEST_FOLDER/orca_deployment.json" --ansible-log "$TEST_FOLDER/ansible-local.log" create --prefix "happypath" --env SPLUNK_CONNECTION_TIMEOUT=600 --platform "$SPLUNK_PLATFORM" --splunk-version "${UF_VERSION}" --local-apps "$TA_FULLPATH" --playbook "$SOURCE_DIR/packaging-scripts/orca-playbook-$PLATFORM.yml,site.yml" +deployment_id="$(jq -r '.orca_deployment_id' < "$TEST_FOLDER/orca_deployment.json")" +ip_addr="$(jq -r '.server_roles.standalone[0].host' < "$TEST_FOLDER/orca_deployment.json")" + +# Check for successful startup +ATTEMPT=1 +if [ "$PLATFORM" == "windows" ]; then + MAX_ATTEMPTS=12 # Windows takes a long time to extract, often 7 minutes on default hardware + DELAY=60 +else + MAX_ATTEMPTS=6 + DELAY=20 +fi +while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do + # Copy logs from container + scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r -i ~/.orca/id_rsa "splunk@$ip_addr:/opt/splunk/var/log/splunk/" "$TEST_FOLDER" + if grep -q "Starting otel agent" "$TEST_FOLDER/splunk/Splunk_TA_otel.log" && + grep -q "Everything is ready" "$TEST_FOLDER/splunk/otel.log"; then + break + fi + ATTEMPT=$((ATTEMPT + 1)) + sleep "$DELAY" +done +if [ $ATTEMPT -gt $MAX_ATTEMPTS ]; then + echo "Failed to find successful startup message(s) after $MAX_ATTEMPTS attempts." + cat "$TEST_FOLDER/splunk/splunkd.log" + cat "$TEST_FOLDER/splunk/Splunk_TA_otel.log" + cat "$TEST_FOLDER/splunk/otel.log" + exit 1 +fi + +# Verify Otel agent is running without any error +(grep -qi "ERROR" "$TEST_FOLDER/splunk/Splunk_TA_otel.log" && exit 1 ) || true +(grep -qi "ERROR" "$TEST_FOLDER/splunk/otel.log" && exit 1 ) || true + +# Verify O11y has (recently) received metrics data from this host. TODO add a resource attribute or similar with the job name +MAX_ATTEMPTS=6 +DELAY=10 +ATTEMPT=1 +CUTOFF_DELTA='5 min' +export CUTOFF="$(date '+%s%3N' -d "$CUTOFF_DELTA ago")" +otel_hostname="$(grep "host.name" "$TEST_FOLDER/splunk/otel.log" | head -1 | awk -F 'host.name":"' '{print $2}' | awk -F '","' '{print $1}')" +while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do + curl --header "Content-Type:application/json" --header "X-SF-TOKEN:${OLLY_ACCESS_TOKEN}" "https://api.us0.signalfx.com/v2/metrictimeseries?query=host.name:${otel_hostname}%20AND%20sf_metric:otelcol_process_uptime%20AND%20splunk.distribution:otel-ta" > "$TEST_FOLDER/uptime.json" + count="$(jq -r '.count' < "$TEST_FOLDER/uptime.json")" + if [[ "$count" -gt "0" ]] && jq '[.results[].created, .results[].lastUpdated] | max as $max | $max >= ($ENV.CUTOFF | tonumber)' "$TEST_FOLDER/uptime.json" ; then + break + fi + ATTEMPT=$((ATTEMPT + 1)) + sleep $DELAY +done +if [ $ATTEMPT -gt $MAX_ATTEMPTS ]; then + echo "Failed to find metrics within $CUTOFF_DELTA after $MAX_ATTEMPTS attempts." + cat "$TEST_FOLDER/splunk/otel.log" + cat "$TEST_FOLDER/uptime.json" + exit 1 +fi + +# Verify the addon can be restarted successfully +orca_container_name=$(splunk_orca --cloud "${ORCA_CLOUD}" --printer json show --deployment-id "${deployment_id}" containers | jq -r '.[keys[0]] | .[keys[0]] | .containers | keys[0]') +splunk_orca --cloud "${ORCA_CLOUD}" exec --exec-user splunk "${orca_container_name}" '/opt/splunk/bin/splunk restart' + +MAX_ATTEMPTS=30 +DELAY=10 +ATTEMPT=1 +if [ "$PLATFORM" == "windows" ]; then + restart_log_file="Splunk_TA_otelutils.log" +else + restart_log_file="Splunk_TA_otel.log" +fi +while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do + scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r -i ~/.orca/id_rsa "splunk@$ip_addr:/opt/splunk/var/log/splunk/$restart_log_file" "$TEST_FOLDER/splunk/$restart_log_file" + # There seems to be an issue on linux where it does not gracefully wait for the job to shut down, need to investigate further. + (grep -q "INFO Otel agent stop" "$TEST_FOLDER/splunk/$restart_log_file" || grep -q "INFO Stopping otel" "$TEST_FOLDER/splunk/$restart_log_file") && break + ATTEMPT=$((ATTEMPT + 1)) + sleep $DELAY +done + +if [ $ATTEMPT -gt $MAX_ATTEMPTS ]; then + echo "Failed to see restart log after $MAX_ATTEMPTS attempts." + cat "$TEST_FOLDER/splunk/$restart_log_file" + exit 1 +fi + +# Ensure restart was successful as well +DELAY=10 +ATTEMPT=1 +MAX_ATTEMPTS=6 +while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do + scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r -i ~/.orca/id_rsa "splunk@$ip_addr:/opt/splunk/var/log/splunk/Splunk_TA_otel.log" "$TEST_FOLDER/splunk/Splunk_TA_otel.log" + scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r -i ~/.orca/id_rsa "splunk@$ip_addr:/opt/splunk/var/log/splunk/otel.log" "$TEST_FOLDER/splunk/otel.log" + if grep -q "Starting otel agent" "$TEST_FOLDER/splunk/Splunk_TA_otel.log" && grep -q "Everything is ready" "$TEST_FOLDER/splunk/otel.log"; then + break + fi + ATTEMPT=$((ATTEMPT + 1)) + sleep $DELAY +done +if [ $ATTEMPT -gt $MAX_ATTEMPTS ]; then + echo "Failed to see restarted log after $MAX_ATTEMPTS attempts." + cat "$TEST_FOLDER/splunk/Splunk_TA_otel.log" + cat "$TEST_FOLDER/splunk/otel.log" + exit 1 +fi + +# Ensure no errors after restart +(grep -qi "ERROR" "$TEST_FOLDER/splunk/Splunk_TA_otel.log" && exit 1 ) || true +(grep -qi "ERROR" "$TEST_FOLDER/splunk/otel.log" && exit 1 ) || true + +# For release, ensure version is as expected. TODO move this to another test and compare against tag +actual_version="$(grep "Version" "$TEST_FOLDER/splunk/otel.log" | head -1 | awk -F 'Version": "' '{print $2}' | awk -F '", "' '{print $1}')" +echo "actual version: $actual_version" +[[ "$actual_version" != "v0.111.0" ]] && echo "Test failed -- invalid version" && exit 1 + +# clean up orca container +splunk_orca --cloud ${ORCA_CLOUD} destroy "${deployment_id}" + +exit 0 diff --git a/packaging/technical-addon/packaging-scripts/cspell/cspell.json b/packaging/technical-addon/packaging-scripts/cspell/cspell.json index 5a7d19d877..f0953572cd 100644 --- a/packaging/technical-addon/packaging-scripts/cspell/cspell.json +++ b/packaging/technical-addon/packaging-scripts/cspell/cspell.json @@ -9,5 +9,5 @@ } ], "dictionaries": ["project-words"], - "ignorePaths": ["node_modules", "./project-words.txt"] + "files": ["packaging/technical-addon/Splunk_TA_otel/**"] } diff --git a/packaging/technical-addon/packaging-scripts/deploy-and-verify.sh b/packaging/technical-addon/packaging-scripts/deploy-and-verify.sh deleted file mode 100755 index 9c959dbf15..0000000000 --- a/packaging/technical-addon/packaging-scripts/deploy-and-verify.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash -eux - -set -o pipefail - -# Grab artifact from the build stage, add token and run the tests in orca container -cd "$BUILD_DIR" -tar xzf "$BUILD_DIR/out/distribution/Splunk_TA_otel.tgz" -cd "Splunk_TA_otel" -cp -r default/ local/ -echo "$OLLY_ACCESS_TOKEN" >> "local/access_token" - -# Re-package it & clean up -cd "-" -mkdir -p "$BUILD_DIR/ci-cd" -if [ "$PLATFORM" == "windows" ]; then - rm -Rf "./Splunk_TA_otel/linux_x86_64" -elif [ "$PLATFORM" == "linux" ]; then - rm -Rf "./Splunk_TA_otel/windows_x86_64" -fi -tar -czvf "$BUILD_DIR/ci-cd/Splunk_TA_otel.tgz" "./Splunk_TA_otel" - -# Create ORCA container & grab id -splunk_orca -vvv --cloud ${ORCA_CLOUD} --printer sdd-json --deployment-file "$BUILD_DIR/orca_deployment.json" --ansible-log ansible-local.log create --env SPLUNK_CONNECTION_TIMEOUT=600 --so 1 --splunk-version "${UF_VERSION}" --platform "${SPLUNK_PLATFORM}" --local-apps "$BUILD_DIR/ci-cd/Splunk_TA_otel.tgz" --cloud-instance-type-mapping '{"universal_forwarder": "c5.large", "heavy_forwarder": "c5.large", "indexer": "c5.large", "eventgen_standalone": "c5.large", "testrunner": "c5.large", "license_master": "c5.large", "deployment_server": "c5.large", "deployer": "c5.large", "eventgen_server": "c5.large", "cluster_master": "c5.large", "search_head": "c5.large", "eventgen_controller": "c5.large", "standalone": "c5.large"}' --playbook "$SOURCE_DIR/packaging-scripts/orca-playbook-$PLATFORM.yml,site.yml" -deployment_id="$(grep "orca_deployment_id" "$BUILD_DIR/orca_deployment.json" | awk -F ':' '{print $2}' | awk -F '"' '{print $2}')" -echo "deployment_id: $deployment_id" -splunk_orca --cloud ${ORCA_CLOUD} show containers --deployment-id "${deployment_id}" >> "$BUILD_DIR/container_details.txt" -orca_container=$(grep "Container Name" "$BUILD_DIR/container_details.txt" | awk -F " " '{print $8}') - -if [ "$PLATFORM" == "windows" ]; then - # Windows takes forever to extract - sleep 700s -else - # Can likely drop this way down, but give the collector time to collect metrics/traces - sleep 90s -fi - - -# Copy logs from container -mkdir -p "$BUILD_DIR"/splunklog -splunk_orca --cloud "${ORCA_CLOUD}" copy from "${orca_container}" ${ORCA_OPTION} --source /opt/splunk/var/log/splunk/ --destination "$BUILD_DIR/splunklog" -set +u -if [ -n "$SPLUNK_OTEL_TA_DEBUG" ]; then - set -u - mkdir "$BUILD_DIR/otel-ta-deployment" - splunk_orca --cloud "${ORCA_CLOUD}" copy from "${orca_container}" ${ORCA_OPTION} --source /opt/splunk/etc/apps/Splunk_TA_otel/ --destination "$BUILD_DIR/otel-ta-deployment/Splunk_TA_otel" -fi -set -u - -# Verify Otel agent is running without any error -grep -q "Starting otel agent" "$BUILD_DIR/splunklog/splunk/Splunk_TA_otel.log" -grep -q "Everything is ready" "$BUILD_DIR/splunklog/splunk/otel.log" -(grep -qi "ERROR" "$BUILD_DIR/splunklog/splunk/Splunk_TA_otel.log" && exit 1 ) || true -(grep -qi "ERROR" "$BUILD_DIR/splunklog/splunk/otel.log" && exit 1 ) || true - -# Verify Olly has received metrics data from this host -otel_hostname="$(grep "host.name" "$BUILD_DIR/splunklog/splunk/otel.log" | head -1 | awk -F 'host.name":"' '{print $2}' | awk -F '","' '{print $1}')" -echo "otel hostname: $otel_hostname" -#curl --header "Content-Type:application/json" --header "X-SF-TOKEN:${OLLY_ACCESS_TOKEN}" "https://api.us0.signalfx.com/v2/metrictimeseries?query=host.name:${otel_hostname}%20AND%20sf_metric:cpu_utilization%20AND%20sf_lastActiveMs:%3E%3D$(date '+%s%3N' -d '5 min ago')" > cpu_util.json -curl --header "Content-Type:application/json" --header "X-SF-TOKEN:${OLLY_ACCESS_TOKEN}" "https://api.us0.signalfx.com/v2/metrictimeseries?query=host.name:${otel_hostname}%20AND%20sf_metric:cpu.utilization" > cpu_util.json -count=$(grep '"count"' cpu_util.json | awk -F ':\ ' '{print $2}' | awk -F ',' '{print $1}') -echo $count -[[ "$count" -eq "0" ]] && echo "Test failed -- could not find cpu utilization metrics" && exit 1 -CUTOFF="$(date '+%s%3N' -d '5 min ago')" -export CUTOFF -jq '[.results[].created, .results[].lastUpdated] | max as $max | $max >= ($ENV.CUTOFF | tonumber)' cpu_util.json - -# Verify the current otel process was killed by PID by restarting splunk -if [ "$PLATFORM" == "windows" ]; then - splunk_orca --cloud "${ORCA_CLOUD}" provision "${deployment_id}" --playbooks "$SOURCE_DIR/packaging-scripts/orca-playbook-$PLATFORM-restart.yml" - splunk_orca --cloud "${ORCA_CLOUD}" copy from "${orca_container}" ${ORCA_OPTION} --source /opt/splunk/var/log/splunk/Splunk_TA_otelutils.log --destination "$BUILD_DIR/splunklog" - grep -q "INFO Otel agent stopped" "$BUILD_DIR/splunklog/Splunk_TA_otelutils.log" || exit 1 -elif [ "$PLATFORM" == "linux" ]; then - splunk_orca --cloud "${ORCA_CLOUD}" provision "${deployment_id}" --playbooks "$SOURCE_DIR/packaging-scripts/orca-playbook-$PLATFORM-restart.yml" - splunk_orca --cloud "${ORCA_CLOUD}" copy from "${orca_container}" ${ORCA_OPTION} --source /opt/splunk/var/log/splunk/Splunk_TA_otel.log --destination "$BUILD_DIR/splunklog" - grep -q "Otel agent stopped" "$BUILD_DIR/splunklog/Splunk_TA_otel.log" || exit 1 -fi - -# clean up orca container -splunk_orca --cloud ${ORCA_CLOUD} destroy "${deployment_id}" - -# Ensure telemetry is coming along -curl --header "Content-Type:application/json" --header "X-SF-TOKEN:${OLLY_ACCESS_TOKEN}" "https://api.us0.signalfx.com/v2/metrictimeseries?query=host.name:${otel_hostname}%20AND%20sf_metric:otelcol_process_uptime%20AND%20splunk.distribution:otel-ta" > uptime.json -count=$( grep '"count"' uptime.json | awk -F ':\ ' '{print $2}' | awk -F ',' '{print $1}') -echo $count -[[ "$count" -eq "0" ]] && echo "Test failed -- could not find uptime metrics" && exit 1 -jq '[.results[].created, .results[].lastUpdated] | max as $max | $max >= ($ENV.CUTOFF | tonumber)' uptime.json - -# Ensure version is as expected -actual_version="$(grep "Version" "$BUILD_DIR/splunklog/splunk/otel.log" | head -1 | awk -F 'Version": "' '{print $2}' | awk -F '", "' '{print $1}')" -echo "actual version: $actual_version" -[[ "$actual_version" != "v0.111.0" ]] && echo "Test failed -- invalid version" && exit 1 - -# Ensure gateway mode (and any other tests we wish to run) works -"$SOURCE_DIR/packaging-scripts/cicd-tests/gateway.sh" || (echo "failed to verify gateway" && exit 1) - -if [ "$PLATFORM" == "linux" ]; then - "$SOURCE_DIR/packaging-scripts/cicd-tests/collectd.sh" || (echo "failed to verify collectd" && exit 1) -fi - -exit 0 diff --git a/packaging/technical-addon/packaging-scripts/orca-playbook-linux-restart.yml b/packaging/technical-addon/packaging-scripts/orca-playbook-linux-restart.yml deleted file mode 100644 index 18ec5db33c..0000000000 --- a/packaging/technical-addon/packaging-scripts/orca-playbook-linux-restart.yml +++ /dev/null @@ -1,15 +0,0 @@ -- hosts: all:!orca_role_custom:!orca_role_testrunner - gather_facts: false - become: yes - vars: - splunk: - user: root - home: /opt/splunk - exec: /opt/splunk/bin/splunk - tasks: - #Issue a splunk restart - - name: Restart the splunkd service - command: "{{splunk.exec}} restart" - environment: - HOME: "{{splunk.home}}" - ignore_errors: true diff --git a/packaging/technical-addon/packaging-scripts/orca-playbook-windows-restart.yml b/packaging/technical-addon/packaging-scripts/orca-playbook-windows-restart.yml deleted file mode 100644 index 3740e17faa..0000000000 --- a/packaging/technical-addon/packaging-scripts/orca-playbook-windows-restart.yml +++ /dev/null @@ -1,16 +0,0 @@ -- hosts: all:!orca_role_custom:!orca_role_testrunner - gather_facts: false - become: yes - become_method: runas - become_user: Administrator - vars: - splunk: - home: /opt/splunk - exec: /opt/splunk/bin/splunk - tasks: - #Issue a splunk restart - - name: Restart the splunkd service - command: "{{splunk.exec}} restart" - environment: - HOME: "{{splunk.home}}" - ignore_errors: true \ No newline at end of file diff --git a/packaging/technical-addon/packaging-scripts/orca-playbook-windows.yml b/packaging/technical-addon/packaging-scripts/orca-playbook-windows.yml index 30a2fa282a..b1b88acc99 100644 --- a/packaging/technical-addon/packaging-scripts/orca-playbook-windows.yml +++ b/packaging/technical-addon/packaging-scripts/orca-playbook-windows.yml @@ -1,10 +1,13 @@ -- hosts: all:!orca_role_custom:!orca_role_testrunner +- hosts: all become: yes become_method: runas - become_user: Administrator + become_user: splunk tasks: - name: Change timeout in splunk-ansible replace: path: /opt/ansible/roles/splunk_common/tasks/install_apps.yml regexp: 'timeout: 90' replace: 'timeout: 1000' + become: yes + become_method: runas + become_user: splunk