Skip to content

Instantly share code, notes, and snippets.

@nikolavp
Forked from rcrowley/whisper-clean.py
Last active December 19, 2015 16:19
Show Gist options
  • Save nikolavp/5982788 to your computer and use it in GitHub Desktop.
Save nikolavp/5982788 to your computer and use it in GitHub Desktop.
import os
import os.path
import sys
from graphite.render.hashing import ConsistentHashRing
whisper_base = '/opt/graphite/storage/whisper/'
instances = []
unwelcome_instances = []
for arg in sys.argv[1:]:
unwelcome = False
if arg.startswith('-'):
arg = arg[1:]
unwelcome = True
instance = tuple(arg.split(':', 2))
instances.append(instance)
if unwelcome:
unwelcome_instances.append(instance)
if 0 == len(instances):
print('Usage: python whisper-clean.py [-]<address>:<instance>[...]')
sys.exit(1)
ring = ConsistentHashRing(instances)
for dirname, dirnames, filenames in os.walk(whisper_base):
for filename in filenames:
pathname = os.path.join(dirname, filename)
basename, ext = os.path.splitext(filename)
if '.wsp' != ext:
print('skipping %s' % os.path.relpath(pathname, whisper_base))
if ring.get_node(os.path.relpath(os.path.join(dirname, basename), whisper_base).
replace('/', '.')) in unwelcome_instances:
print('unlinking %s' % pathname)
os.unlink(pathname)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment