blob: 908f04f0bc9d967e6c4db2e3e90e35d744945252 [file] [log] [blame]
{{/*
# Copyright 2021-present Open Networking Foundation
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
*/}}
apiVersion: v1
kind: ConfigMap
metadata:
name: "tost-telegraf-config-script"
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
app: tost-telegraf
data:
sdfabric_telegraf.sh: |
#!/bin/bash
# Install kubectl and jq
curl -sLO https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl
install -m 755 kubectl /usr/local/bin/kubectl
apt update
apt install -y jq
# Utility for jq
cat <<EOF > ~/.jq
def count(s): reduce s as \$_ (0;.+1);
EOF
get-onos-server() {
ONOS_SERVER={{ .Values.onos.server }}
CONTROLLERS=( $(kubectl get -n tost --output json pods | \
jq '.items[] | select(.status.containerStatuses[].ready==true and .status.containerStatuses[].name=="onos-classic")' | \
jq -r .status.podIP) )
if (( ${#CONTROLLERS[@]} )); then
CONTROLLERS=( $(shuf -e "${CONTROLLERS[@]}") )
ONOS_SERVER=${CONTROLLERS[0]}
fi
}
while IFS= read -r LINE; do
# Topology matrix
get-onos-server
ACTIVE_LINKS=$(curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} --noproxy $ONOS_SERVER:{{ .Values.onos.port }} -X GET -H 'Accept: application/json' \
http://$ONOS_SERVER:{{ .Values.onos.port }}/onos/v1/links | \
jq 'count(.links[]?.state | select(. == "ACTIVE"))')
get-onos-server
DEVICES=$(curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} --noproxy $ONOS_SERVER:{{ .Values.onos.port }} -X GET -H 'Accept: application/json' \
http://$ONOS_SERVER:{{ .Values.onos.port }}/onos/v1/devices | \
jq 'count(.devices[]? | select(.available and .type=="SWITCH"))')
get-onos-server
ENABLE_DEVICE_PORTS=$(curl --fail -sSL --user {{ .Values.onos.username }}:{{ .Values.onos.password }} --noproxy $ONOS_SERVER:{{ .Values.onos.port }} -X GET -H 'Accept: application/json' \
http://$ONOS_SERVER:{{ .Values.onos.port }}/onos/v1/devices/ports | \
jq 'count(.ports[]?.isEnabled | select(.))')
ACTIVE_LINKS=${ACTIVE_LINKS:-0}
DEVICES=${DEVICES:-0}
ENABLED_DEVICE_PORTS=${ENABLED_DEVICE_PORTS:-0}
echo "onos_telegraf active_links=${ACTIVE_LINKS},enable_device_ports=${ENABLE_DEVICE_PORTS},devices=${DEVICES}"
# Readiness for each ONOS instance and the config loader(overall readiness)
kubectl get po -n {{ .Values.onos.namespace }} -l '{{ .Values.onos.onos_classic_label }}' -o json | \
jq -r '.items[]? | "onos_telegraf,pod=" + (.metadata.name) + " ready=" + (count(select(.status.containerStatuses[].ready)) | tostring)'
kubectl get po -n {{ .Values.onos.namespace }} -l '{{ .Values.onos.onos_config_loader_label }}' -o json | \
jq -r '"onos_telegraf,pod=onos-config-loader ready=" + (count(select(.items[0].status.containerStatuses[].ready)) | tostring)'
done