xcat-core/xCAT/postscripts/odbcsetup
nott 042c3cc544 fix perl INC path
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@13451 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
2012-08-08 17:37:51 +00:00

170 lines
3.7 KiB
Perl
Executable File

#!/usr/bin/perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
#(C)IBM Corp
#
#-----------------------------------------------------------------------------
=head1 odbcsetup
This postscript sets up the odbc for the database running on the Client
machine usually the Service Node.
The xCAT service node client and the DB client should have already been
installed on the node, before this postscript is run.
=cut
#-----------------------------------------------------------------------------
BEGIN
{
$::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}
# if AIX - make sure we include perl 5.8.2 in INC path.
# Needed to find perl dependencies shipped in deps tarball.
if ($^O =~ /^aix/i) {
unshift(@INC, qw(/usr/opt/perl5/lib/5.8.2/aix-thread-multi /usr/opt/perl5/lib/5.8.2 /usr/opt/perl5/lib/site_perl/5.8.2/aix-thread-multi /usr/opt/perl5/lib/site_perl/5.8.2));
}
use lib "$::XCATROOT/lib/perl";
use strict;
use xCAT::Utils;
use xCAT::MsgUtils;
# MAIN
my $rc = 0;
my $cmd;
# setup some important variable
$::sdate = `/bin/date`;
chomp $::sdate;
my $msg;
# get location of database
$::databaseloc = $ENV{'DATABASELOC'};
# check the /etc/xcat/cfgloc file to see if MySQL or DB2
# if it is not here, error out
my $dbname = xCAT::Utils->get_DBName;
if ($dbname eq "DB2")
{
$msg = "odbcsetup:Setting up ODBC for DB2";
`logger -t xcat -p local4.info $msg`;
&setupdb2odbc;
}
else
{
if ($dbname eq "MYSQL")
{
$msg = "odbcsetup:Setting up ODBC for MYSQL";
`logger -t xcat -p local4.info $msg`;
&setupmysqlodbc;
}
else
{
$msg =
"odbcsetup:cfgloc file does not contain MySQL or DB2, will not setup ODBC.";
`logger -t xcat -p local4.err $msg`;
exit 1;
}
}
exit 0;
#
# Subroutines
#
#####################################################
#
# setupdb2odbc
# runs the db2sqlsetup script and sets up the ODBC on the Client
#
#####################################################
sub setupdb2odbc
{
my $msg;
my $rc = 0;
my $cmd;
my $filename = "/etc/xcat/cfgloc";
# get the info
my $xcatcfg;
my $cfgl;
open($cfgl, "<", $filename);
$xcatcfg = <$cfgl>;
close($cfgl);
chomp $xcatcfg;
my ($database, $instance, $password) = split('\|', $xcatcfg);
if ($::databaseloc) {
$cmd = "DATABASELOC=$::databaseloc $::XCATROOT/bin/db2sqlsetup -o -C";
} else {
$cmd = "$::XCATROOT/bin/db2sqlsetup -o -C";
}
$msg = "odbcsetup: Running Client ODBC setup. \"$cmd\"\n";
`logger -t xcat -p local4.info $msg`;
$rc = &runcmd($cmd);
$msg = "odbcsetup: Client ODBC setup finished.\n";
`logger -t xcat -p local4.info $msg`;
return $rc;
}
#####################################################
#
# setupmysqlodbc
# runs the mysqlsetup script and sets up the ODBC on the Client
#
#####################################################
sub setupmysqlodbc
{
my $msg;
my $rc = 0;
my $cmd;
$cmd = "$::XCATROOT/bin/mysqlsetup -o";
$msg = "odbcsetup: Running Client ODBC setup. \"$cmd\"\n";
`logger -t xcat -p local4.info $msg`;
$rc = &runcmd($cmd);
$msg = "odbcsetup: Client ODBC setup finished.\n";
`logger -t xcat -p local4.info $msg`;
return $rc;
}
#
# run the command
#
sub runcmd
{
my ($cmd) = @_;
my $rc = 0;
$cmd .= ' 2>&1';
# my $outref = [];
# @$outref = `$cmd`;
$::outref = [];
$::outref = `$cmd`;
if ($?)
{
$rc = $? >> 8;
if ($rc > 0)
{
my $msg = "odbcsetup:$cmd returned rc=$rc $::outref\n";
`logger -t xcat -p local4.err $msg`;
return 1;
}
}
return 0;
}