#
# This file is ordered alphabetically.  Please help keep it that way! -- mars
#

[answertracker]
# The database user which will be used to expire questions.
# datatype: string
dbuser: answertracker
storm_cache: generational
storm_cache_size: 500

# The number of days of inactivity required before a question in
# the open or needs information state is expired.
# datatype: integer
days_before_expiration: 15

# The email domain, to which incomings emails should be sent.
# datatype: string
email_domain: answers.launchpad.net


[archivepublisher]
# The database user which will be used by this process.
# datatype: string
dbuser: archivepublisher

# Location where the run-parts directories for publish-ftpmaster
# customization are to be found.  Absolute path, or path relative to the
# Launchpad source tree, or "none" to skip execution of run-parts.
#
# Under this directory, publish-ftpmaster will look for directories
# <distro>/publish-distro.d and <distro>/finalize.d.
#
# datatype: string
run_parts_location: none


[binaryfile_expire]
dbuser: binaryfile-expire
storm_cache: generational
storm_cache_size: 500


[branchscanner]
branch_revision_delete_count: 100
# The database user which will be used by this process.
# datatype: string
dbuser: branchscanner
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[builddmaster]
# The database user which will be used by this process.
# THIS IS DEPRECATED, as the remaining code pulling this config item
# should not be and fixed to use dedicated users.
# datatype: string
dbuser: fiera
storm_cache: generational
storm_cache_size: 500

# datatype: string
default_sender_address: noreply@launchpad.net

# Command-line used to reset the virtual builder. 'vm_host'
# variable will be replaced by the context builder virtual
# machine host.
# datatype: string
vm_resume_command: echo %(vm_host)s

# The time in seconds that the builddmaster will wait for a
# reply from buildd slave.
# datatype: integer
socket_timeout: 40

# Activate the Build Notification system.
# datatype: boolean
send_build_notification: True

# datatype: string
default_sender_name: Launchpad Buildd System

# Controls the notification of sourcepackagerelease.creator.
# If disable only the default_recipient will be notified.
# datatype: boolean
notify_owner: True

# This is the command invoked by the buildd master when it wants
# to process a package upload into the launchpad. The buildd
# master splits the command on spaces so no escaping is allowed.
# If the token BUILDID is present, the build master will replace
# it with the ID of the build record for the upload.
# The build master will append the directory containing the files
# to the command before executing it.
# datatype: string
uploader: none

# Directory to be created to store build results.
# datatype: string
root: none

# Optional sources.list entry to send to build slaves when doing recipe
# builds involving bzr-builder.  Use this form so that the series is set:
# deb http://foo %(series)s main
# datatype: string
bzr_builder_sources_list: none


[buildsequencer]
# The name of the log file for the sequencer (passed to twistd)
# datatype: string
logfile: none

# If true, the buildsequencer will be started by the startup
# scripts. It makes no sense to allow the sequencer to start by
# default on a developer machine because they're unlikely to have
# a build farm of their own. This does not prevent the daemon
# from ever starting.
# datatype: boolean
launch: False

# If one of the subprocesses exits with a failure code then the
# build sequencer will email this address with the output of
# the subprocess. If this variable is set to a single dash then
# the output will simply be logged instead.
# datatype: string
mailproblemsto:

# datatype: boolean
spew: False

# datatype: string
smtphost: localhost

# datatype: string
fromaddress: launchpad@lists.canonical.com

[buildsequencer_job.template]
# The subprocess to run. You can assume LPCONFIG will be set
# and that PYTHONPATH will be set to include the launchpad/lib
# directory and that CWD will be the top level of the launchpad
# tree itself. But that is all.
# datatype: string
command: none

# The minimum delay between invocations of this job type. The
# slavescanner probably wants to be set to 5 seconds or so but
# the queue builder probably wants 5 minutes or so (900 seconds).
# Other tasks will have varying requirements placed on them.
# datatype: integer
mindelay: 1

# If set to true, the output of this job will always be logged to
# the sequencer log file.
# datatype: boolean
alwayslog: false


[buildsequencer_job.slave_scanner]
command: cronscripts/buildd-slave-scanner.py
mindelay: 5


[build_from_branch]
enabled = False


# Configuration for spawned Bazaar subprocesses.
[bzr_lpserve]
# See [error_reports].
oops_prefix: none
# See [error_reports].
error_dir: none


[calculate_bug_heat]
# The database user which will be used by this process.
# datatype: string
dbuser: calculate-bug-heat
oops_prefix: none
error_dir: none
max_heat_age: 7


[canonical]
# datatype: boolean
show_tracebacks: False

# datatype: string
noreply_from_address: noreply@launchpad.net

# datatype: existing_directory
pid_dir: /var/tmp

# datatype: string
bounce_address: bounces@canonical.com

# datatype: string
admin_address: system-error@launchpad.net

# datatype: urlbase
cron_control_url: file:cronscripts.ini


[checkwatches]
# The database user to run this process as.
# datatype: string
dbuser: checkwatches
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none

# datatype: integer
batch_query_threshold: 10

# datatype: integer
default_socket_timeout: 30

# datatype: boolean
sync_comments: True

# datatype: boolean
sync_debbugs_comments: False

# The URL to the internal XML-RPC server.
# datatype: string
xmlrpc_url: http://xmlrpc-private.launchpad.dev:8087/bugs

[checkwatches.credentials]
# Login credentials for bug trackers.
rt.example.com.username: none
rt.example.com.password: none
rt.cpan.org.username: none
rt.cpan.org.password: none
bugzilla-3.4.example.com.username: none
bugzilla-3.4.example.com.password: none
bugzilla.gnome.org.username: none
bugzilla.gnome.org.password: none
bugzilla.mozilla.org.username: none
bugzilla.mozilla.org.password: none
gcc.gnu.org.username: none
gcc.gnu.org.password: none


[codebrowse]
# Where to store codebrowse's sqlite "files changed" caches.  If
# empty, the logs will be stored in a folder called 'logs' next to the
# start-loggerhead.py script.
#
# datatype: string
cachepath:

# Where to put codebrowse's "debug.log" and "access.log" files.
#
# datatype: string
log_folder:

# Where to redirect invalid pages to.
#
# datatype: string
launchpad_root:

# The IP address to listen on.
#
# datatype: string
listen_host: 0.0.0.0

# The port to listen on.
#
# datatype: int
port: 8080

# A file path that contains a secret used for verifying cookies sent
# to codebrowse.  This file should ideally contain 64 bytes of random
# data, and should be considered private -- if it is disclosed, we
# should immediately replace it with different random data.  It should
# be readable only by the user running loggerhead.
#
# datatype: string
secret_path:

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: CB


[codehosting]
# datatype: string
logfile: -

# The location of the log file used by the LaunchpadForkingService
# datatype: string
forker_logfile: -

# Should we be using the forking daemon? Or should we be calling spawnProcess
# instead?
# datatype: boolean
use_forking_daemon: False
# What disk path will the daemon listen on
# datatype: string
forking_daemon_socket: /var/tmp/launchpad_forking_service.sock

# The prefix of the web URL for all public branches. This should end with a
# slash.
#
# If that value is changed in production, the
# branch_url_constraint_not_supermirror database constraint should be updated.
#
# datatype: urlbase
supermirror_root: http://bazaar.launchpad.net/

# The URL of the XML-RPC endpoint that handles authentication of SSH
# users. This should implement IAuthServer.
#
# datatype: string
authentication_endpoint: none

# Obsolete.
branchfs_endpoint: none

# Obsolete.
branch_puller_endpoint: none

# The URL of the XML-RPC endpoint that implements ICodehostingAPI.
#
# datatype: string
codehosting_endpoint: none

# See [error_reports].
oops_prefix: none

# datatype: string
bzr_lp_prefix: lp:

# The hosts which may be used to refer to this server's branches in lp: urls
# The comma is used to produce the empty string.
lp_url_hosts: ,production

# see [error_reports].
error_dir: none

# datatype: string
host_key_pair_path: none

# datatype: string
# The directory where the 'push' copy of hosted branches are stored. Also
# called the 'hosted area'.
hosted_branches_root: none

# datatype: string
# The directory where the mirrored copy of all branches are stored. Also
# called the 'mirrored area'.
mirrored_branches_root: /var/tmp/bazaar.launchpad.dev/mirrors

# datatype: boolean
spew: False

# datatype: boolean
launch: False

# The URL prefix for links to the Bazaar code browser.  Links are
# formed by appending the branch's unique name to the root URL.
#
# datatype: urlbase
codebrowse_root: http://bazaar.launchpad.net/

# The URL prefix for https links to the Bazaar code browser, which
# allows access to private branches authenticated with OpenID.  Links
# are formed by appending the branch's unique name to the root URL.
#
# datatype: urlbase
secure_codebrowse_root: https://bazaar.launchpad.net/


# The URL prefix for URLs that codebrowse requests should be
# internally proxied to.
# datatype: urlbase
internal_codebrowse_root:

# The URL prefix for where branches are served by URLs based on the
# branch ID.
# datatype: urlbase
internal_branch_by_id_root:

# Where the logging output of the scripts/branch-rewrite.py script
# goes.
#
# datatype: string
rewrite_script_log_file:

# datatype: string
banner: none

# datatype: string
port: tcp:5022

# Private mirror hosts
# A comma separated list of domain names that should not be shown
# to people not associated with the branch.  Any branches with a mirror
# location on one of the specified domains, or any of their subdomains
# will be hidden.  Should be removed when bug 235916 is fixed.
private_mirror_hosts: mysql.com

# Hostnames from which branches cannot be mirrored.
blacklisted_hostnames: localhost,127.0.0.1

# The codehosting access log location. Information such as connection, SSH
# login and session start times will be logged here.
access_log: /tmp/codehosting-access.log

# SSH connections that are idle for more than this many seconds are
# disconnected.
idle_timeout: 3600

# Products for which to expand lp:<product-name> to just HTTP urls.
# If we expect a lot of people to branch a particular product, we can
# save ourselves some load by directing them all to a HTTP url.
hot_products:

# Branch rewrite cache lifetime.
#
# How long, in seconds, to cache results of the branch path -> id
# mapping done by branch-rewrite.py for.
branch_rewrite_cache_lifetime: 10

# Update Preview diff ready timeout
#
# How long, in minutes, we wait for a branch to be ready in order to
# generate a diff for a merge proposal (in the UpdatePreviewDiffJob).
update_preview_diff_ready_timeout: 15

# Web status port
#
# An HTTP service that will have status 200 OK when the service is available
# for more connections, and 503 Service Unavailable when it is in the process
# of shutting down and so should not receive any more connections.
web_status_port = tcp:8022


[codeimport]
# Where the Bazaar imports are stored.
# datatype: string
bazaar_branch_store: sftp://hoover@escudero/srv/importd/www/

# The default value of the update interval of a code import from
# Subversion, in seconds.
# datatype: integer
default_interval_subversion: 21600

# The default value of the update interval of a code import from
# Git, in seconds.
# datatype: integer
default_interval_git: 21600

# The default value of the update interval of a code import from
# Mercurial, in seconds.
# datatype: integer
default_interval_hg: 21600

# The default value of the update interval of a code import from
# CVS, in seconds.
# datatype: integer
default_interval_cvs: 43200

# The default value of the update interval of a code import from
# Bazaar, in seconds.
# datatype: integer
default_interval_bzr: 21600

# Where the tarballs of foreign branches are uploaded for storage.
# datatype: string
foreign_tree_store: sftp://hoover@escudero/srv/importd/sources/

# After how many seconds to kill import workers that show no signs of
# activity.
worker_inactivity_timeout: 3600

# We will stop trying to import a branch if it fails this many times
# in a row.
consecutive_failure_limit: 5

# Import only this many revisions from git at once.
git_revisions_import_limit: 30000

# Import only this many revisions from svn (via bzr-svn) at once.
svn_revisions_import_limit: 500

# Import only this many revisions from hg at once.
hg_revisions_import_limit: 5000

[codeimportdispatcher]
# The directory where the code import worker should be directed to
# store its logs.
worker_log_dir: /var/tmp/codeimport

# Force the dispatcher to look for the code import machine with this
# hostname, rather than the hostname of the machine it is running on,
# so we can use a machine name from the sample data on developer
# machines.
forced_hostname: none

# Where to find the code import scheduler service.
codeimportscheduler_url:
    http://xmlrpc-private.launchpad.dev:8087/codeimportscheduler

# The maximum number of jobs to run on a machine at one time.
max_jobs_per_machine: 3

# See [error_reports].
error_dir: /var/tmp/codehosting.test/

# See [error_reports].
oops_prefix: CID


[codeimportworker]
# This code is used by the code-import-worker-monitor which lives in
# scripts/code-import-worker-monitor.py and
# lib/lp/codehosting/codeimport/worker_monitor.py.

# The interval in seconds the worker should wait between updates to the
# heartbeat field of the CodeImportJob row representing a job.
heartbeat_update_interval: 30

# The amount of time which can elapse between updating a job's heartbeat
# field before the job is considered reclaimable.  This is somewhat
# arbitrarily chosen, but ten times the expected update interval should be
# enough of a margin to prevent false positives and short enough to not impact
# the throughput of the system when a job gets stuck for some reason.
maximum_heartbeat_interval: 300

# The code import worker stores its working files in a directory named
# worker-for-branch-${BRANCH_ID} in this directory.
working_directory_root: /var/tmp/codeimport/data

# See [error_reports].
error_dir: /var/tmp/codehosting.test/

# See [error_reports].
oops_prefix: CIW


[commercial]
# URL for salesforce proxy.
# datatype: string; a url
voucher_proxy_url:

# Port for salesforce proxy.
# datatype: integer
voucher_proxy_port:

# URL for purchasing a commercial subscription.
# datatype: string; a url
purchase_subscription_url:

# URL pointing to Ubuntu's licensing policy which Launchpad shares.
# datatype: string; a url
licensing_policy_url: https://help.launchpad.net/Legal/ProjectLicensing


[create_merge_proposals]
# The database user which will be used by this process.
# datatype: string
dbuser: create-merge-proposals
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none

[packaging_translations]
# The database user which will be used by this process.
# datatype: string
dbuser: rosettaadmin
source_interface:
    lp.translations.interfaces.translationpackagingjob.ITranslationPackagingJobSource

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[cveupdater]
# The database user which will be used by this process.
# datatype: string
dbuser: cve

# datatype: string
cve_db_url: http://cve.mitre.org/cve/downloads/allitems.xml.gz


[database]
# datatype: boolean
randomise_select_results: false

# Connection strings, format as per the PQconnectdb connection string as
# documented at:
#     http://www.postgresql.org/docs/8.3/static/libpq-connect.html
# Note that user is not included, as it is specified by the dbuser
# option. This allows config sections to easily override just the dbuser.
# datatype: pgconnection
rw_main_master: dbname=launchpad_prod_3 host=wildcherry.canonical.com
# datatype: pgconnection
rw_main_slave:  dbname=launchpad_prod_2 host=chokecherry.canonical.com
# datatype: pgconnection
ro_main_master: dbname=launchpad_standalone_1 host=chokecherry.canonical.com
# datatype: pgconnection
ro_main_slave:  dbname=launchpad_standalone_1 host=chokecherry.canonical.com

# XXX stub 20100407 bug=557271: These next two are ignored, and should
# be removed after the May 2010 rollout.
# datatype: string
auth_master: ignored
# datatype: string
auth_slave: ignored

# If the replication lag is more than this many seconds, slave databases
# will not be used.
max_usable_lag: 120

isolation_level: serializable

# SQL statement timeout in milliseconds. If a statement
# takes longer than this to execute, then it will be aborted.
# A value of 0 turns off the timeout. If this value is not set,
# PostgreSQL's default setting is used.
# datatype: integer
db_statement_timeout: none

# The statement timeout will be updated after this many
# ms of statements being executed, decreasing the statement
# timeout while the request is being processed. We don't just
# update the statement timeout after every query to control
# the number of unnecessary db queries sent.
# datatype: integer
db_statement_timeout_precision: 5000

# A soft request timeout in milliseconds.  If a request
# takes longer than this timeout, an oops will be logged.
# If unset, requests will not cause soft timeouts.
# datatype: integer
soft_request_timeout: None

# The Storm cache type to use. May be 'default', 'generational' or 'stupid'
# datatype: string
storm_cache: generational

# The size of the Storm cache in objects. We start small, because this
# is the default used by everything and we have no idea if we are
# dealing with tiny objects or huge objects. Individual scripts can
# easily increase the cache size if database performance is an issue
# and RAM usage is not. See Bug #393625 for the issue that prompted
# this change.
# datatype: integer
storm_cache_size: 500

# Where database/replication/slon_ctl.py dumps its logs. Used for the
# staging replication environment.
# datatype: existing_directory
replication_logdir: database/replication


[diff]
# The maximum size in bytes to read from the librarian to make available in
# the web UI.  512k == 524288 bytes.
# datatype: integer
max_read_size: 524288

# The maximum number of lines to format using the format_diff tal formatter.
max_format_lines: 5000


[distributionmirrorprober]
# The database user which will be used by this process.
# datatype: string
dbuser: distributionmirror

# The time in seconds that the mirror prober will wait for
# a reply.
# datatype: integer
timeout: 30

# Should we set an http_proxy environment variable before
# running the prober?
# datatype: boolean
use_proxy: True

# If true, the mirror prober will only try to connect to
# localhost; all other hosts it'll return a success without
# even trying to connect.
# datatype: boolean
localhost_only: False

# The URL to the file containing the list of ISO images that a
# mirror must contain.
# datatype: string
cdimage_file_list_url: http://releases.ubuntu.com/.manifest


[distroseriesdifferencejob]
dbuser: distroseriesdifferencejob

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[error_reports]
# A prefix for "OOPS" codes for this process instance.
# This is used to allow storing the reports from different
# Launchpad instances in the same directory structure.
# datatype: string
oops_prefix: none

# Directory to write error reports to.
# datatype: string
error_dir: none

# AMQP exchange to publish OOPSes to
error_exchange: oopses

# AMQP routing key to use
error_queue_key:


[expiredmembershipsflagger]
# The database user which will be used by this process.
# datatype: string
dbuser: teammembership
storm_cache: generational
storm_cache_size: 500


[generateppahtaccess]
dbuser: generateppahtaccess
storm_cache: generational
storm_cache_size: 500


[gina]
# The database user which will be used by this process.
# datatype: string
dbuser: gina
storm_cache: generational
storm_cache_size: 500

[gina_target.template]
# The distribution name (e.g. ubuntu) from where the packages
# will be taken and to where they will be imported into
# launchpad. A distribution with name DISTRO must be created
# on launchpad before been used because gina is not able to
# create distributions.
# datatype: string
distro: none

# The distroseries name (e.g. hoary) from where the packages
# will be taken and to where they will be imported (published)
# into launchpad. A distroseries with name DISTROSERIES inside
# the distribution DISTRO must be created on launchpad before
# been used because gina is not able to create distroseries.
# datatype: string
distroseries: none

# A comma separated list with the architectures that should
# be imported into Launchpad. DistroArchSeries entries for
# this architectures having the architecturetag equal to each
# element in ARCHS should be created previously for the given
# DISTROSERIES.
# datatype: string
architectures: i386,powerpc,amd64

# A comma separated list with the component names
# that should be imported into launchpad. As well as in
# distribution and distroseries the components must already
# exists inside launchpad. Currently the componentselection
# table is not checked but ideally it too should be populated.
# datatype: string
components: main,universe,restricted,multiverse

# A full path to where the keyrings files are
# available. These keyrings are used to look up who signed
# what wherever possible.
# datatype: string
keyrings: /usr/share/keyrings

# ROOT is the full path to a debian-style archive from where
# the packages and its info will be read. This directory
# should contain a pool and dists pair of trees.
# datatype: string
root: none

# The pocket where this import should go. A "pocket" is a
# sub-archive for a distribution series. The default pocket
# is called "release", others are "security", "updates" and
# "proposed". There may be more. Packages can be published in
# a specific pocket after the release is made, before that
# they will always be published in the "release" pocket.
# datatype: string
pocket: release

# The distroseries name to where packages should be published
# when working with pockets. Thats because on debian model
# hoary-updates can be seen as another distroseries but it
# does not happens on launchpad.
# datatype: string
pocketrelease: none

# If specified, override packages' components to this value.
# This only affects the publisher tables and may also override
# the archive according to the existing component/archive
# overriding rules.
# datatype: string
componentoverride: none

# The Katie database that should be used to extract extra
# information from.
# datatype: string
katie_dbname: none

# If true, only the source packages are imported and the
# binary packages ignored.
# datatype: boolean
source_only: false

# If true, only the source package names are imported into
# Launchpad
# datatype: boolean
sourcepackagenames_only: false


[gina_target.hoary.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.breezy.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.dapper.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.dapper-updates.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.bogus.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.partner.optional]
# This section is only used in tests. The test conf must set the key values.

[gina_target.lenny.optional]
components: main,contrib,non-free
distro: debian
distroseries: lenny
pocketrelease: lenny

[gina_target.squeeze.optional]
components: main,contrib,non-free
distro: debian
distroseries: squeeze
pocketrelease: squeeze

[gina_target.wheezy.optional]
components: main,contrib,non-free
distro: debian
distroseries: wheezy
pocketrelease: wheezy

[gina_target.sid.optional]
components: main,contrib,non-free
distro: debian
distroseries: sid
pocketrelease: sid

[gina_target.experimental.optional]
components: main,contrib,non-free
distro: debian
distroseries: experimental
pocketrelease: experimental


[google_test_service]
# Run a web service stub that simulates the Google search service.

# Where are our canned XML responses stored?
canned_response_directory: lib/lp/services/googlesearch/tests/data/

# Which file maps service URLs to the XML that the server returns?
mapfile: lib/lp/services/googlesearch/tests/data/mapping.txt

# Where should the service log files live?
log: logs/google-stub.log

# Do we actually want to run the service?
launch: False


[google]
# client_id is the unique id Launchpad was issued by Google.
# datatype: string
client_id:

# site is the host and path that search requests are made to.
# eg. http://www.google.com/cse
# datatype: string, a url to a host
site: http://www.google.com/cse

# url_rewrite_exceptions is a list of launchpad.net domains that must
# not be rewritten.
# datatype: string of space separated domains
# Example: help.launchpad.net login.launchapd.net
url_rewrite_exceptions: help.launchpad.net

# maps_api_key is the API key we use for Google Maps. Values for the API
# keys are documented in lib/canonical/launchpad/google.txt
# The default value is the key for the launchpad.net domain, so we only
# need to override it when running in dev mode.
# datatype: string
maps_api_key:

[gpghandler]
# Host running PKS-like (SKS) keyserver Application.
# datatype: ip_address_or_hostname
host: keyserver.internal

# A public host running PKS-like (SKS) keyserver Application.
# This option is used to display links in the UI referring to
# the public keyserver.
# datatype: ip_address_or_hostname
public_host: keyserver.ubuntu.com

# Port number on Host to access the keyserver.
# datatype: int
port: 11371

[haproxy_status_view]
# Configuration for the +haproxy monitoring URL

# Result code to return when the app server is going down.
# datatype: int
going_down_status: 500

[initializedistroseries]
dbuser: initializedistroseries
source_interface:
    lp.soyuz.interfaces.distributionjob.IInitializeDistroSeriesJobSource

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[karmacacheupdater]
# The database user which will be used by this process.
# datatype: string
dbuser: karma
storm_cache: generational
storm_cache_size: 500

# When calculating karma, if a categories scaling factor is
# larger than this it is reduced down to this maximum. This is
# to stop ridiculous spikes when a new category is added and
# there is little karma in the category's pool.
# datatype: integer
max_scaling: 500


[launchpad]
# The database user which will be used by this process.
# datatype: string
dbuser: launchpad_main
storm_cache: generational
storm_cache_size: 10000

# Whether or not to enable a test OpenID provider on the testopenid vhost.
# It's a test provider, not meant to be enabled on production.
# datatype: boolean
enable_test_openid_provider: False

# Assume the slave database is lagged if it takes more than this many
# milliseconds to calculate this information from the Slony-I tables.
# datatype: integer
lag_check_timeout: 250

# If False, do not launch the appserver.
# datatype: boolean
launch: True

# The vhost used as the OpenID provider to log into Launchpad.
# datatype: string
openid_provider_vhost: openid

# If true, the main template will be styled so that it is
# obvious to the end user that they are using a demo system
# and that any changes they make will be lost at some point.
# This should not be true for any systems talking to the
# production database.
# datatype: boolean
is_demo: False

# On launchpad.net, Launchpad's version and revision numbers aren't shown,
# because it's a Web site. Should be True for launchpad.net and False for all
# other systems.
# datatype: boolean
is_lpnet: False

# Proxy to be used when issuing HTTP requests.
#
# XXX: StuartBishop 2007-06-09: This should be in the canonical section,
# not the Launchpad section? At the moment, there are only scripts
# using this.
# datatype: string
http_proxy: http://squid.internal:3128/

# Session cookies being sent to a subdomain of the parent
# domains listed here will be sent to the parent domain,
# allowing sessions to be shared between vhosts.
# Domains should not start with a leading '.'.
cookie_domains:
    demo.launchpad.net, staging.launchpad.net, launchpad.net, launchpad.dev

# Maximum size of product release download files in bytes. A value
# of 0 means no limit.
# datatype: integer
# 200MiB
max_productrelease_file_size: 209715200

# Maximum size of a product release download file signature in bytes.
# A value of 0 means no limit.
# datatype: integer
max_productrelease_signature_size: 1024

# If this is provided, the message given in the string will appear
# in the site status bar at the top of every page.
# datatype: string
site_message:

# The default size used in a batched branch listing of results.
# Set the batching size for branch listings to be small, but
# different from the default size when testing so we can confirm
# that it is using the appropriate setting.
# datatype: integer
branchlisting_batch_size: 100

# The default size used in a batched display of team mugshots.
mugshot_batch_size: 32

# The default size used in a batched display of announcements.
announcement_batch_size: 5

# The default size used in a batched display of product download
# files.  The releases are batched, not the individual files.
download_batch_size: 10

# The default size of a list that summarizes and introduces a larger list.
summary_list_size: 10

# If restrict_to_team is set (such as on the beta
# website), then this indicates the hostname suffix for
# the non-restricted version of Launchpad.  Replacing
# config.launchpad.vhosts.mainsite.hostname with this
# value in a URI should give a valid host.
#
# This is intended to provide a way for non beta-testers
# to get back to the production instance if they are
# given a beta URL.
# datatype: string
non_restricted_hostname: launchpad.net

# Domain where incoming email related to specifications are sent to.
# datatype: string
specs_domain: specs.launchpad.net

# Number of seconds a blob stored in the temporary blob storage
# must remain before it may be garbage collected.
# datatype: integer
default_blob_expiry: 10800

# The default size used in a batched listing of results. See
# canonical.launchpad.webapp.batching for details. Use a
# small list for development because there is not a lot of
# sampledata.
# datatype: integer
default_batch_size: 50

# The maximum batch size that can be requested. A higher
# number will raise an InvalidBatchSizeError.
# datatype: integer
max_batch_size: 300

# Maximum size of attachments in bytes. A value of 0 means
# no limit.
# datatype: integer
max_attachment_size: 0

# Email address, to which all error reports are sent.
# Messages should have distinct Subject: or Keywords: headers
# so they can be filtered easily. Whenever code starts using this,
# we probably need to setup a new Mailman topic in the
# launchpad-error-reports mailing list or the error reports will
# be lost.
# datatype: string
errors_address: launchpad-error-reports@lists.canonical.com

# Email address for the Launchpad users mailing list.
# datatype: string
users_address: launchpad-users@lists.launchpad.net

# If this is provided, only members of the given team, and
# launchpad admins, may access the site.  Anonymous access is
# not allowed.  If this is provided, but not a known team name,
# only launchpad admins may access the site.
# datatype: string
restrict_to_team:

# The maximum number of minutes that Branch feeds should be cached for.
# datatype: integer
max_branch_feed_cache_minutes: 60

# The maximum number of minutes that Revision feeds should be cached for.
# datatype: integer
max_revision_feed_cache_minutes: 60

# Maximum size of blobs that can be stored in the temporary
# blob storage. Set to 0 for unlimited.
# datatype: integer
max_blob_size: 0

# datatype: integer
branch_dormant_days: 180

# The maximum number of minutes that feeds should be cached for.
# This is used to set the Expires and Cache-Control headers.
# datatype: integer
max_feed_cache_minutes: 60

# The maximum number of direct user-to-user emails allowed within a certain
# time period.
# datatype: int
user_to_user_max_messages: 3

# The time period for calculating the maximum number direct emails per user.
# datetime: canonical.lazr.config.as_timedelta
user_to_user_throttle_interval: 24h

# OOPS reports root for linking to OOPS reports.
# datatype: urlbase
oops_root_url: https://lp-oops.canonical.com/oops.py/?oopsid=

# Domain part of the bugs' email addresses. All email addresses in
# this domain should get redirected to the MailIntoLaunchpad handler.
# datatype: string
bugs_domain: bugs.launchpad.net

# Domain part of the code's email addresses. All email addresses in
# this domain should get redirected to the code mail handler.
# datatype: string
code_domain: code.launchpad.net

# The URL prefix for importd's bzr branches that it imports from
# other RCSes like CVS.  Used to generate URLs for the branch
# puller to use, not for public URLs.
# datatype: urlbase
bzr_imports_root_url: http://escudero.ubuntu.com:680/

# This key allows us to selectively disable the bug search feeds
# because of performance concerns.
# datatype: boolean
is_bug_search_feed_active: True

# The maximum number of minutes that Bug feeds should be cached for.
# datatype: integer
max_bug_feed_cache_minutes: 60

# datatype: integer
code_homepage_product_cloud_size: 120

# The referrers and the trust_roots they are allowed to pre-authorize.
# (e.g. http://referrer.example.com http://trustroot.example.com)
# datatype: string
openid_preauthorization_acl: None

# The database used by our GeoIP library.
geoip_database: /usr/share/GeoIP/GeoIPCity.dat

# The identity used to do remote geo to time zone lookups at
# ba-ws.geonames.net.
geonames_identity:

# The maximum number of lines that should be parsed by the launchpad
# log parser. The default value of None means there is no maximum.
logparser_max_parsed_lines: None

# The URL to the RSS feed that will be displayed on the front page
homepage_recent_posts_feed: http://blog.launchpad.net/tag/front-page/feed

# The number of items to display:
homepage_recent_posts_count: 6

# The URL to the CORS-friendly JSON feed of Launchpad status updates
# that is used on some error pages.
launchpadstatus_json_cors_feed: https://identi.ca/api/statuses/user_timeline/84819.json

# The URL to the Flash-friendly JSON feed of Launchpad status updates
# that is used on some error pages when the CORS feed does not work.
# Note that this has a slightly different structure than the identi.ca
# feed above: you must get the "results" from this data structure in
# order to get the same results as the identi.ca one.
launchpadstatus_json_flash_feed: https://search.twitter.com/search.json?q=from:launchpadstatus

# The URL of the XML-RPC endpoint that allows querying of feature
# flags. This should implement IFeatureFlagApplication.
#
# datatype: string
feature_flags_endpoint:

[launchpad_session]
# The database connection string.
# datatype: pgconnection
database: none

# The dbuser setting is added to the connection string, to allow configs
# to easily override this particular setting.
# datatype: string
dbuser: session

# The id of the cookie used to store the session token.
# datatype: string
cookie: launchpad

# These are unused as of July 2011. Remove when far flung config files
# have had a chance to remove these entries.
#
# datatype: string
dbhost: none
# datatype: string
dbname: session_prod


[librarianlogparser]
logs_root = /srv/launchpadlibrarian.net-logs


[librarian]
# The database user which will be used by this process.
# datatype: string
dbuser: librarian
storm_cache: generational
storm_cache_size: 500

isolation_level: read_committed

# Port number Librarian listens for storage requests on.
# datatype: int
upload_port: 9090

# Port number the Restricted Librarian listens for storage
# requests on.
# datatype: int
restricted_upload_port: 9095

# Port number Librarian listens for HTTP GET and
# HEAD requests on.
# datatype: int
download_port: 8000

# Port number Restricted Librarian listens for HTTP GET and
# HEAD requests on.
# datatype: int
restricted_download_port: 8005

# Host Librarian is listening on for storage requests.
# datatype: ip_address_or_hostname
upload_host: localhost

# Host Librarian is listening on for HTTP requests.
# datatype: ip_address_or_hostname
download_host: localhost

# Host the Restricted Librarian is listening on for storage
# requests.
# datatype: ip_address_or_hostname
restricted_upload_host: localhost

# Host the Restricted Librarian is listening on for HTTP requests.
# datatype: ip_address_or_hostname
restricted_download_host: localhost

# The base URL used to generate URLs to the Library contents.
# Note that this might be on a different host or port to what is
# specified above if access to the Library is via Apache redirects.
# datatype: urlbase
download_url: http://librarian.launchpad.net/

# The base URL used to generate URLs to the Restricted Library contents.
# datatype: urlbase
restricted_download_url: http://restricted-librarian.launchpad.net/

use_https = True

# See [error_reports].
# Must be unique per librarian instance.
oops_prefix: none
# Must be set per librarian instance.
error_dir: none


[librarian_gc]
# The database user which will be used by this process.
# datatype: string
dbuser: librariangc
storm_cache: generational
storm_cache_size: 500


[librarian_server]
# datatype: ip_address_or_hostname
upstream_host: none

# datatype: port_number
upstream_port: 80

# datatype: boolean
launch: False

# datatype: boolean
spew: False

# datatype: string
logfile: -

# The log file used by the restricted version of the Librarian.
# datatype: string
restricted_logfile: -

# datatype: string
root: none


# Mailman configuration.  This is only a shim to the real Mailman
# configuration system and is primarily used to specify settings that
# differ from the defaults, or are needed during the build.
[mailman]

# This string is used in the X-Launchpad-Hash header as salt in a hash that's
# added whenever a Launchpad-generated message will potentially get delivered
# to a Mailman mailing list. The header basically just tells Mailman that the
# message should be pre-approved.
# datatype: string
shared_secret: sutsGNcUEpc

# datatype: string
list_help_header: https://help.launchpad.net/ListHelp

# datatype: string
archive_address: archive@mail-archive.com

# Whether Mailman should be started (i.e mailmanctl start).
# datatype: boolean
launch: False

# datatype: integer
xmlrpc_runner_sleep: 10

# Socket timeout on XML-RPC connections made by Mailman.
# This should at least be higher than the LP request timeout.
# datatype: integer
xmlrpc_timeout: 10

# How often do we run the bounce processor?  For production, the default 15
# minutes is fine, for testing we want to run it more often.
# datatype: int
register_bounces_every: 900

# The hostname and port in the form of hostname:port.
# datatype: string
smtp: localhost:25

# Ceiling on the number of recipients that can be specified in a single SMTP
# transaction.  Set to 0 to submit the entire recipient list in one
# transaction.
# WARNING: Make sure that this matches the limits on the SMTP host!
# datatype: integer
smtp_max_rcpts: 50

# Ceiling on the number of SMTP sessions to perform on a single socket
# connection.
# WARNING: Make sure that this matches the limits on the SMTP host!
# datatype: integer
smtp_max_sesions_per_connection: 200

# The list owner header is a template URL that may contain
# $team_name in it.
# datatype: string
list_owner_header_template: https://launchpad.net/~$team_name

# datatype: string
xmlrpc_url: http://xmlrpc-private.launchpad.dev:8087/mailinglists

# datatype: string
archive_url_template: http://lists.launchpad.net/$team_name

# The list subscription header is a template URL that may contain
# $team_name in it.
# datatype: string
list_subscription_headers: https://launchpad.net/~$team_name

# The XMLRPC qrunner batch size when requesting mailing list information.  The
# qrunner will only ask for the info for these number of mailing lists at a
# time, though all will be requested during any one time through the loop.
# datatype: integer
subscription_batch_size: 25

# Hard and soft limits on the size of messages that will be accepted by
# Mailman.  Messages below the soft limit in size are not moderated.  Between
# the soft and hard limit, messages will be held for moderator approval.
# Above the hard limit, messages will be logged and discarded with no
# notification to the sender.  The Exim hard limit on incoming mail to
# lists.launchpad.net is 50MB so the Mailman hard limit should never be hit in
# practice.  These numbers are in bytes.
soft_max_size: 2000000
hard_max_size: 50000000

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none

# Whether Mailman should be built if it is not already.
# datatype: boolean
build: false

# Specify Mailman's configure's --prefix argument.
# If a value is given we assume it's a path and make it absolute.
# datatype: string
build_prefix:

# The 'VAR_DIR' location.  This is where Mailman will put and look
# for variable run time data, such as the list pickles and queue
# directories.
# datatype: string
build_var_dir: /var/mailman

# The user:group names that the Mailman process will run under.
# You may need to invoke buildmailman.py or "make run" as root via
# sudo to have the necessary permissions during the build or run
# phase.  Leave this commented to use the current user and group.
# datatype: string
build_user_group:

# Specify the site list's owner address and password
# If not set, a fake email address and random password
# will be used.
# datatype: string
build_site_list_owner:

# Set this if you want a host_name other than the current
# machine's `hostname -f`.  This is only used for the email domain
# part.
# datatype: string
build_host_name:


[malone]
# The From address for Malone email interface errors.
# datatype: string
bugmail_error_from_address: none

# The database user which will be used to send bug notifications.
# datatype: string
bugnotification_dbuser: bugnotification

# The batch size of bug lists.
# Use a small batch size to actually be able to verify batching
# works with our limited sampledata. Use a different one from
# the default batch size to be able to actually tell it's
# being used.
# datatype: integer
buglist_batch_size: 20

# The maximum number of characters a bug comment can be
# without being truncated when displayed on the main bug page.
# datatype: integer
max_comment_size: 3200

# The number of days of inactivity required before an unassigned
# bugtask with the status of INCOMPLETE_WITHOUT_RESPONSE is expired.
# datatype: integer
days_before_expiration: 60

# The number of minutes that at most should pass between
# changes to a bug to cause them to be grouped together into a
# single notification.
# datatype: integer
bugnotification_interval: 5

# Whether comments should be searched when searching bugs.
# datatype: boolean
search_comments: False

# The database user that will be used to expire bugtask.
# datatype: string
expiration_dbuser: bugnotification

# Where the sample debbugs db is located.
# datatype: string
debbugs_db_location: /srv/bugs-mirror.debian.org/

# When a bug has more than comments_list_max_length comments, we only
# show the first N and last M comments.  Be sure N+M < max length.
# datatype: integer
comments_list_max_length: 100
comments_list_truncate_oldest_to: 40
comments_list_truncate_newest_to: 40
# The default batch size for batched bug comment loading.
comments_list_default_batch_size: 1000

# Should +filebug be disabled for Ubuntu ?
ubuntu_disable_filebug: false

# Redirect to this URL when users try to file a bug on Ubuntu without
# using apport.
ubuntu_bug_filing_url: https://help.ubuntu.com/community/ReportingBugs


[memcache]
# Comma seperated list of (hostname:port,weight) for the memcache client
# to connect to.
# datatype: string
servers: (127.0.0.1:11217,1)


[memcached]
# If True, launch a local memcached instance.
# datatype: boolean
launch: false
# If true, the local memcached instance outputs client commands and responses.
# datatype: boolean
verbose: false
# Cache size in megabytes for local memcached instance.
# datatype: integer
memory_size: 1
# Address for local memcached instance to bind to.
# datatype: ip_address_or_hostname
address: 127.0.0.1
# Port for local instance to listen on.
# datatype: port_number
port: 11217


[merge_proposal_jobs]
# The database user which will be used by this process.
# datatype: string
dbuser: merge-proposal-jobs
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


##
## TODO: delete mpcreationjobs section after 10.04 rollout.
##
[mpcreationjobs]
# The database user which will be used by this process.
# datatype: string
dbuser: mp-creation-job
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[person_notification]
# User for person notification db access
# datatype: string
dbuser: personnotification

# The number of days we should keep the notification records.
# datatype: integer
retained_days: 366


[personalpackagearchive]
# Directory to be created to store PPAs.
# datatype: string
root: /var/tmp/ppa

# Directory to be created to store private PPAs.
# datatype: string
private_root: /var/tmp/private-ppa

# External base URL for PPAs.
# datatype: string
base_url: http://ppa.launchpad.net

# External base URL for private PPAs.
# datatype: string
private_base_url: https://private-ppa.launchpad.net

# Directory where secret signing-keys will be stored.
# datatype: string
signing_keys_root: /var/tmp/ppa-signing-keys


[ppa.master]


[ppa_apache_log_parser]
logs_root: /srv/ppa.launchpad.net-logs
log_file_glob: *-access.log*


[poimport]
# The database user which will be used by this process.
# datatype: string
dbuser: poimport
storm_cache: generational
storm_cache_size: 500

# Statement timeout (in seconds), limited to super-fast-imports query.
# Set to 'timeout' to make it timeout every time (for tests).
statement_timeout: 300

# See [error_reports].
oops_prefix: none
# See [error_reports].
error_dir: none


[poppy]
# The URL of the XML-RPC endpoint that handles authentication of SSH
# users. This should implement IAuthServer.
#
# datatype: string
authentication_endpoint: none

# See [error_reports].
oops_prefix: none

# see [error_reports].
error_dir: none

# The absolute path to the private key used for the SFTP server.
# datatype: string
host_key_private: none

# The absolute path to the public key used for the SFTP server.
# datatype: string
host_key_public: none

# datatype: string
banner: none

# datatype: string
port: tcp:5022

# datatype: string
ftp_port: 2121

# The poppy access log location. Information such as connection, SSH
# login and session start times will be logged here.
access_log: /tmp/poppy-access.log

# SSH connections that are idle for more than this many seconds are
# disconnected.
idle_timeout: 3600

# Where on the filesystem do uploads live?
fsroot: none


[processmail]
# The database user which will be used by this process.
# datatype: string
dbuser: processmail
storm_cache: generational
storm_cache_size: 500
max_error_message_return_size: 65536

[process_apport_blobs]
# The database user which will be used by this process.
# datatype: string
dbuser: process-apport-blobs
oops_prefix: APPORTBLOB
error_dir: none


[productreleasefinder]
# The database user which will be used by this process.
# datatype: string
dbuser: productreleasefinder
storm_cache: generational
storm_cache_size: 500


[profiling]
# When set to True, the user is allowed to request profiles be run for
# either individual pages or for every request sent.
# datatype: boolean
profiling_allowed: False

# When set to True, each requests will be profiled and the resulting data
# saved in profile_dir.  `profiling_allowed` must also be True for this to
# work.
# datatype: boolean
profile_all_requests: False

# Directory to save profile info. The filename is in the format
# <timestamp>-<threadName>.prof
# datatype: filename
profile_dir: .

# If this option is set, that file will contain a log of the VSS and RSS
# at the start and end of each request.
# datatype: filename
memory_profile_log:

[rabbitmq]
# Should RabbitMQ be launched by default?
# datatype: boolean
launch: False
# The host:port at which RabbitMQ is listening.
# datatype: string
host: none
# datatype: string
userid: none
# datatype: string
password: none
# datatype: string
virtual_host: none

[txlongpoll]
# Should TxLongPoll be launched by default?
# datatype: boolean
launch: False
# The port at which TxLongPoll is listening.
# datatype: string
frontend_port: none
# The uri that should be a proxy to the TxLongPoll server.
uri: /+longpoll/

[reclaimbranchspace]
# The database user which will be used by this process.
# datatype: string
dbuser: reclaim-branch-space
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none
# See [error_reports].
oops_prefix: none

[request_daily_builds]
dbuser: request-daily-builds
error_dir: none
oops_prefix: none


[revisionkarma]
# The database user which will be used by this process.
# datatype: string
dbuser: revisionkarma


[rosetta]
# The database user which will be used by this process.
# datatype: string
admin_dbuser: rosettaadmin

# From-address to send translation import/export notifications from.
# noreply@ and feedback@ are good candidates.
# datatype: string
notification_address: noreply@launchpad.net

# Fetching global suggestions is most time-consuming of all,
# and this provides an easy way to disable or enable them
# per Launchpad instance.
# datatype: boolean
global_suggestions_enabled: True

# A different batch size for POFile:+translate pages to keep them from
# timing out.
# datatype: integer
translate_pages_max_batch_size: 50

# Generate templates using the buildfarm?
# datatype: boolean
generate_templates: True

[rosetta_pofile_stats]
# In daily runs of pofile statistics update, check for
# POFiles that have been updated in the last how many days.
days_considered_recent = 7

# Number of seconds each LoopTuner iteration should take.
looptuner_iteration_duration = 4


[rosettabranches]
# The database user which will be used by the rosetta-branches cronscript.
# datatype: string
dbuser: translationsbranchscanner
storm_cache: generational
storm_cache_size: 500

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[translations_export_to_branch]
# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[sendbranchmail]
# The database user which will be used by this process.
# datatype: string
dbuser: send-branch-mail
storm_cache: generational
storm_cache_size: 500
oops_prefix: none
error_dir: none

[pofile_stats]
dbuser: pofilestats
storm_cache: generational
source_interface: lp.translations.interfaces.pofilestatsjob.IPOFileStatsJobSource

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


# For the personal standing updater cron script.
[standingupdater]
dbuser: standingupdater
# datatype: integer
approvals_needed: 3


[statistician]
# The database user which will be used by this process.
# datatype: string
dbuser: statistician
storm_cache: generational
storm_cache_size: 500

[supermirror]
# The longest period of time, in seconds, that the scheduler will
# wait for the worker to produce meaningful output.
# datatype: integer
worker_timeout: 1800

# The maximum number of puller worker processes we pull at once.
# datatype: integer
maximum_workers: 10

# How long in seconds to wait between asking for new branches to pull.
# datatype: integer
polling_interval: 10


[supermirror_puller]
# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[supermirror_import_puller]
# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[supermirror_mirror_puller]
# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[supermirror_upload_puller]
# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[targetnamecacheupdater]
# The database user which will be used by this process.
# datatype: string
dbuser: targetnamecacheupdater
storm_cache: generational
storm_cache_size: 500


[updateremoteproduct]
# The database user to run this process as.
# datatype: string
dbuser: updateremoteproduct
storm_cache: generational
storm_cache_size: 500


[updatesourceforgeremoteproduct]
# The database user to run this process as.
# datatype: string
dbuser: updatesourceforgeremoteproduct
storm_cache: generational
storm_cache_size: 500


[updatebugzillaremotecomponents]
# The database user to run this process as.
# datatype: string
dbuser: updatebugzillaremotecomponents
storm_cache: generational
storm_cache_size: 500


##
## TODO: delete update_preview_diffs section after 10.04 rollout.
##
[update_preview_diffs]
dbuser: update-preview-diffs

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[upgrade_branches]
dbuser: upgrade-branches

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none


[uploader]
# The database user which will be used by this process.
# datatype: string
dbuser: uploader
storm_cache: generational
storm_cache_size: 500

# datatype: string
default_recipient_name: none

# datatype: string
default_sender_address: none

# datatype: string
default_recipient_address: none

# datatype: string
default_sender_name: none


[uploadqueue]
# The database user which will be used by this process.
# datatype: string
dbuser: queued
storm_cache: generational
storm_cache_size: 500


[vhosts]
# When true, use https URLs unless explicitly overridden.
# When false, use http URLs unless explicitly overridden.
# datatype: boolean
use_https: True

[vhost.template]
# Host name of this virtual host.
# This is matched from the incoming Host header, and
# also used to put together URLs if rooturl is not provided.
# Example: launchpad.net
# datatype: string
hostname: none

# Alternative host names to match, in addition to
# the one given in hostname, comma separated.
# Example: wwwww.launchpad.net, www.launchpad.net
# datatype: string
althostnames: none

# Explicit root URL for this virtual host.
# If this is not provided, the root URL is calculated
# based on the host name.
# Example: https://launchpad.net/
# datatype: string
rooturl: none

[vhost.mainsite]
# Can the profile page act as a OpenID delegated identity?
# data-type: boolean
openid_delegate_profile: False

[vhost.api]
enable_server_side_representation_cache: False
# By default, cache representations for 4 hours.
representation_cache_expiration_time: 14400

[vhost.blueprints]

[vhost.code]

[vhost.translations]

[vhost.bugs]

[vhost.answers]

[vhost.openid]

[vhost.testopenid]

[vhost.apidoc]

[vhost.ubuntu_openid]

[vhost.xmlrpc]

[vhost.xmlrpc_private.optional]

[vhost.feeds]


# Stubed Key server for test proposes, it's able to serve
# in SKS format, a restricted set of keys.
[testkeyserver]
# Directory to be created to store the pre-installed key-files
# datatype: string
root: /var/tmp/testkeyserver


# Immediate mail delivery configuration, for scripts that bypass Zope
# queued mail delivery. Will disappear once scripts are updated to use
# normal queued delivery.
[immediate_mail]
# datatype: port_number
smtp_port: 25

# datatype: ip_address_or_hostname
smtp_host: localhost

# datatype: boolean
send_email: true

[process-job-source-groups]
# This section is used by cronscripts/process-job-source-groups.py.
dbuser: process-job-source-groups
# Each job source class also needs its own config section to specify the
# dbuser, the crontab_group, and the module that the job source class
# can be loaded from.
job_sources:
    IMembershipNotificationJobSource,
    IPersonMergeJobSource,
    IPlainPackageCopyJobSource,
    IQuestionEmailJobSource

[IMembershipNotificationJobSource]
# This section is used by cronscripts/process-job-source.py.
module: lp.registry.interfaces.persontransferjob
dbuser: person-transfer-job
crontab_group: MAIN

[IPersonMergeJobSource]
# This section is used by cronscripts/process-job-source.py.
module: lp.registry.interfaces.persontransferjob
dbuser: person-merge-job
crontab_group: MAIN

[IPlainPackageCopyJobSource]
# This section is used by cronscripts/process-job-source.py.
module: lp.soyuz.interfaces.packagecopyjob
# XXX: GavinPanella 2011-04-20 bug=770297: The sync_packages database
# user should be renamed to copy_packages.
dbuser: sync_packages
crontab_group: FREQUENT

# See [error_reports].
error_dir: none

# See [error_reports].
oops_prefix: none

[IQuestionEmailJobSource]
# This section is used by cronscripts/process-job-source.py.
module: lp.answers.interfaces.questionjob
dbuser: answertracker
crontab_group: MAIN
