verify_config_reference.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from __future__ import print_function
  2. from fileinput import input
  3. from sys import exit, stderr
  4. from celery.app.defaults import NAMESPACES, flatten
  5. ignore = frozenset([
  6. 'CELERYD_AGENT',
  7. 'CELERYD_POOL_PUTLOCKS',
  8. 'BROKER_HOST',
  9. 'BROKER_USER',
  10. 'BROKER_PASSWORD',
  11. 'BROKER_VHOST',
  12. 'BROKER_PORT',
  13. 'CELERY_REDIS_HOST',
  14. 'CELERY_REDIS_PORT',
  15. 'CELERY_REDIS_DB',
  16. 'CELERY_REDIS_PASSWORD',
  17. ])
  18. def is_ignored(setting, option):
  19. return setting in ignore or option.deprecate_by
  20. def find_undocumented_settings(directive='.. setting:: '):
  21. settings = dict(flatten(NAMESPACES))
  22. all = set(settings)
  23. documented = set(line.strip()[len(directive):].strip()
  24. for line in input()
  25. if line.strip().startswith(directive))
  26. return [setting for setting in all ^ documented
  27. if not is_ignored(setting, settings[setting])]
  28. if __name__ == '__main__':
  29. sep = '\n * '
  30. missing = find_undocumented_settings()
  31. if missing:
  32. print('Error: found undocumented settings:{0}{1}'.format(
  33. sep, sep.join(sorted(missing))), file=stderr)
  34. exit(1)
  35. print('OK: Configuration reference complete :-)')
  36. exit(0)