def _config_provided(filepath): config = configparser.ConfigParser() try: with open(filepath) as f_prov: config.read_file(f_prov) if not config.options('Microsoft Teams'): raise MissingConnectorConfigKeyException('missing connector key in provided config') except configparser.NoSectionError: raise MissingConnectorConfigKeyException('missing required Microsoft Teams / ' 'connector key in provided config') return config
def config_app(application): try: # Load the default configuration application.config.from_object('prom2teams.config.settings') # Load the configuration from the instance folder instance = os.path.join(os.path.join(root, os.pardir), 'instance') config = os.path.join(instance, 'config.py') if os.path.isdir(instance) and os.path.exists(config): application.config.from_pyfile(config) # Load the file specified by the APP_CONFIG_FILE environment variable # Variables defined here will override those in the default configuration if 'APP_CONFIG_FILE' in os.environ: config_provided = _config_provided(os.getenv('APP_CONFIG_FILE')) _update_application_configuration(application, config_provided) # Parse and load command line properties # Variables defined here will override previous configuration command_line_args = _config_command_line() if command_line_args.configpath: config_provided = _config_provided(command_line_args.configpath) _update_application_configuration(application, config_provided) if command_line_args.loglevel: application.config['LOG_LEVEL'] = command_line_args.loglevel if command_line_args.logfilepath: application.config['LOG_FILE_PATH'] = command_line_args.logfilepath if command_line_args.templatepath: application.config['TEMPLATE_PATH'] = command_line_args.templatepath if 'MICROSOFT_TEAMS' not in application.config: raise MissingConnectorConfigKeyException('missing connector key in config') except MissingConnectorConfigKeyException: sys.exit('No Microsoft Teams connector available')
def config_app(application): try: # Load the default configuration application.config.from_object('prom2teams.config.settings') # Load the configuration from the instance folder instance = os.path.join(os.path.join(root, os.pardir), 'instance') config = os.path.join(instance, 'config.py') if os.path.isdir(instance) and os.path.exists(config): application.config.from_pyfile(config) # Load the file specified by the APP_CONFIG_FILE environment variable # Variables defined here will override those in the default configuration if 'APP_CONFIG_FILE' in os.environ: application.config['APP_CONFIG_FILE'] = os.environ.get( 'APP_CONFIG_FILE') config_provided = _config_provided(os.getenv('APP_CONFIG_FILE')) _update_application_configuration(application, config_provided) # Parse and load command line properties # Variables defined here will override previous configuration command_line_args = _config_command_line() if command_line_args.configpath: application.config[ 'APP_CONFIG_FILE'] = command_line_args.configpath config_provided = _config_provided(command_line_args.configpath) _update_application_configuration(application, config_provided) if command_line_args.loglevel: application.config['LOG_LEVEL'] = command_line_args.loglevel if command_line_args.logfilepath: application.config['LOG_FILE_PATH'] = command_line_args.logfilepath if command_line_args.templatepath: application.config[ 'TEMPLATE_PATH'] = command_line_args.templatepath if command_line_args.groupalertsby: application.config[ 'GROUP_ALERTS_BY'] = command_line_args.groupalertsby if command_line_args.enablemetrics or os.environ.get( 'PROM2TEAMS_PROMETHEUS_METRICS', False): os.environ["DEBUG_METRICS"] = "True" from prometheus_flask_exporter import PrometheusMetrics metrics = PrometheusMetrics(application) if 'MICROSOFT_TEAMS' not in application.config: raise MissingConnectorConfigKeyException( 'missing connector key in config') except MissingConnectorConfigKeyException: sys.exit('No Microsoft Teams connector available')