## Main configuration file for Taskotron
## The file is in YAML syntax, read more about it at:
## http://en.wikipedia.org/wiki/Yaml
## libtaskotron docs live at:
## https://docs.qa.fedoraproject.org/libtaskotron/latest/


## ==== GENERAL section ====
## Config profile selection.
## There are two major config profiles in Taskotron - development and
## production.
## Development profile is used for developing libtaskotron, developing checks
## based on libtaskotron and local execution of these checks.
## Production profile is used for deploying Taskotron as a service on a
## server, periodically executing the checks and reporting results to relevant
## result consumers.
## The default profile is 'development'. If you want to switch to the
## 'production' profile, uncomment the following line.
## You can also switch a profile temporarily by using TASKOTRON_PROFILE=name
## environment variable, it has a higher priority. All other options set in this
## file still apply of course.
## [choices: production, development; default: development]
profile: production

## Task execution mode. The tasks can be executed locally (on the current
## machine) or remotely in a disposable virtual machine. Local execution is
## dangerous with destructive or untrusted tasks, remote execution requires
## some additional setup (see Taskotron documentation).
## Remote execution is done through libvirt, it creates a throwaway virtual
## machine from a specified disk image, executes the task and deletes the
## machine.
## Local execution is the default mode for development profile and remote
## execution for production profile.
## [choices: local, libvirt; default: local for development, libvirt for production]
{% if deployment_type in ['dev', 'stg', 'prod'] %}
runtask_mode: libvirt
{% elif deployment_type in ['local'] %}
runtask_mode: local
{% endif %}

## Supported machine architectures. This is mostly used by generic,
## arch-independent tasks to determine which arches to test and report against.
## You can still run an arch-specific task on any other arch using the command
## line.
#supported_arches: ['x86_64', 'armhfp']


## ==== SCHEDULING section ====
## This section holds options related to the scheduling and execution system,
## currently we use Buildbot

## name of step in buildbot that executes the task
buildbot_task_step: 'runtask'


## ==== REPORTING section ====
## This section controls which result reports you want to send after the test
## execution is complete.

## Whether to send test results to the configured ResultsDB server.
## [default: True for production, False for development]
report_to_resultsdb: True


## ==== RESOURCES section ====
## This section specifies access details to various external services.
##
## Note: Try to keep custom URL addresses without a trailing slash. Otherwise
## the rendered URLs might end up containing double slashes, which some
## application servers don't handle gracefully (e.g. Flask's internal app
## server werkzeug).

## URL of Koji instance used for querying about new builds
koji_url: {{ kojihub_url }}

## URL of repository of all the RPM packages built in Koji
pkg_url: {{ kojipkg_url }}

## Whether to use staging Bodhi instance instead of production (the
## default one).
#bodhi_staging: False

## URL of ResultsDB server API interface, which can store all test results.
## Please make sure the URL doesn't have a trailing slash.
resultsdb_server: {{ resultsdb_server }}

## URL of ResultsDB frontend, which displays results from ResultsDB.
## Please make sure the URL doesn't have a trailing slash.
resultsdb_frontend: {{ resultsdb_external_url }}

## URL of ExecDB server API interface, which tracks task execution status.
## Please make sure the URL doesn't have a trailing slash.
execdb_server: {{ execdb_external_url }}

{% if deployment_type in ['dev'] %}
## URL of VAULT server API interface, which stores secrets.
## Please make sure the URL doesn't have a trailing slash.
vault_server: {{ vault_api_server }}

## Use vault to grab secrets
vault_enabled: True

## Username for vault server
vault_username: {{ vault_api_username }}

## Password for vault server
vault_password: {{ vault_api_password }}
{% endif %}

## URL of taskotron buildmaster, to construct log URLs from.
## Please make sure the URL doesn't have a trailing slash.
taskotron_master: {{ taskotron_master }}

## URL of artifacts base directory, to construct artifacts URLs from. The final
## URL will be $artifacts_baseurl/<uuid>.
## Please make sure the URL doesn't have a trailing slash.
artifacts_baseurl: {{ artifacts_base_url }}

## Whether to cache downloaded files to speed up subsequent downloads. If True,
## files will be downloaded to a common directory specified by "cachedir". At
## the moment, Taskotron only supports Koji RPM downloads to be cached.
## [default: False for production, True for development]
#download_cache_enabled: False


## ==== PATHS section ====
## Location of various pieces of the project.

## The location of log files for Taskotron
#logdir: /var/log/taskotron

## The location of task files (git checkout) when running in disposable clients mode
#client_taskdir: /var/tmp/taskotron/taskdir

## The location of temporary files for Taskotron
#tmpdir: /var/tmp/taskotron

## The location of artifacts produced by checks
#artifactsdir: /var/lib/taskotron/artifacts

## The location of cached files downloaded by Taskotron
#cachedir: /var/cache/taskotron

## The location of images for disposable clients
## File names need to adhere to the naming standard of:
##   YYMMDD_HHMM-fedora-RELEASE-FLAVOR-ARCH.(qcow2|raw|img)
## For example:
##   160301_1030-fedora-25-taskotron_cloud-x86_64.img
## Variables disposable_(release|flavor|arch) set in this config file
## define what kind of image is looked for.
## The newest (by YYMMDD_HHMM) image of the respective R-F-A is used.
imagesdir: {{ imagesdir }}

## If set to False, latest image from imagesdir will be used instead of one at imageurl
## [default: True]
force_imageurl: False

## Url of an image to download and use for disposable client, if force_imageurl was set
#imageurl: http://download.fedoraproject.org/pub/fedora/linux/releases/27/CloudImages/x86_64/images/Fedora-Cloud-Base-27-1.6.x86_64.qcow2

## Default  distro/release/flavor/arch for the disposable images discovery
#default_disposable_distro: fedora
default_disposable_release: '28'
#default_disposable_flavor: taskotron_cloud
#default_disposable_arch: x86_64

## Number of retries when disposable client fails to boot within timeout
#spawn_vm_retries: 3

## Additional DNF repos to set up on the minion.
## You can use a special syntax 'copr:reponame' to enable Fedora COPR repo on
## minion by running 'dnf copr enable reponame' on it.
minion_repos:
  - https://fedorapeople.org/groups/qa/taskotron-repos/taskotron-production-override/taskotron-production-override.repo
  - https://infrastructure.fedoraproject.org/cgit/ansible.git/plain/files/common/fedora-infra-tags.repo
{% if deployment_type == 'stg' %}
  - https://fedorapeople.org/groups/qa/taskotron-repos/taskotron-stg-override/taskotron-stg-override.repo
  - https://infrastructure.fedoraproject.org/cgit/ansible.git/plain/files/common/fedora-infra-tags-stg.repo
{% endif %}
{% if deployment_type == 'dev' %}
  - copr:kparal/taskotron-dev
{% endif %}

## If one or more minions repos fail to be added (e.g. not accessible), should
## we abort the execution or ignore the error and continue?
## [default: False]
minion_repos_ignore_errors: True

## ==== LOGGING section ====
## This section contains configuration of logging.

## Configuration of logging level. Here can be configured which messages
## will be logged. You can specify different level for logging to standard
## output (option log_level_stream) and logging to file (log_level_file).
## Possible values can be found here:
## https://docs.python.org/2.7/library/logging.html#logging-levels
{% if deployment_type == 'dev' %}
log_level_stream: DEBUG
{% elif deployment_type in ['stg', 'prod', 'local'] %}
log_level_stream: INFO
{% endif %}
#log_level_file: DEBUG

## If True, logging to file will be enabled.
## [default: True for production, False for development]
#log_file_enabled: True


## ==== SECRETS section ====
## All login credentials and other secrets are here. If you add some secret
## here, make sure you make this file readable just for the right user accounts.

## SSH private key location. Used for remote task execution, when connecting to
## VMs and remote machines. If your systems are not configured for automatic
## connection (private keys located in SSH's standard search path), specify a
## path to the private key here. An empty value (the default) means to rely on
## the standard search path only.
#ssh_privkey: /path/to/private.key
