source: branches/2.2.6/mindi/mindi-bkphw @ 1911

Last change on this file since 1911 was 1911, checked in by Bruno Cornec, 12 years ago

Fix an issue on HW restoration where the dorectory used was incorrect (pointing to the original tree)

File size: 3.4 KB
Line 
1#!/usr/bin/perl -w
2#
3# $Id$
4#
5# Backup the hardware configuration on machine supporting it
6# (Bios configuration, Raid configuration, ...)
7#
8use strict;
9use File::Basename;
10
11# Handling Configuration files
12my $tool = "";
13my $tooldir = "";
14my $ret = 0;
15
16die "No CACHE_DIR parameter" if ((not defined $ARGV[0]) || (! -d $ARGV[0]));
17my $locbkpdir = "/bkphw";
18my $bkpdir = "$ARGV[0]$locbckdir";
19die "No CONF_DIR parameter" if ((not defined $ARGV[1]) || (! -d $ARGV[1]));
20my $confdir = "$ARGV[1]";
21
22die "You need dmidecode for Hardware support\n" if (! -x "/usr/sbin/dmidecode");
23
24mkdir $bkpdir,0755 if (! -d $bkpdir) ;
25open(SYSTEM,"/usr/sbin/dmidecode -s 'system-product-name' 2> /dev/null |") || die "You need /usr/sbin/dmidecode for mindi hardware support";
26my $productname = <SYSTEM>;
27close(SYSTEM);
28
29die "ERROR: No product name found for Hardware support\n" if (not defined $productname);
30
31chomp($productname);
32if ($productname =~ /proliant/i) {
33    print "Detected a $productname. Nice. Continue to support my job :-)\n";
34    print "Activating Proliant support for mindi\n";
35    open(PROLIANT,"$confdir/proliant.files") || die "Unable to open $confdir/proliant.files";
36    open(TOOLS,"> $bkpdir/../tools.files") || die "Unable to open $bkpdir/../tools.files";
37    open(SCRIPT,"> $bkpdir/../mindi-rsthw") || die "Unable to open $bkpdir/../mindi-rsthw";
38    print SCRIPT  << 'EOF';
39#!/bin/bash
40#
41# This script will restore potentially your HW configuration
42# on your system before partioning occurs
43# You may want to reboot after that step if you think that
44# resetting BIOS parameters to the value restored
45# may have an impact on you restoration process
46#
47# put dynamic libraries at an accessible place
48for l in /usr/local/lib/*; do
49    ln -sf $l /usr/lib
50done
51EOF
52    while($tool = <PROLIANT>) {
53        next if ($tool =~ /^#/);
54        chomp($tool);
55        $tooldir = dirname($tool);
56        if (! (-e $tool)) {
57            print "You should install the SmartStart Scripting toolkit tool $tool\nto benefit from mindi's enhanced hardware support\n";
58            print "Get it from http://www.hp.com/servers/sstoolkit\n";
59            next;
60        } else {
61            print "Found $tool, activating enhanced HP Proliant support in mindi\n";
62            print TOOLS "$tool\n";
63        }
64        if ($tool =~ /\/conrep$/) {
65            $ret = system("cd $tooldir ; $tool -s -f$bkpdir/conrep.dat");
66            print SCRIPT "(cd $tooldir ; $tool -l -f$locbkpdir/conrep.dat)\n";
67            print TOOLS "$tool.xml\n";
68        }
69        if ($tool =~ /\/.acuxebin$/) {
70            my $dir=basename($tool);
71            $ret = system("export ACUXE_BIN_INSTALLATION_DIR=$dir ; export IM_CFGFILE_PATH=$dir ; export ACUXE_LOCK_FILES_DIR=$dir/locks ; $tool -c $bkpdir/cpqacuxe.dat");
72            print SCRIPT "export ACUXE_BIN_INSTALLATION_DIR=$dir ; export IM_CFGFILE_PATH=$dir ; export ACUXE_LOCK_FILES_DIR=$dir/locks ; $tool -i $locbkpdir/cpqacuxe.dat\n";
73            print TOOLS "$tooldir/bld\n";
74        }
75        if ($tool =~ /\/hponcfg$/) {
76            $ret = system("$tool -w $bkpdir/hponcfg.dat");
77            print SCRIPT "$tool -r $locbkpdir/hponcfg.dat\n";
78        }
79        if ($tool =~ /\.scexe$/) {
80            print "Found $tool, that firmware will be applied at restore time on your HP Proliant\n";
81            print SCRIPT "./$tool\n";
82        }
83        if ($ret != 0) {
84            print "$tool returned an error. Hardware support may not be complete\n";
85        }
86    }
87    close(PROLIANT);
88    close(TOOLS);
89    close(SCRIPT);
90} else {
91    print "WARNING: No Hardware support for $productname\n";
92    print "You may ask your manufacturer to contribute to the mindi project\n";
93}
94rmdir $bkpdir if (-d $bkpdir) ;
Note: See TracBrowser for help on using the repository browser.