#!/bin/bash # Function to execute etcdctl commands execute_etcdctl() { local key=$1 local options=$2 kubectl -n kube-system exec etcd-kind-control-plane -- sh -c \ "ETCDCTL_API=3 etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt \ --key /etc/kubernetes/pki/etcd/server.key \ --cert /etc/kubernetes/pki/etcd/server.crt \ get $key $options" } # Function to extract size and metadata get_key_info() { local key=$1 local size=$(execute_etcdctl "$key" "--print-value-only" | wc -c) local count=$(execute_etcdctl "$key" "--write-out=fields" | grep "Count" | cut -f2 -d':') if [ "$count" -ne 0 ]; then local versions=$(execute_etcdctl "$key" "--write-out=fields" | grep "Version" | cut -f2 -d':') else local versions=0 fi # Return size, count, and versions as a string echo "$size $count $versions" } # Initialize sum total_size=0 output_file="/tmp/etcdkeys.txt" # Get list of policy report keys keys=$(execute_etcdctl "/registry/wgpolicyk8s.io/policyreports" "--prefix --keys-only") # Process each key for key in $keys; do read size count versions <<< $(get_key_info "$key") total=$((size * versions)) total_size=$((total_size + total)) # Log to output file echo "$total_size $total $size $versions $count $key" >> "$output_file" done # Print final total size echo "The total size for Policy Reports is $total_size bytes."