source: trunk/third/moira/gen/infoblox.gen @ 26024

Revision 26024, 2.7 KB checked in by jdreed, 12 years ago (diff)
In moira: * Snapshot moira at r4113 to pick up new firewall-related changes
  • Property svn:executable set to *
Line 
1#!/moira/bin/perl -Tw
2# $Id$
3
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$ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin";
10
11$outdir = '/moira/dcm/infoblox';
12$outfile = '/moira/dcm/infoblox.out';
13
14umask 022;
15
16use DBI;
17
18$dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
19    || exit $MR_DBMS_ERR;
20
21open(HOSTSOUT, ">$outdir/hosts") || exit $MR_OCONFIG;
22open(ALIASESOUT, ">$outdir/hostaliases") || exit $MR_OCONFIG;
23
24$sth = $dbh->prepare("SELECT m.name, m.mach_id, m.vendor, m.model, m.os, m.location, " .
25                     "m.contact, m.billing_contact, m.account_number, m.status, m.address, " .
26                     "m.owner_type, m.owner_id, s.string, s2.string, sn.name, m.use, " .
27                     "TO_CHAR(m.inuse, 'DD-mon-YYYY'), m.ttl FROM machine m, strings s, strings s2, " .
28                     "subnet sn WHERE s.string_id = m.acomment AND s2.string_id = m.ocomment AND " .
29                     "m.snet_id = sn.snet_id ORDER BY m.name")
30    || exit $MR_DBMS_ERR;
31
32$sth->execute || exit $MR_DBMS_ERR;
33
34while (($mname, $mach_id, $vendor, $model, $os, $location, $contact, $billing_contact, $account_number,
35        $status, $address, $owner_type, $owner_id, $acomment, $ocomment, $subnet, $opt, $inuse, $ttl) = $sth->fetchrow_array) {
36    if ($owner_type eq "USER") {
37        ($owner_name) = $dbh->selectrow_array("SELECT login FROM users WHERE users_id = " . $dbh->quote($owner_id));
38    } elsif ($owner_type eq "KERBEROS") {
39        ($owner_name) = $dbh->selectrow_array("SELECT string FROM strings WHERE string_id = " . $dbh->quote($owner_id));
40    } elsif ($owner_type eq "LIST") {
41        ($owner_name) = $dbh->selectrow_array("SELECT name FROM list WHERE list_id = " . $dbh->quote($owner_id));
42    } else {
43        $owner_name = "NONE";
44    }
45
46    if (!defined($owner_name)) {
47        $owner_name = "UNKNOWN";
48    }
49
50    $acomment =~ s/[\n\r\t]+//g;
51    $ocomment =~ s/[\n\r\t]+//g;
52
53    $row = "$mname\t$mach_id\t$vendor\t$model\t$os\t$location\t$contact\t$billing_contact\t$account_number\t$status\t$address\t$owner_type\t$owner_name\t$acomment\t$ocomment\t$subnet\t$opt\t$inuse\t$ttl\n";
54    $row =~ s/\0//g;
55    print HOSTSOUT $row;
56
57    (($count) = $dbh->selectrow_array("SELECT count(name) FROM hostalias WHERE mach_id = " . $dbh->quote($mach_id))) || exit $MR_DBMS_ERR;
58    if ($count > 0) {
59        print ALIASESOUT "$mname\t";
60
61        $sth2 = $dbh->prepare("SELECT name FROM hostalias WHERE mach_id = " . $dbh->quote($mach_id)) || exit $MR_DBMS_ERR;
62        $sth2->execute || exit $MR_DBMS_ERR;
63       
64        while (($alias) = $sth2->fetchrow_array) {
65            print ALIASESOUT "$alias\t";
66        }
67
68        print ALIASESOUT "\n";
69    }
70}
71
72close(HOSTSOUT);
73close(ALIASESOUT);
74$dbh->disconnect;
75
76system("cd $outdir && tar cf $outfile .") == 0 || exit $MR_OCONFIG;
77
78exit 0;
Note: See TracBrowser for help on using the repository browser.