#!/usr/bin/env python
import re

def modify_config(config, **kw):
{% if not (software is defined and "database" in software) %}
    # no database on this host
    config.dbconn_string = None

{% endif %}
{% if not (software is defined and "zope" in software) %}
    config.zope_version = None

{% endif %}
{% if not (software is defined and "haproxy" in software) %}
    config.haproxy_host = None

{% endif %}
def hook(pm, config, **kw):
{% if not (software is defined and "ema" in software) %}

    for check in pm.get_pmvalues('MB memory and swap usage for perfact-assignd'):
        check.enabled = False

    for check in pm.get_pmvalues('MB memory and swap usage for perfact-dbcached'):
        check.enabled = False

    # disable all setup_bookingcontrol checks
    # T232800: we do not want to get bookingerrors from this system
    for check in pm.get_pmvalues('Inactivity in dbbookd Service'):
        check.enabled = False

    for check in pm.get_pmvalues('Bookings returned Error'):
        check.enabled = False

    for check in pm.get_pmvalues('s CacheTriggerDaemon delay'):
        check.enabled = False

    for check in pm.get_pmvalues('Long waiting bookings dbbookd'):
        check.enabled = False

    broken_cache_managers_check = re.compile('Broken Cache Managers on .*')
    for check in pm.get_pmvalues(broken_cache_managers_check):
        check.enabled = False

    # disable all setup_chachecontrol checks
    for check in pm.get_pmvalues('Slow Interactive Caches'):
        check.enabled = False

    for check in pm.get_pmvalues('Overdue assignments'):
        check.enabled = False

    for check in pm.get_pmvalues('Active Cache Managers'):
        check.enabled = False

    for check in pm.get_pmvalues('Stacked Trigger Caches'):
        check.enabled = False

    for check in pm.get_pmvalues('Errors in Non-Automatic Caches'):
        check.enabled = False

    stuck_busy_caches = re.compile('Stuck busy Caches on .*')
    for check in pm.get_pmvalues(stuck_busy_caches):
        check.enabled = False

    # disable all setup_cacheautocontrol checks
    for check in pm.get_pmvalues('Broken Auto-Caches'):
        check.enabled = False

    for check in pm.get_pmvalues('Duplicate Auto-Caches'):
        check.enabled = False

    for check in pm.get_pmvalues('AppJob failures'):
        check.enabled = False

    # disable all setup_zope checks
    zope_check = re.compile('^[Zz]ope .*')
    for check in pm.get_pmvalues(zope_check):
        check.enabled = False

    # disable all setup_zeo checks
    zeo_check = re.compile('.*zeo.*')
    for check in pm.get_pmvalues(zeo_check):
        check.enabled = False

{% endif %}
{% if not (software is defined and "clamav" in software) %}
    for check in pm.get_pmvalues('MB memory and swap usage for clamav-daemon'):
        check.enabled = False

    for check in pm.get_pmvalues('FreshClam errors'):
        check.enabled = False

{% endif %}
{% if not (software is defined and "database" in software) %}
    for check in pm.get_pmvalues('Postgres Warnings / Errors'):
        check.enabled = False

    for check in pm.get_pmvalues('PostgreSQL server(s) available'):
        check.enabled = False

    for check in pm.get_pmvalues('Invalid database indexes'):
        check.enabled = False

    for check in pm.get_pmvalues('Database Locks'):
        check.enabled = False

    for check in pm.get_pmvalues('DB Exclusive Locks'):
        check.enabled = False

    for check in pm.get_pmvalues('DB Queries waiting > 1h'):
        check.enabled = False

    for check in pm.get_pmvalues('DB Simultaneous Identical Queries'):
        check.enabled = False

    for check in pm.get_pmvalues('Active DB Connections'):
        check.enabled = False

    for check in pm.get_pmvalues('Sequences half depleted'):
        check.enabled = False

    for check in pm.get_pmvalues('MiB Total Size of Large Tables'):
        check.enabled = False

{% endif %}
{% if not (software is defined and "haproxy" in software) %}
    haproxy_check = re.compile('^HA[Pp]roxy .*')
    for check in pm.get_pmvalues(haproxy_check):
        check.enabled = False

{% endif %}
