/dnsdb/config.py

https://github.com/qunarcorp/open_dnsdb · Python · 137 lines · 112 code · 19 blank · 6 comment · 5 complexity · 17923dc3fe309a3e7624880684366b80 MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. from datetime import timedelta
  5. from oslo_config import cfg
  6. CONF = cfg.CONF
  7. CONF.register_opts([
  8. cfg.StrOpt('log-dir'),
  9. cfg.StrOpt('log-file'),
  10. cfg.StrOpt('debug'),
  11. cfg.StrOpt('verbose'),
  12. ], 'log')
  13. CONF.register_opts([
  14. cfg.StrOpt('connection'),
  15. cfg.StrOpt('data'),
  16. ], 'DB')
  17. CONF.register_opts([
  18. cfg.StrOpt('server'),
  19. cfg.StrOpt('port'),
  20. cfg.StrOpt('from_addr'),
  21. cfg.StrOpt('password', default=''),
  22. cfg.StrOpt('info_list'),
  23. cfg.StrOpt('alert_list'),
  24. ], 'MAIL')
  25. CONF.register_opts([
  26. cfg.StrOpt('allow_ip'),
  27. cfg.StrOpt('secret_key'),
  28. cfg.StrOpt('env'),
  29. cfg.StrOpt('header_template', default='../etc/template/zone_header')
  30. ], 'etc')
  31. CONF.register_opts([
  32. cfg.IntOpt('dnsupdater_port'),
  33. ], 'api')
  34. CONF.register_opts([
  35. cfg.StrOpt('acl_groups'),
  36. cfg.IntOpt('cname_ttl'),
  37. cfg.StrOpt('view_zone'),
  38. cfg.DictOpt('normal_view'),
  39. cfg.DictOpt('normal_cname'),
  40. ], 'view')
  41. CONF.register_opts([
  42. cfg.StrOpt('base-url',
  43. default='/',
  44. help='The url prefix of this site.'),
  45. cfg.StrOpt('run-mode',
  46. default="werkzeug",
  47. choices=('gunicorn', 'werkzeug'),
  48. help="Run server use the specify mode."),
  49. cfg.StrOpt('bind',
  50. default='0.0.0.0',
  51. help='The IP address to bind'),
  52. cfg.IntOpt('port',
  53. default=8080,
  54. help='The port to listen'),
  55. cfg.BoolOpt('debug',
  56. default=False),
  57. ], 'web')
  58. CONF.register_opts([
  59. cfg.StrOpt('config',
  60. default=None,
  61. help='The path to a Gunicorn config file.'),
  62. cfg.StrOpt('bind',
  63. default='127.0.0.1:8888'),
  64. cfg.IntOpt('workers',
  65. default=0,
  66. help='The number of worker processes for handling requests'),
  67. cfg.BoolOpt('daemon',
  68. default=False,
  69. help='Daemonize the Gunicorn process'),
  70. cfg.StrOpt('accesslog',
  71. default=None,
  72. help='The Access log file to write to.'
  73. '"-" means log to stderr.'),
  74. cfg.StrOpt('loglevel',
  75. default='info',
  76. help='The granularity of Error log outputs.',
  77. choices=('debug', 'info', 'warning', 'error', 'critical')),
  78. cfg.BoolOpt('ignore-healthcheck-accesslog',
  79. default=False),
  80. cfg.IntOpt('timeout',
  81. default=30,
  82. help='Workers silent for more than this many seconds are '
  83. 'killed and restarted.'),
  84. cfg.StrOpt('worker-class',
  85. default='sync',
  86. help='The type of workers to use.',
  87. choices=('sync', 'eventlet', 'gevent', 'tornado'))
  88. ], 'gunicorn')
  89. def setup_config(app_env, app_kind, conf_dir):
  90. if "--" in sys.argv:
  91. args = sys.argv[sys.argv.index("--") + 1:]
  92. else:
  93. args = []
  94. common_config_file = os.path.join(conf_dir, "etc/{}/common.conf".format(app_env))
  95. default_config_files = [common_config_file]
  96. app_config_file = os.path.join(conf_dir, "etc/{}/{}.conf".format(app_env, app_kind))
  97. default_config_files.append(app_config_file)
  98. CONF(default_config_files=default_config_files, args=args)
  99. class Config(object):
  100. def __init__(self, app_env, app_kind, conf_dir):
  101. # print 'conf_dir: ', conf_dir
  102. if "--" in sys.argv:
  103. args = sys.argv[sys.argv.index("--") + 1:]
  104. else:
  105. args = []
  106. common_config_file = os.path.join(conf_dir, "etc/{}/common.conf".format(app_env))
  107. default_config_files = [common_config_file]
  108. app_config_file = os.path.join(conf_dir, "etc/{}/{}.conf".format(app_env, app_kind))
  109. default_config_files.append(app_config_file)
  110. CONF(default_config_files=default_config_files, args=args)
  111. self.SECRET_KEY = os.environ.get('SECRET_KEY') or CONF.etc.secret_key
  112. self.SQLALCHEMY_DATABASE_URI = CONF.DB.connection
  113. self.SQLALCHEMY_TRACK_MODIFICATIONS = False
  114. self.PERMANENT_SESSION_LIFETIME = timedelta(days=1)
  115. # SECRET_KEY = os.environ.get('SECRET_KEY') or CONF.etc.secret_key
  116. # SQLALCHEMY_DATABASE_URI = CONF.DB.connection
  117. # SQLALCHEMY_TRACK_MODIFICATIONS = False
  118. # PERMANENT_SESSION_LIFETIME = timedelta(days=1)