[%
    fqdns = {};
    FOREACH host IN hosts;
        community = host.snmp;
        hostfqdn  = host.fqdn;
        IF host.hardware.match("^Cisco.*(?:CAT|cat)");
            IF fqdns.ciscocat.$community == var.undef;
                fqdns.ciscocat.$community = [];
            END;
            fqdns.ciscocat.$community.push(hostfqdn);
        ELSIF host.hardware.match("^Cisco\\s*(?:1802|1803\/K9|1803-K9|7204|7206VXR|7206VXR\/NPE300|7206VXR\/NPE-G1|7606|7606-S|WS-C2960G-24TC-L|WS-C3548-XL|WS-C3550-12G|WS-C3550-24-EMI|WS-C3550-24-SMI|WS-C3550-48-SMI|WS-C3560-8PC|WS-C3560-8PC-S|WS-C3560G-24TS-S|WS-C3750-48PS-S|WS-C3750E-24TD-S|WS-C3750G-12S-E|WS-C4510R-E|WS-C4900M|WS-C6503-E|WS-C6506|WS-C6509|WS-C6509-E|WS-F6K-MSFC2)");
            IF fqdns.ciscosw.$community == var.undef;
                fqdns.ciscosw.$community = [];
            END;
            fqdns.ciscosw.$community.push(hostfqdn);
        ELSIF host.hardware.match("^Cisco.*");
            IF fqdns.cisco.$community == var.undef;
                fqdns.cisco.$community = [];
            END;
            fqdns.cisco.$community.push(hostfqdn);
        ELSIF host.hardware.match("^(?:Netscreen.*|Juniper\\s*(NS|Netscreen)|Juniper\\s*SSG)");
            IF fqdns.netscreen.$community == var.undef;
                fqdns.netscreen.$community = [];
            END;
            fqdns.netscreen.$community.push(hostfqdn);
        ELSE;
            community = 'wirepubcis';
            IF fqdns.other.$community == var.undef;
                fqdns.other.$community = [];
            END;
            fqdns.other.$community.push(hostfqdn);
        END;
    END;

    FOREACH fqdn IN fqdns.ciscocat;
        val = fqdn.value;
-%]
define service {
        use                     prio3-service
        service_description     cpu-Status
        check_command           check_auto_cisco_cata_cpu![% fqdn.key %]
        notification_options    w,c,r
        host_name               [% val.unique.unique.sort.join(',') %]
}
[%
        FOR service IN ['mem','hardware'];
-%]
define service {
        use                     prio3-service
        service_description     [% service %]-Status
        check_command           check_auto_cisco_[% service %]![% fqdn.key %]
        notification_options    w,c,r
        host_name               [% val.unique.unique.sort.join(',') %]
}
[%
        END;
    END;
%]
[%
    FOREACH fqdn IN fqdns.ciscosw;
        val = fqdn.value;
        FOR service IN ['cpu','mem','hardware'];
-%]
define service {
        use                     prio3-service
        service_description     [% service %]-Status
        check_command           check_auto_cisco_[% service %]![% fqdn.key %]
        notification_options    w,c,r
        host_name               [% val.unique.unique.sort.join(',') %]
}
[%
        END;
    END;
%]
[%
    FOREACH fqdn IN fqdns.cisco;
        val = fqdn.value;
        FOR service IN ['cpu','mem'];
-%]
define service {
        use                     prio3-service
        service_description     [% service %]-Status
        check_command           check_auto_cisco_[% service %]![% fqdn.key %]
        notification_options    w,c,r
        host_name               [% val.unique.sort.join(',') %]
}
[%
        END;
    END;
%]
[%
    FOREACH fqdn IN fqdns.netscreen;
        val = fqdn.value;
        FOR service IN ['cpu','mem','sessions'];
-%]
define service {
        use                     prio3-service
        service_description     [% service %]-Status
        check_command           check_auto_netscreen_[% service %]![% fqdn.key %]
        host_name               [% val.unique.sort.join(',') %]
}
[%
        END;
    END;
%]
[%
    FOREACH fqdn IN fqdns.other;
        val = fqdn.value;
%]
define service {
        use                     ping
        host_name               [% val.unique.sort.join(',') %]
}
[%
    END;
-%]
