<?xml version='1.0' encoding='utf-8'?>

<creole>

    <files>
        <file name='/etc/iproute2/rt_tables'/>
        <file filelist='agregation' name='/etc/agregation.conf' rm='True'/>
        <file filelist='agregation' name='/etc/logrotate.d/agregation' source='agregation.logrotate'/>
    </files>

    <variables>

        <family name='Interface-0'>
            <variable name='alias_gw_eth0' redefine='True' mandatory='True'/>
            <variable name='activer_agregation' type='oui/non' description='Répartition de charge entre 2 lignes Internet'>
                <value>non</value>
            </variable>
        </family>

        <family name='agrégation'>

            <variable name='ag_mode' type='string' description='Mode load balancing ou fail-over'>
                <value>mode_lb</value>
            </variable>
            <!-- lien 1 -->
            <variable name='ag_force_eth0' type='ip' description='Destination forcée sur le lien 1' multi='True'/>
            <variable name='ag_force_netmask_eth0' type='netmask' description='Masque pour destination forcée sur le lien 1'/>
            <variable name='ag_dns_eth0' type='ip' description='Adresse du DNS sur le lien 1' multi='True' mandatory='True'/>
            <variable name='ag_fo_etat_eth0' type='string' description='Etat actif ou passif pour fail-over lien 1'/>
            <variable name='ag_weight_eth0' type='number' description='Débit mesuré sur le lien 1 (entier en Mbps)' mandatory='True'/>
            <!-- lien 2 -->
            <variable name='ag_force_eth0_0' type='ip' description='Destination forcée sur le lien 2' multi='True'/>
            <variable name='ag_force_netmask_eth0_0' type='netmask' description='Masque pour destination forcée sur le lien 2'/>
            <variable name='ag_dns_eth0_0' type='ip' description='Adresse du DNS sur le lien 2' multi='True' mandatory='True'/>
            <variable name='ag_fo_etat_eth0_0' type='string' description='Etat actif ou passif pour fail-over lien 2'/>
            <variable name='ag_weight_eth0_0' type='number' description='Débit mesuré sur le lien 2 (entier en Mbps)' mandatory='True'/>
            <!-- divers -->
            <variable name='ag_pause' type='number' description="Délai entre les tests d'état (en secondes)" >
                <value>10</value>
            </variable>
            <variable name='ag_timeout' type='number' description='Timeout de la requête DNS (en secondes)' >
                <value>1</value>
            </variable>
            <variable name='ag_testdns' type='domain_strict' description='Adresse DNS testée' multi='True' >
                <value>www.google.com</value>
            </variable>
            <variable name='ag_nbsucces' type='number' description="Nombre de succès avant changement d'état">
                <value>4</value>
            </variable>
            <variable name='ag_nbechecs' type='number' description="Nombre d'échecs avant changement d'état">
                <value>1</value>
            </variable>
            <!-- mail -->
            <variable name='ag_active_mail' type='oui/non' description='Activation des alertes mail'>
                <value>non</value>
            </variable>
            <variable name='ag_mail_dest' type='mail' description="Adresse mail d'alerte" multi='True' mandatory='True'/>
        </family>

        <separators>
            <separator name='activer_agregation'>Agrégation de liens</separator>
            <separator name='ag_mode'>Mode d'agrégation</separator>
            <separator name='ag_force_eth0'>Lien 1</separator>
            <separator name='ag_force_eth0_0'>Lien 2</separator>
            <separator name='ag_pause'>Divers</separator>
            <separator name='ag_active_mail'>Alerte mail</separator>
        </separators>

    </variables>

    <constraints>
        <!-- FIXME: l'agrégation nécessite un alias sur eth0 -->
        <condition name='disabled_if_in' source='alias_eth0'>
            <param>non</param>
            <target type='variable'>activer_agregation</target>
        </condition>
        <condition name='disabled_if_in' source='activer_agregation'>
            <param>non</param>
            <target type='variable'>alias_gw_eth0</target>
            <target type='family'>agregation</target>
            <target type='filelist'>agregation</target>
        </condition>
        <check name="valid_enum" target='ag_mode'>
            <param>['mode_lb','mode_fo']</param>
        </check>
        <condition name='disabled_if_in' source='ag_mode'>
            <param>mode_fo</param>
            <target type='variable'>ag_weight_eth0</target>
            <target type='variable'>ag_weight_eth0_0</target>
        </condition>
        <condition name='disabled_if_in' source='ag_mode'>
            <param>mode_lb</param>
            <target type='variable'>ag_fo_etat_eth0</target>
            <target type='variable'>ag_fo_etat_eth0_0</target>
        </condition>
        <check name="valid_enum" target='ag_fo_etat_eth0'>
            <param>['actif','passif']</param>
        </check>
        <check name="valid_enum" target='ag_fo_etat_eth0_0'>
            <param>['actif','passif']</param>
        </check>
        <group master='ag_force_eth0'>
            <slave>ag_force_netmask_eth0</slave>
        </group>
        <group master='ag_force_eth0_0'>
            <slave>ag_force_netmask_eth0_0</slave>
        </group>
        <fill name='calc_multi_val' target='ag_mail_dest'>
            <param type='eole'>system_mail_to</param>
        </fill>
        <condition name='disabled_if_in' source='ag_active_mail'>
            <param>non</param>
            <target type='variable'>ag_mail_dest</target>
        </condition>
    </constraints>

    <help>
        <family name='agrégation'>Paramétrage de la répartition de charge ou de la haute disponibilité pour les sorties Internet</family>
        <variable name='activer_agregation'>L'agrégation de liens permet la mise en place d'une répartition de charge ou d'une haute disponibilité pour les sorties Internet</variable>
    </help>

</creole>
<!-- vim: ts=4 sw=4 expandtab
-->
