delete_old_binaries.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import subprocess
  2. import sys
  3. import json
  4. import datetime
  5. import urllib.parse
  6. import sys
  7. def main():
  8. files_by_date = {}
  9. bucket = sys.argv[1]
  10. days_to_keep = int(sys.argv[2])
  11. print(f"Looking for binaries to delete older than {days_to_keep} days")
  12. files_lines = execute_cli(f"b2 ls --long --versions {bucket} nightly").split("\n")
  13. for x in files_lines:
  14. parts = [y for y in x.split(' ') if y]
  15. if parts and parts[0]:
  16. date = datetime.datetime.strptime(parts[2], '%Y-%m-%d').replace(hour=0, minute=0, second=0, microsecond=0)
  17. now = datetime.datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
  18. delta = now - date
  19. if delta.days > days_to_keep:
  20. print(f'Deleting {parts[5]}')
  21. execute_cli(f'b2 delete-file-version {parts[0]}')
  22. def execute_cli(command):
  23. sb = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
  24. return sb.stdout.read().decode("utf-8");
  25. if __name__ == '__main__':
  26. sys.exit(main())