From 19a9d49fe84f0ba89de04001d2a5d0c8cc3f135a Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Thu, 18 Aug 2016 09:50:29 -0700 Subject: [PATCH] Add a script to print the ZK tree This script uses a nodepool config file to connect to ZK and print the entire contents of the ZK tree for debugging purposes. Change-Id: I31566e15d915e701639325f757d1b917ad93c780 --- tools/print-zk.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tools/print-zk.py diff --git a/tools/print-zk.py b/tools/print-zk.py new file mode 100644 index 000000000..13a52145f --- /dev/null +++ b/tools/print-zk.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import argparse +import logging + +import nodepool.config +import nodepool.zk + +# A script to print the zookeeper tree given a nodepool config file. + +logging.basicConfig() + +parser = argparse.ArgumentParser(description='Print the zookeeper tree') +parser.add_argument('-c', dest='config', + default='/etc/nodepool/nodepool.yaml', + help='path to config file') +args = parser.parse_args() + +config = nodepool.config.loadConfig(args.config) + +zk = nodepool.zk.ZooKeeper() +zk.connect(config.zookeeper_servers.values()) + +def join(a, b): + if a.endswith('/'): + return a+b + return a+'/'+b + +def print_tree(node): + data, stat = zk.client.get(node) + print "Node: %s %s" % (node, stat) + if data: + print data + + for child in zk.client.get_children(node): + print + print_tree(join(node, child)) + +print_tree('/') +zk.disconnect()