summaryrefslogtreecommitdiffstats
path: root/claim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--claim/claim.c4
-rwxr-xr-xclaim/netdata-claim.sh.in50
2 files changed, 43 insertions, 11 deletions
diff --git a/claim/claim.c b/claim/claim.c
index bb931608..9a3660f9 100644
--- a/claim/claim.c
+++ b/claim/claim.c
@@ -2,7 +2,11 @@
#include "claim.h"
#include "../registry/registry_internals.h"
+#ifndef ACLK_NG
#include "../aclk/legacy/aclk_common.h"
+#else
+#include "../aclk/aclk.h"
+#endif
char *claiming_pending_arguments = NULL;
diff --git a/claim/netdata-claim.sh.in b/claim/netdata-claim.sh.in
index 7ac91d7f..e0fd85a1 100755
--- a/claim/netdata-claim.sh.in
+++ b/claim/netdata-claim.sh.in
@@ -85,15 +85,22 @@ ERROR_MESSAGES[17]="Service Unavailable"
# Exit code: 18 - Agent unique id is not generated yet.
+NETDATA_RUNNING=1
+
get_config_value() {
conf_file="${1}"
section="${2}"
key_name="${3}"
- config_result=$(@sbindir_POST@/netdatacli 2>/dev/null read-config "$conf_file|$section|$key_name"; exit $?)
- # shellcheck disable=SC2181
- if [ "$?" != "0" ]; then
- echo >&2 "cli failed, assume netdata is not running and query the on-disk config"
- config_result=$(@sbindir_POST@/netdata 2>/dev/null -W get2 "$conf_file" "$section" "$key_name" unknown_default)
+ if [ "${NETDATA_RUNNING}" -eq 1 ]; then
+ config_result=$(@sbindir_POST@/netdatacli 2>/dev/null read-config "$conf_file|$section|$key_name"; exit $?)
+ result="$?"
+ if [ "${result}" -ne 0 ]; then
+ echo >&2 "Unable to communicate with Netdata daemon, querying config from disk instead."
+ NETDATA_RUNNING=0
+ fi
+ fi
+ if [ "${NETDATA_RUNNING}" -eq 0 ]; then
+ config_result=$(@sbindir_POST@/netdata 2>/dev/null -W get2 "$conf_file" "$section" "$key_name" unknown_default)
fi
echo "$config_result"
}
@@ -116,7 +123,7 @@ if [ "@enable_cloud_POST@" = "no" ]; then
exit 3
fi
# shellcheck disable=SC2050
-if [ "@can_enable_aclk_POST@" != "yes" ]; then
+if [ "@enable_aclk_POST@" != "yes" ]; then
echo >&2 "This agent was built without the dependencies for Cloud and cannot be claimed"
exit 3
fi
@@ -141,13 +148,33 @@ NETDATA_USER=$(get_config_value netdata global "run as user")
[ -z "$EUID" ] && EUID="$(id -u)"
+gen_id() {
+ local id
+
+ id="$(uuidgen)"
+
+ if [ "${id}" = "8a795b0c-2311-11e6-8563-000c295076a6" ] || [ "${id}" = "4aed1458-1c3e-11e6-a53f-000c290fc8f5" ]; then
+ gen_id
+ else
+ echo "${id}"
+ fi
+}
+
# get the MACHINE_GUID by default
if [ -r "${MACHINE_GUID_FILE}" ]; then
ID="$(cat "${MACHINE_GUID_FILE}")"
MGUID=$ID
-else
- echo >&2 "netdata.public.unique.id is not generated yet or not readable. Please run agent at least once before attempting to claim. Agent generates this file on first startup. If the ID is generated already make sure you have rights to read it (Filename: ${MACHINE_GUID_FILE})."
+elif [ -f "${MACHINE_GUID_FILE}" ]; then
+ echo >&2 "netdata.public.unique.id is not readable. Please make sure you have rights to read it (Filename: ${MACHINE_GUID_FILE})."
exit 18
+else
+ if mkdir -p "${MACHINE_GUID_FILE%/*}" && /bin/echo -n "$(gen_id)" > "${MACHINE_GUID_FILE}"; then
+ ID="$(cat "${MACHINE_GUID_FILE}")"
+ MGUID=$ID
+ else
+ echo >&2 "Failed to write new machine GUID. Please make sure you have rights to write to ${MACHINE_GUID_FILE}."
+ exit 18
+ fi
fi
# get token from file
@@ -174,6 +201,7 @@ do
-noproxy) NOPROXY=yes ;;
-noreload) RELOAD=0 ;;
-user=*) NETDATA_USER=${arg:6} ;;
+ -daemon-not-running) NETDATA_RUNNING=0 ;;
*) echo >&2 "Unknown argument ${arg}"
exit 1 ;;
esac
@@ -254,7 +282,7 @@ fi
if [ "${URLTOOL}" = "curl" ] ; then
- URLCOMMAND="curl --connect-timeout 5 --retry 0 -s -i -X PUT -d \"@${CLAIMING_DIR}/tmpin.txt\""
+ URLCOMMAND="curl --connect-timeout 30 --retry 0 -s -i -X PUT -d \"@${CLAIMING_DIR}/tmpin.txt\""
if [ "${NOPROXY}" = "yes" ] ; then
URLCOMMAND="${URLCOMMAND} -x \"\""
elif [ -n "${PROXY}" ] ; then
@@ -313,7 +341,7 @@ attempt_contact () {
return 0
}
-for i in {1..5}
+for i in {1..3}
do
if attempt_contact ; then
echo "Connection attempt $i successful"
@@ -344,7 +372,7 @@ case ${ERROR_KEY} in
*) EXIT_CODE=7 ;;
esac
-HTTP_STATUS_CODE=$(grep "HTTP" "${CLAIMING_DIR}/tmpout.txt" | awk -F " " '{print $2}')
+HTTP_STATUS_CODE=$(grep "HTTP" "${CLAIMING_DIR}/tmpout.txt" | tail -1 | awk -F " " '{print $2}')
if [ "${HTTP_STATUS_CODE}" = "204" ] ; then
EXIT_CODE=0
fi