-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Expand file tree
/
Copy pathtelemetry.sh
More file actions
executable file
·88 lines (74 loc) · 3.26 KB
/
Copy pathtelemetry.sh
File metadata and controls
executable file
·88 lines (74 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env bash
EXIT_TELEMETRY_VARS_FILE_NOT_FOUND=1
TELEMETRY_VARS_FILE=/usr/share/sonic/templates/telemetry_vars.j2
if [ ! -f "$TELEMETRY_VARS_FILE" ]; then
echo "Telemetry vars template file not found"
exit $EXIT_TELEMETRY_VARS_FILE_NOT_FOUND
fi
# Try to read telemetry and certs config from ConfigDB.
# Use default value if no valid config exists
TELEMETRY_VARS=$(sonic-cfggen -d -t $TELEMETRY_VARS_FILE)
TELEMETRY_VARS=${TELEMETRY_VARS//[\']/\"}
X509=$(echo $TELEMETRY_VARS | jq -r '.x509')
GNMI=$(echo $TELEMETRY_VARS | jq -r '.gnmi')
CERTS=$(echo $TELEMETRY_VARS | jq -r '.certs')
TELEMETRY_ARGS=" -logtostderr"
export CVL_SCHEMA_PATH=/usr/sbin/schema
while true
do
if [ -n "$CERTS" ]; then
SERVER_CRT=$(echo $CERTS | jq -r '.server_crt')
SERVER_KEY=$(echo $CERTS | jq -r '.server_key')
CA_CRT=$(echo $CERTS | jq -r '.ca_crt')
logger "Trying to retrieve server certificate, key and Root CA certificate ..."
logger "The file path of server certificate in CONFIG_DB is: $SERVER_CRT"
logger "The file path of server provate key in CONFIG_DB is: $SERVER_KEY"
logger "The file path of Root CA certificate in CONFIG_DB is: $CA_CRT"
if [[ -f $SERVER_CRT && -f $SERVER_KEY && -f $CA_CRT ]]; then
logger "Succeeded in retrieving server certificate, key and Root CA certificate."
TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY --ca_crt $CA_CRT"
break
else
logger "Failed to retrieve server certificate, key or Root CA certificate!"
fi
elif [ -n "$X509" ]; then
SERVER_CRT=$(echo $X509 | jq -r '.server_crt')
SERVER_KEY=$(echo $X509 | jq -r '.server_key')
CA_CRT=$(echo $X509 | jq -r '.ca_crt')
logger "Trying to retrieve server certificate, key and Root CA certificate ..."
logger "The file path of server certificate in CONFIG_DB is: $SERVER_CRT"
logger "The file path of server provate key in CONFIG_DB is: $SERVER_KEY"
logger "The file path of Root CA certificate in CONFIG_DB is: $CA_CRT"
if [[ -f $SERVER_CRT && -f $SERVER_KEY && -f $CA_CRT ]]; then
logger "Succeeded in retrieving server certificate, key and Root CA certificate."
TELEMETRY_ARGS+=" --server_crt $SERVER_CRT --server_key $SERVER_KEY --ca_crt $CA_CRT"
break
else
logger "Failed to retrieve server certificate, key or Root CA certificate!"
fi
else
TELEMETRY_ARGS+=" --noTLS"
break
fi
logger "Sleeping 3600 seconds and checks the existence of secrets again ..."
sleep 3600
done
if [ -n "$GNMI" ]; then
PORT=$(echo $GNMI | jq -r '.port')
if [ ! -z $PORT ] || [ $PORT != "null" ]; then
TELEMETRY_ARGS+=" --port $PORT"
else
TELEMETRY_ARGS+=" --port 8080"
fi
LOG_LEVEL=$(echo $GNMI | jq -r '.log_level')
if [ ! -z $LOG_LEVEL ] || [ $LOG_LEVEL != "null" ]; then
TELEMETRY_ARGS+=" -v=$LOG_LEVEL"
else
TELEMETRY_ARGS+=" -v=2"
fi
CLIENT_AUTH=$(echo $GNMI | jq -r '.client_auth')
if [ -z $CLIENT_AUTH ] || [ $CLIENT_AUTH == "null" ] || [ $CLIENT_AUTH == "false" ]; then
TELEMETRY_ARGS+=" --allow_no_client_auth"
fi
fi
exec /usr/sbin/telemetry ${TELEMETRY_ARGS}