---
# MANDATORY: Credentials for Salt Master
# SALT_URL should consist of url and port.
# For example: http://10.0.0.1:6969
# 6969 - default Salt Master port to listen
# Can be found on cfg* node using
# "salt-call pillar.get _param:salt_master_host"
# and "salt-call pillar.get _param:salt_master_port"
# or "salt-call pillar.get _param:jenkins_salt_api_url"
# SALT_USERNAME by default: salt
# It can be verified with "salt-call shadow.info salt"
# SALT_PASSWORD you can find on cfg* node using
# "salt-call pillar.get _param:salt_api_password"
# or "grep -r salt_api_password /srv/salt/reclass/classes"
SALT_URL: <salt_url>
SALT_USERNAME: <salt_usr>
SALT_PASSWORD: <salt_pwd>

# How many seconds to wait for salt-minion to respond
salt_timeout: 1

# List of nodes (full fqdn) to skip in ALL tests
# Use as env variable as
# export skipped_nodes=mtr01.local,log02.local
# TEMPORARY: please do not comment this setting.
skipped_nodes: []

# List of groups (short name, e.g. dbs) to skip in group tests
# Use as env variable as
# export skipped_groups=mtr,log
# TEMPORARY: please do not comment this setting.
skipped_groups: []

# Groups can be defined using pillars.
# Uncomment this section to enable this.
# Otherwise groups will be discovered automaticaly
# Tips:
# 1) you don't need to separate kvm and kvm_glusterfs nodes
# 2) Use I@pillar or mask like ctl* for targetting nodes

groups:
    cmp: 'I@nova:compute'
    ctl: 'I@keystone:server'
    msg: 'I@rabbitmq:server'
    dbs: 'I@galera:*'
    prx: 'I@nginx:server'
    mon: 'I@prometheus:server and not I@influxdb:server'
    log: 'I@kibana:server'
    mtr: 'I@influxdb:server'
    kvm: 'I@salt:control'
    cid: 'I@docker:host and not I@prometheus:server and not I@kubernetes:*'
    ntw: 'I@opencontrail:database'
    ceph_mon: 'I@ceph:mon'
    ceph_osd: 'I@ceph:osd'
    k8-ctl: 'I@etcd:server'
    k8-cmp: 'I@kubernetes:* and not I@etcd:*'
    cfg: 'I@salt:master'
    gtw: 'I@neutron:gateway'

# mtu test setting
# this test may skip groups (see example)
test_mtu:
    skipped_groups: []
    skipped_ifaces:
    - bonding_masters
    - lo
    - veth
    - tap
    - cali
    - qv
    - qb
    - br-int
    - vxlan
    - virbr0
    - virbr0-nic
    - docker0
    - o-hm0
    - vnet
# mask for interfaces to skip

# test duplicate ips
# do not comment this section
test_duplicate_ips:
    skipped_ifaces:
    - lo
    - virbr0
    - docker_gwbridge
    - docker0

# packages test 'test_packages_are_latest' setting
# this can skip scecial packages
# True value for 'skip_test' will skip this test. Set False to run the test.
# TODO: remove default False value when prod env is fixed
test_packages:
    skipped_packages: []
    skip_test: 'true'

# specify what mcp version (tag) is deployed
drivetrain_version: ''

# jenkins job to run during the test
jenkins_test_job: 'DT-test-job'
jenkins_cvp_job: 'cvp-sanity'

# ntp test setting
# this test may skip specific node (use fqdn)
ntp_skipped_nodes: []

# Maximum time diff for nodes
# Need for case if test test_ntp_sync is running on the border between seconds
maximum_time_diff: 1

# packages need to skip in
# test_check_package_versions
skipped_packages: []
# test_check_module_versions
skipped_modules: []
# test_check_services
skipped_services: []

