Last active
August 29, 2015 14:16
-
-
Save tkaemming/6102a522e8f2395aeaeb to your computer and use it in GitHub Desktop.
This file contains hidden or 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
(6fbda187737cc2cd)ted@aventador-3 % python remove-consumer.py --zookeeper $ZOOKEEPER tkaemming | |
/consumers/tkaemming (created 1 day, 3:21:37.186777 ago, modified 1 day, 3:21:37.186777 ago, version 0) | |
/consumers/tkaemming/offsets (created 1 day, 3:21:27.186777 ago, modified 1 day, 3:21:27.186777 ago, version 0) | |
/consumers/tkaemming/offsets/activity-metrics (created 1 day, 3:21:27.186777 ago, modified 1 day, 3:21:27.186777 ago, version 0) | |
/consumers/tkaemming/offsets/activity-metrics/3-1 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/offsets/activity-metrics/3-0 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/offsets/activity-metrics/1-1 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/offsets/activity-metrics/1-0 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/offsets/activity-metrics/2-1 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/offsets/activity-metrics/2-0 (created 1 day, 3:21:26.186777 ago, modified 0:31:03.186777 ago, version 1293) | |
/consumers/tkaemming/owners (created 1 day, 3:21:34.186777 ago, modified 1 day, 3:21:34.186777 ago, version 0) | |
/consumers/tkaemming/owners/activity-metrics (created 1 day, 3:21:33.186777 ago, modified 1 day, 3:21:33.186777 ago, version 0) | |
/consumers/tkaemming/ids (created 1 day, 3:21:37.186777 ago, modified 1 day, 3:21:37.186777 ago, version 0) | |
delete tree? [y/n] | |
y | |
removed consumers/tkaemming/offsets/activity-metrics/3-1 | |
removed consumers/tkaemming/offsets/activity-metrics/3-0 | |
removed consumers/tkaemming/offsets/activity-metrics/1-1 | |
removed consumers/tkaemming/offsets/activity-metrics/1-0 | |
removed consumers/tkaemming/offsets/activity-metrics/2-1 | |
removed consumers/tkaemming/offsets/activity-metrics/2-0 | |
removed consumers/tkaemming/offsets/activity-metrics | |
removed consumers/tkaemming/offsets | |
removed consumers/tkaemming/owners/activity-metrics | |
removed consumers/tkaemming/owners | |
removed consumers/tkaemming/ids | |
removed consumers/tkaemming | |
successfully removed tkaemming |
This file contains hidden or 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
#!/usr/bin/env python | |
import time | |
import pprint | |
import logging | |
import posixpath | |
from datetime import timedelta | |
from distutils.util import strtobool | |
import kazoo.client | |
logging.basicConfig(level=logging.WARN) | |
def walk(zookeeper, path): | |
node = zookeeper.get_async(path) | |
children = [] | |
for name in zookeeper.get_children(path): | |
children.append(walk(zookeeper, posixpath.join(path, name))) | |
return path, node.get(), children | |
now = time.time() | |
def history(stat): | |
return "created %s ago, modified %s ago, version %s" % ( | |
timedelta(seconds=now - (stat.ctime / 1000)), | |
timedelta(seconds=now - (stat.mtime / 1000)), | |
stat.version, | |
) | |
def format(stream, tree, depth=0, indent=" "): | |
write = lambda line: stream.write("%s%s\n" % (indent * depth, line)) | |
path, (data, stat), children = tree | |
write("/%s (%s)" % (path, history(stat))) | |
for child in children: | |
format(stream, child, depth=depth+1) | |
def prune(stream, zookeeper, tree): | |
path, (data, stat), children = tree | |
for child in children: | |
prune(stream, z, child) | |
zookeeper.delete(path) | |
stream.write("removed %s\n" % (path,)) | |
if __name__ == "__main__": | |
import optparse | |
import sys | |
parser = optparse.OptionParser() | |
parser.add_option("-z", "--zookeeper", default="localhost:2181") | |
options, (identifier,) = parser.parse_args() | |
z = kazoo.client.KazooClient(options.zookeeper) | |
z.start() | |
path = posixpath.join("consumers", identifier) | |
tree = walk(z, path) | |
format(sys.stderr, tree) | |
while True: | |
sys.stderr.write("\n") | |
sys.stderr.write("delete tree? [y/n]\n") | |
i = raw_input() | |
try: | |
ok = strtobool(i) | |
break | |
except ValueError: | |
sys.stderr.write("invalid input: %s\n" % (i,)) | |
if not ok: | |
sys.stderr.write("aborted\n") | |
sys.exit(1) | |
prune(sys.stderr, z, tree) | |
sys.stderr.write("\nsuccessfully removed %s\n" % (identifier,)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment