verify_config_reference.py 1.3 KB

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