#!/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 " 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