Page MenuHomePhabricator
Paste P43171

dc-maint.sh current code
ActivePublic

Authored by BBlack on Jan 17 2023, 1:34 PM.
Tags
None
Referenced Files
F36276765: dc-maint.sh current code
Jan 17 2023, 1:34 PM
Subscribers
#!/bin/bash
depool() {
local service=$1
local datacenter=$2
if ! is_pooled "$service" "$datacenter"; then
echo "${service} already depooled"
return
fi
echo "* Depooling ${service} in ${datacenter}"
sudo confctl --quiet --object-type discovery select "dnsdisc=${service},name=${datacenter}" set/pooled=false
sleep 3
# Do not wipe caches for now, too many edge cases.
#echo "* Wiping dns caches for ${service}.discovery.wmnet"
#sudo cookbook sre.dns.wipe-cache "${service}.discovery.wmnet"
}
pool() {
local service=$1
local datacenter=$2
if is_pooled "$service" "$datacenter"; then
echo "${service} already depooled"
return
fi
echo "* Pooling ${service} in ${datacenter}"
sudo confctl --quiet --object-type discovery select "dnsdisc=${service},name=${datacenter}" set/pooled=true
# we don't need to wipe caches, coming back progressively is ok.
sleep 3
}
is_pooled() {
local service=$1
local datacenter=$2
if sudo confctl --quiet --object-type discovery select "dnsdisc=${service},name=${datacenter}" get | jq ".${datacenter}.pooled" | grep -q "true"; then
return 0
else
return 1
fi
}
ask_confirmation() {
read -p "Are you sure? [y/n]" -n 1 -r
echo " "
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
return 1
else
return 0
fi
}
if [ $# -lt 2 ]; then
echo "Usage: $0 <depool|pool> <codfw|eqiad>"
exit 1
fi
ACT="$1"
DC="$2"
# Generated with
# confctl --object-type discovery select 'name=codfw' get | jq .tags | perl -ne 'print "\"$1\" \\\n" if /\"dnsdisc=(.*)\"/'
SERVICE_TO_EXCLUDE_LIST=( "thanos-query" \
"swift-ro" \
"releases" \
"docker-registry" \
"netbox" \
"helm-charts" \
"thanos-swift" \
"aqs" \
"mwdebug" \
"mw-api-ext" \
"mw-web" \
"puppetdb-api" \
"toolhub" \
"apt" \
"search" \
"inference-staging" \
"blubberoid" \
"swift-rw" \
"appservers-rw" \
"jobrunner" \
"api-rw" \
"parsoid-php" \
"puppetboard" \
"k8s-ingress-staging" \
"kartotherian" \
"videoscaler" )
for srv in $(confctl --object-type discovery select 'name=codfw' get | jq .tags | perl -ne 'print "$1 " if /\"dnsdisc=(.*)\"/'); do
if [[ " ${SERVICE_TO_EXCLUDE_LIST[*]} " =~ " ${srv} " ]]; then
echo "#### $srv is excluded";
else
echo "#### $srv"
if ask_confirmation; then
if [ "$ACT" == "pool" ]; then
pool "$srv" "$DC"
fi
if [ "$ACT" == "depool" ]; then
depool "$srv" "$DC"
fi
else
echo "* Skipping"
fi
fi;
done

Event Timeline

I have separately depooled some of these (swift, thanos-swift, thanos-query) in codfw.