Regexp support
This commit is contained in:
commit
0d686f9f8d
70
mzrm
Executable file
70
mzrm
Executable file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
from kazoo.client import KazooClient
|
||||
import argparse
|
||||
import re
|
||||
import sys
|
||||
|
||||
# Parse args
|
||||
parser = argparse.ArgumentParser(description="""
|
||||
Remove all childrens started with pattern(regexp is supported too).
|
||||
|
||||
|
||||
USE THIS AT YOUR OWN RISK! THIS SOFTWARE MAY CONTAIN BUGS,
|
||||
AND MAY DESTROY YOUR DATA AND KILL YOUR PARENTS,
|
||||
EVEN IF USED CORRECTLY. YOU HAVE BEEN WARNED!
|
||||
""")
|
||||
parser.add_argument('--zk', help='Zookeeper hosts: node1:2181,node2:2181',
|
||||
default='localhost:2181')
|
||||
parser.add_argument('--path', help='Zookeeper path: /my/path/to',
|
||||
default='/THIS_PATH_IS_NOT_EXISTS')
|
||||
parser.add_argument('--child', help='Zookeeper child name start pattern: hell')
|
||||
parser.add_argument('--regex', help='PCRE expression')
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
def prepare_args():
|
||||
path = args.path
|
||||
|
||||
# Remove / from path
|
||||
if re.match('.+(/)$', path):
|
||||
path = path[:-1]
|
||||
|
||||
# prepare regex
|
||||
regex = None
|
||||
if args.regex is not None:
|
||||
regex = re.compile(args.regex)
|
||||
|
||||
return path, regex
|
||||
|
||||
|
||||
def remove(child):
|
||||
node = path + '/' + child
|
||||
if regex is not None:
|
||||
if regex.match(child):
|
||||
rmr(node, child)
|
||||
else:
|
||||
if child.startswith(args.child):
|
||||
rmr(node, child)
|
||||
|
||||
|
||||
def rmr(node, child):
|
||||
print('Found ' + child)
|
||||
print('Delete ' + node)
|
||||
try:
|
||||
zk.delete(node)
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
zk = KazooClient(hosts=args.zk)
|
||||
zk.start()
|
||||
|
||||
path, regex = prepare_args()
|
||||
|
||||
# Do it
|
||||
for child in zk.get_children(path):
|
||||
remove(child)
|
||||
|
||||
zk.stop()
|
Loading…
Reference in New Issue
Block a user