]> andersk Git - moira.git/blob - gen/nagios-cluster.gen
select *unique* hostnames that are printers, since nagios doesn't like
[moira.git] / gen / nagios-cluster.gen
1 #!/moira/bin/perl -Tw
2
3 # $Id$
4 # The following exit codes are defined and MUST BE CONSISTENT with the
5 # error codes the library uses:
6 $MR_DBMS_ERR = 47836421;
7 $MR_OCONFIG = 47836460;
8
9 $outfile = '/moira/dcm/nagios-cluster.out';
10
11 use DBI;
12
13 umask 022;
14 open(OUT, ">$outfile") || exit $MR_OCONFIG;
15 print OUT "# This File is automatically generated by Moira.  Do not edit.\n\n";
16
17
18 $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
19   || exit $MR_DBMS_ERR;
20
21
22 $sth1 = $dbh->prepare("SELECT m.name FROM machine m, clusters c, mcmap p " .
23                      "WHERE m.status=1 AND c.name='cluster' AND " .
24                      "(m.mach_id=p.mach_id AND p.clu_id=c.clu_id)")
25     || exit $MR_DBMS_ERR;
26 $sth1->execute || exit $MR_DBMS_ERR;
27
28 my %clusters;
29 while (($name) = $sth1->fetchrow_array) {
30     next if $name eq "[NONE]";
31     $name = lc($name);
32     my $cluster = $name;
33     $cluster =~ s/\..*$//;
34     $cluster =~ s/\-[^\-]*$//;
35 #    print "$name\t$cluster\n";
36     push @$cluster, $name;
37     $clusters{$cluster}++;
38
39
40     print OUT <<"END";
41 define host{
42         host_name               $name
43         alias                   $name
44         address                 $name
45         contact_groups          noone
46         use                     generic-host
47         }
48
49 define service{
50         host_name               $name
51         contact_groups          noone
52         use                     ping-service
53         }
54
55 define service{
56         host_name               $name
57         contact_groups          noone
58         use                     no-ssh-service
59         }
60
61 define service{
62         host_name               $name
63         contact_groups          noone
64         use                     no-telnet-service
65         }
66
67 define service{
68         host_name               $name
69         contact_groups          noone
70         use                     no-ftp-service
71         }
72
73 define service{
74         host_name               $name
75         contact_groups          noone
76         use                     public-service
77         }
78
79 END
80 }
81
82 foreach $key (sort (keys %clusters)) {
83     print OUT <<END;
84 define hostgroup {
85         hostgroup_name          $key
86         alias                   $key
87 END
88     print OUT "\tmembers\t\t";
89     $maybecomma = "";
90     foreach $machine (@$key) {
91         print OUT "$maybecomma$machine";
92         $maybecomma = ",";
93     }
94     print OUT "\n\t}\n\n";
95 }
96
97
98 print OUT "\n### Printers\n\n";
99
100 $sth0 = $dbh->prepare("SELECT UNIQUE m.name FROM machine m, printers p " .
101                      "WHERE (p.type = 'DORM' OR p.type ='CLUSTER') " .
102                      "AND p.mach_id = m.mach_id AND m.status=1")
103     || exit $MR_DBMS_ERR;
104
105 $sth0->execute || exit $MR_DBMS_ERR;
106
107 while (($name) = $sth0->fetchrow_array) {
108     next if $name eq "[NONE]";
109     $name = lc($name);
110     push(@allprinters, $name);
111     print OUT <<"END";
112 define host{
113         host_name               $name
114         alias                   $name
115         address                 $name
116         contact_groups          noone
117         use                     generic-host
118         }
119
120 define service{
121         host_name               $name
122         contact_groups          noone
123         use                     ping-service
124         }
125
126 define service{
127         host_name               $name
128         contact_groups          noone
129         use                     hpjd-service
130         }
131
132 END
133
134 }
135
136 print OUT <<END;
137 define hostgroup{
138         hostgroup_name          printers
139         alias                   printers
140 END
141
142 print OUT "\tmembers\t\t";
143
144 $maybecomma = "";
145 foreach $printer (@allprinters) {
146     print OUT "$maybecomma$printer";
147     $maybecomma = ",";
148 }
149
150 print OUT "\n\t}\n\n";
151
152 close(OUT);
153 $dbh->disconnect;
154
155 exit 0;
This page took 0.057456 seconds and 5 git commands to generate.