 cb87c6e2c5
			
		
	
	cb87c6e2c5
	
	
	
		
			
			Create a tool that can clear any leftover garbage left by the testing of taskflow unit tests with zookeeper for when this is needed (for example, a test does not clean up correctly on its own). Change-Id: Icfaf28273b76a6ca27683d174f111fba2858f055
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import contextlib
 | |
| import os
 | |
| import re
 | |
| import sys
 | |
| 
 | |
| top_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),
 | |
|                                        os.pardir))
 | |
| sys.path.insert(0, top_dir)
 | |
| 
 | |
| from taskflow.utils import kazoo_utils
 | |
| 
 | |
| 
 | |
| @contextlib.contextmanager
 | |
| def finalize_client(client):
 | |
|     try:
 | |
|         yield client
 | |
|     finally:
 | |
|         kazoo_utils.finalize_client(client)
 | |
| 
 | |
| 
 | |
| def iter_children(client, path):
 | |
|     if client.exists(path):
 | |
|         for child_path in client.get_children(path):
 | |
|             if path == "/":
 | |
|                 child_path = "/%s" % (child_path)
 | |
|             else:
 | |
|                 child_path = "%s/%s" % (path, child_path)
 | |
|             yield child_path
 | |
|             for child_child_path in iter_children(client, child_path):
 | |
|                 yield child_child_path
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     conf = {}
 | |
|     if len(sys.argv) > 1:
 | |
|         conf['hosts'] = sys.argv[1:]
 | |
|     with finalize_client(kazoo_utils.make_client(conf)) as client:
 | |
|         client.start(timeout=1.0)
 | |
|         children = list(iter_children(client, "/taskflow"))
 | |
|         for child_path in reversed(children):
 | |
|             if not re.match(r"^/taskflow/(.*?)-test/(.*)$", child_path):
 | |
|                 continue
 | |
|             print("Deleting %s" % child_path)
 | |
|             client.delete(child_path)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |