Created
May 3, 2016 18:13
-
-
Save noisesmith/7e5b66f2c4275e25e8aeb4d382b7c9b7 to your computer and use it in GitHub Desktop.
clean some things from zk, kafka, mongo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# vars | |
## EDITOR/VISUAL - what process to use to pick targets interactively | |
## ZK_WL - regex for zookeeper paths not to remove | |
## KAFKA_WL - regex for kafka topics not to remove | |
## MONGO_WL - regex for mongo item ids not to remove | |
# set -x | |
editor=${VISUAL:-${EDITOR:-'nano'}} | |
zk_default_wl='clients|config|brokers|zookeeper|admin|isr_change_notification|controller-epoch' | |
zk_whitelist=${ZK_WL:-${ZK_WHITELIST:-${zk_default_wl}}} | |
kafka_whitelist=${KAFKA_WL:-${KAFKA_WHITELIST:-'kingfisher.*'}} | |
mongo_whitelist=${MONGO_WL:-${MONGO_WHITELIST:-'.^'}} | |
main () { | |
# clean kafka | |
kafka_topics=$(kafka_get_topics) | |
select_items selected ${kafka_whitelist} ${kafka_topics} | |
kafka_delete_topics ${selected} | |
# clean zookeeper | |
zk_topics=$(zk_get_topics|zk_clean_topics) | |
select_items selected ${zk_whitelist} ${zk_topics} | |
zk_delete_topics ${selected} | |
# clean mongo | |
mongo_tasks=$(mongo_get_tasks) | |
select_items selected ${mongo_whitelist} ${mongo_tasks} | |
mongo_delete_tasks ${selected} | |
} | |
################# zookeeper ###################### | |
################################################## | |
zk () { | |
echo $* | zkCli -server 127.0.0.1 | |
} | |
zk_get_topics () { | |
zk "ls /" | grep ']$' | |
} | |
zk_clean_topics () { | |
sed -e 's/^\[\(.*\)]$/\1/' -e 's/, /\\n/g' | |
} | |
zk_delete_topics () { | |
for i in $*; do zk rmr '/'${i}; done | |
} | |
################################################## | |
############### kafka ############################ | |
################################################## | |
kafka () { | |
kafka-topics --zookeeper localhost:2181 $* | |
} | |
kafka_get_topics () { | |
kafka -list | |
} | |
kafka_delete_topics () { | |
echo deleting $* from kafka | |
for i in $* | |
do kafka --delete --topic $i | |
done | |
} | |
################################################## | |
############### mongo ############################ | |
################################################## | |
_mongo () { | |
mongo littlebird --quiet --eval "${1}" | |
} | |
mongo_get_tasks () { | |
command='var tasks=db.tasks.find(); | |
tasks.forEach(function(x){print(x._id);});' | |
_mongo "${command}" | |
} | |
mongo_delete_tasks () { | |
# echo deleting $* from mongo | |
for i in $* | |
do _mongo 'db.tasks.remove('${i}');' | |
done | |
} | |
################################################## | |
select_items () { | |
tmpfile=$(mktemp /tmp/cleanup.XXXX) | |
target_var=$1 | |
shift | |
whitelist=$1 | |
shift | |
# echo "whitelist is ${whitelist}" | |
per_line $(echo $@ | comment_items ${whitelist}) > $tmpfile | |
$editor $tmpfile | |
# tricky! - this sets the val for the symbol for arg 1 | |
eval $target_var='$(grep -v ^# $tmpfile)' | |
rm $tmpfile | |
} | |
comment_items () { | |
sed -E 's/'${1}'/#&/' | |
} | |
per_line () { | |
for i in $(echo $* | sed -E "s/- marked for deletion//g") | |
do echo $i | |
done | |
} | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment