# name: application
# doc: the fully qualified module or class of the application
# converter: configman.converters.class_converter
# application='MiddlewareApp'

[database]

    # name: database_class
    # doc: None
    # converter: configman.converters.class_converter
    database_class='socorro.external.postgresql.connection_context.ConnectionContext'

    # name: database_host
    # doc: the hostname of the database
    # converter: str
    database_host='localhost'

    # name: database_name
    # doc: the name of the database
    # converter: str
    database_name='breakpad'

    # name: database_password
    # doc: the user's database password
    # converter: str
    database_password='aPassword'

    # name: database_port
    # doc: the port for the database
    # converter: int
    database_port='5432'

    # name: database_user
    # doc: the name of the user within the database
    # converter: str
    database_user='breakpad_rw'

[filesystem]

    # name: dump_field
    # doc: the default dump field
    # converter: str
    dump_field='upload_file_minidump'

    # name: dump_file_suffix
    # doc: the suffix used to identify a dump file
    # converter: str
    dump_file_suffix='.dump'

    # name: filesystem_class
    # doc: None
    # converter: configman.converters.class_converter
    filesystem_class='socorro.external.fs.crashstorage.FSLegacyRadixTreeStorage'

    # name: forbidden_keys
    # doc: a comma delimited list of keys to not allowed in the processed crash
    # converter: socorro.external.fs.crashstorage.<lambda>
    forbidden_keys='url, email, user_id, exploitability'

    # name: fs_root
    # doc: a path to a file system
    # converter: socorro.external.fs.crashstorage.<lambda>
    fs_root='/home/socorro/primaryCrashStore'

    # name: json_file_suffix
    # doc: the suffix used to identify a json file
    # converter: str
    json_file_suffix='.json'

    # name: jsonz_file_suffix
    # doc: the suffix used to identify a gzipped json file
    # converter: str
    jsonz_file_suffix='.jsonz'

    # name: name_branch_base
    # doc: the directory base name to use for the named radix tree storage
    # converter: str
    name_branch_base='name'

    # name: umask
    # doc: umask to use for new files
    # converter: int
    umask='18'

[hbase]

    # name: dump_file_suffix
    # doc: the suffix used to identify a dump file (for use in temp files)
    # converter: str
    dump_file_suffix='.dump'

    # name: forbidden_keys
    # doc: a comma delimited list of keys banned from the processed crash in HBase
    forbidden_keys='email, url, user_id, exploitability'

    # name: hbase_class
    # doc: None
    # converter: configman.converters.class_converter
    hbase_class='socorro.external.hb.crashstorage.HBaseCrashStorage'

    # name: hbase_connection_pool_class
    # doc: the class responsible for pooling and giving out HBaseconnections
    # converter: configman.converters.class_converter
    hbase_connection_pool_class='socorro.external.hb.connection_context.HBaseConnectionContextPooled'

    # name: hbase_host
    # doc: Host to HBase server
    # converter: str
    hbase_host='localhost'

    # name: hbase_port
    # doc: Port to HBase server
    # converter: int
    hbase_port='9090'

    # name: hbase_timeout
    # doc: timeout in milliseconds for an HBase connection
    # converter: int
    hbase_timeout='5000'

    # name: number_of_retries
    # doc: Max. number of retries when fetching from hbaseClient
    # converter: int
    number_of_retries='0'

    # name: temporary_file_system_storage_path
    # doc: a local filesystem path where dumps temporarily during processing
    # converter: str
    temporary_file_system_storage_path='/home/socorro/temp'

    # name: transaction_executor_class
    # doc: a class that will execute transactions
    # converter: configman.converters.class_converter
    transaction_executor_class='socorro.database.transaction_executor.TransactionExecutor'

[rabbitmq]

    # name: host
    # doc: the hostname of the RabbitMQ server
    # converter: str
    host='localhost'

    # name: port
    # doc: the port for the RabbitMQ server
    # converter: int
    port='5672'

    # name: priority_queue_name
    # doc: the name of priority crash queue name within RabbitMQ
    # converter: str
    priority_queue_name='socorro.priority'

    # name: rabbitmq_class
    # doc: None
    # converter: configman.converters.class_converter
    rabbitmq_class='socorro.external.rabbitmq.connection_context.ConnectionContext'

    # name: rabbitmq_connection_wrapper_class
    # doc: a classname for the type of wrapper for RabbitMQ connections
    # converter: configman.converters.class_converter
    rabbitmq_connection_wrapper_class='socorro.external.rabbitmq.connection_context.Connection'

    # name: rabbitmq_password
    # doc: the user's RabbitMQ password
    # converter: str
    rabbitmq_password='guest'

    # name: rabbitmq_user
    # doc: the name of the user within the RabbitMQ instance
    # converter: str
    rabbitmq_user='guest'

    # name: standard_queue_name
    # doc: the name of standard crash queue name within RabbitMQ
    # converter: str
    standard_queue_name='socorro.normal'

    # name: virtual_host
    # doc: the name of the RabbitMQ virtual host
    # converter: str
    virtual_host='/'

[http]

    [[correlations]]

        # name: base_url
        # doc: Base URL where correlations text files are
        # converter: str
        base_url='https://crash-analysis.mozilla.com/crash_analysis/'

        # name: save_download
        # doc: Whether files downloaded for correlations should be temporary stored on disk
        # converter: configman.converters.boolean_converter
        save_download='True'

        # name: save_root
        # doc: Directory where the temporary downloads are stored (if left empty will become the systems tmp directory)
        # converter: str
        save_root=''

        # name: save_seconds
        # doc: Number of seconds that the downloaded .txt file is stored in a temporary place
        # converter: int
        save_seconds='600'

[implementations]

    # name: implementation_list
    # doc: list of packages for service implementations
    # converter: items_list_converter
    #implementation_list='psql: socorro.external.postgresql, fs: socorro.external.fs, http:socorro.external.http, es:socorro.external.elasticsearch'

    # name: service_overrides
    # doc: comma separated list of class overrides, e.g `Crashes: hbase`
    # converter: items_list_converter
    #service_overrides='CrashData: fs, Correlations: http, CorrelationsSignatures: http, SuperSearch: es, Priorityjobs: rabbitmq'

[logging]

    # name: stderr_error_logging_level
    # doc: logging level for the logging to stderr (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
    # converter: int
    stderr_error_logging_level='10'

    # name: stderr_line_format_string
    # doc: python logging system format for logging to stderr
    # converter: str
    stderr_line_format_string='{asctime} {levelname} - {threadName} - {message}'

    # name: syslog_error_logging_level
    # doc: logging level for the log file (10 - DEBUG, 20 - INFO, 30 - WARNING, 40 - ERROR, 50 - CRITICAL)
    # converter: int
    syslog_error_logging_level='40'

    # name: syslog_facility_string
    # doc: syslog facility string ("user", "local0", etc)
    # converter: str
    syslog_facility_string='user'

    # name: syslog_host
    # doc: syslog hostname
    # converter: str
    syslog_host='localhost'

    # name: syslog_line_format_string
    # doc: python logging system format for syslog entries
    # converter: str
    syslog_line_format_string='middleware (pid {process}): {asctime} {levelname} - {threadName} - {message}'

    # name: syslog_port
    # doc: syslog port
    # converter: int
    syslog_port='514'

[web_server]

    # name: ip_address
    # doc: the IP address from which to accept submissions
    # converter: str
    ip_address='127.0.0.1'

    # name: port
    # doc: the port to listen to for submissions
    # converter: int
    port='8883'

    # name: wsgi_server_class
    # doc: a class implementing a wsgi web server
    # converter: configman.converters.class_converter
    #wsgi_server_class='socorro.webapi.servers.CherryPy'
    wsgi_server_class='socorro.webapi.servers.ApacheModWSGI'

[webapi]

    # name: channels
    # doc: List of release channels, excluding the `release` one.
    # converter: string_to_list
    channels='beta, aurora, nightly'

    # name: elasticSearchHostname
    # doc: String containing the URI of the Elastic Search instance.
    # converter: str
    elasticSearchHostname='localhost'

    # name: elasticSearchPort
    # doc: String containing the port on which calling the Elastic Search instance.
    # converter: str
    elasticSearchPort='9200'

    # name: elasticsearch_index
    # doc: an index format to pull crashes from elasticsearch (use datetime's strftime format to have daily, weekly or monthly indexes)
    # converter: str
    elasticsearch_index='socorro%Y%W'

    # name: platforms
    # doc: Array associating OS ids to full names.
    # converter: <lambda>
    #platforms=''

    # name: restricted_channels
    # doc: List of release channels to restrict based on build ids.
    # converter: string_to_list
    restricted_channels='beta'

    # name: searchMaxNumberOfDistinctSignatures
    # doc: Integer containing the maximum allowed number of distinct signatures the system should retrieve. Used mainly for performances in ElasticSearch
    # converter: int
    searchMaxNumberOfDistinctSignatures='1000'

