2008-04-10 21:06:26 +00:00
|
|
|
#!/usr/bin/perl
|
|
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
|
|
|
|
package xCAT::Usage;
|
2008-04-12 14:53:11 +00:00
|
|
|
use Getopt::Long;
|
2008-04-10 21:06:26 +00:00
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
=head1 xCAT::Usage
|
|
|
|
=head2 Package Description
|
|
|
|
xCAT usage module. Some commands such as rpower have different implementations
|
|
|
|
for different hardware. This module holds the usage usage string for these kind
|
|
|
|
of commands so that the usage can be referenced from different modules.
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
my %usage = (
|
2008-04-12 14:53:11 +00:00
|
|
|
"rnetboot" =>
|
2008-04-18 16:44:25 +00:00
|
|
|
"Usage: rnetboot <noderange> [-f][-V|--verbose]
|
2008-04-12 14:53:11 +00:00
|
|
|
rnetboot [-h|--help|-v|--version]",
|
|
|
|
"rpower" =>
|
|
|
|
"Usage: rpower <noderange> [--nodeps][on|off|reset|stat|state|boot|of|cycle] [-V|--verbose]
|
|
|
|
rpower [-h|--help|-v|--version]",
|
|
|
|
"rbeacon" =>
|
|
|
|
"Usage: rbeacon <noderange> [on|off|stat] [-V|--verbose]
|
|
|
|
rbeacon [-h|--help|-v|--version]",
|
|
|
|
"rvitals" =>
|
|
|
|
"Usage: rvitals <noderange> [all|temp|wattage|voltage|fanspeed|power|leds|state] [-V|--verbose]
|
|
|
|
rvitals [-h|--help|-v|--version]",
|
|
|
|
"reventlog" =>
|
|
|
|
"Usage: reventlog <noderange> [all|clear|<number of entries to retrieve>] [-V|--verbose]
|
|
|
|
reventlog [-h|--help|-v|--version]",
|
|
|
|
"rinv" =>
|
|
|
|
"Usage:
|
|
|
|
Common:
|
|
|
|
rinv <noderange> [all|model|serial] [-V|--verbose]
|
|
|
|
rinv [-h|--help|-v|--version]
|
|
|
|
BMC specific:
|
|
|
|
rinv <noderange> [vpd|mprom|deviceid|uuid|guid]
|
|
|
|
MPA specific:
|
|
|
|
rinv <noderange> [firm|bios|diag|mprom|sprom|mparom|mac|mtm]
|
|
|
|
PPC specific:
|
|
|
|
rinv <noderange> [bus|config]",
|
|
|
|
"rsetboot" =>
|
|
|
|
"Usage: rsetboot <noderange> [net|hd|cd|def|stat] [-V|--verbose]
|
|
|
|
rsetboot [-h|--help|-v|--version]",
|
|
|
|
"rbootseq" =>
|
|
|
|
"Usage: rbootseq <noderange> [hd0|hd1|hd2|hd3|net|iscsi|usbflash|floppy|none],...
|
|
|
|
rbootseq [-h|--help|-v|--version]",
|
|
|
|
"rscan" =>
|
|
|
|
"Usage: rscan <noderange> [-w][-x|-z] [-V|--verbose]
|
|
|
|
rscan [-h|--help|-v|--version]",
|
2008-04-10 21:06:26 +00:00
|
|
|
"rspconfig" =>
|
|
|
|
"Usage:
|
|
|
|
Common:
|
2008-05-20 18:57:12 +00:00
|
|
|
rspconfig [-h|--help|-v|--version]
|
|
|
|
BMC/MPA Common:
|
2008-04-12 14:53:11 +00:00
|
|
|
rspconfig <noderange> [snmpdest|alert|community] [-V|--verbose]
|
2008-04-10 21:06:26 +00:00
|
|
|
rspconfig <noderange> [snmpdest=<dest ip address>|alert=<on|off|en|dis|enable|disable>|community=<string>]
|
|
|
|
BMC specific:
|
|
|
|
rspconfig <noderange> [ip|netmask|gateway|backupgateway|garp]
|
|
|
|
rspconfig <noderange> [garp=<number of 1/2 second>]
|
|
|
|
MPA specific:
|
2008-05-20 18:57:12 +00:00
|
|
|
rspconfig <noderange> [sshcfg|snmpcfg|build|pd1|pd2|network|swnet|ntp|textid]
|
|
|
|
rspconfig <singlenode> [textid=name]
|
|
|
|
rspconfig <noderange> [shcfg=<enable|disable>|
|
2008-04-21 13:40:51 +00:00
|
|
|
snmpcfg=<enable|disable>|
|
|
|
|
pd1=<nonred|redwoperf|redwperf>|
|
|
|
|
pd2=<nonred|redwoperf|redwperf>|
|
2008-04-22 19:28:29 +00:00
|
|
|
network=<*|[ip],[host],[gateway],[netmask]>|
|
|
|
|
swnet=<[ip],[gateway],[netmask]>|
|
2008-05-20 18:57:12 +00:00
|
|
|
textid=<*>|
|
2008-04-22 19:28:29 +00:00
|
|
|
ntp=<[ntp],[ip],[frequency],[v3]>
|
2008-04-12 14:53:11 +00:00
|
|
|
PPC specific:
|
2008-04-21 13:40:51 +00:00
|
|
|
rspconfig <noderange> [autopower|iocap|decfg|memdecfg|procdecfg|time|date|spdump|sysdump]
|
|
|
|
rspconfig <noderange> autopower=<enable|disable>|
|
|
|
|
iocap=<enable|disable>|
|
|
|
|
decfg=<enable|disable>:<policy name>,...|
|
|
|
|
memdecfg=<configure|deconfigure>:<processing unit>:<bank|unit>:<bank/unit number>:id,...|
|
|
|
|
procdecfg=<configure|deconfigure>:<processing unit>:id,...|
|
|
|
|
date=<mm-dd-yyyy>|
|
|
|
|
time=<hh:mm:ss>",
|
2008-04-12 14:53:11 +00:00
|
|
|
"getmacs" =>
|
|
|
|
"Usage:
|
|
|
|
Common:
|
|
|
|
getmacs <noderange> [-V|--verbose]
|
|
|
|
getmacs [-h|--help|-v|--version]
|
|
|
|
PPC specific:
|
2008-04-21 13:14:30 +00:00
|
|
|
getmacs <noderange> [-c][-d][-S server -G gateway -C client]",
|
2008-04-12 14:53:11 +00:00
|
|
|
"mkvm" =>
|
2008-04-30 19:20:42 +00:00
|
|
|
"Usage: mkvm singlenode -i id -n noderange [-V|--verbose]
|
|
|
|
mkvm srccec -c destcec [-V|--verbose]
|
2008-04-12 14:53:11 +00:00
|
|
|
mkvm [-h|--help|-v|--version]",
|
|
|
|
"lsvm" =>
|
|
|
|
"Usage: lsvm <noderange> [-V|--verbose]
|
|
|
|
lsvm [-h|--help|-v|--version]",
|
|
|
|
"chvm" =>
|
|
|
|
"Usage: chvm <noderange> [-V|--verbose]
|
|
|
|
chvm [-h|--help|-v|--version]",
|
|
|
|
"rmvm" =>
|
|
|
|
"Usage: rmvm <noderange> [-V|--verbose]
|
|
|
|
rmvm [-h|--help|-v|--version]"
|
|
|
|
);
|
|
|
|
|
|
|
|
my %version = (
|
|
|
|
"rnetboot" => "Version 2.0",
|
|
|
|
"rpower" => "Version 2.0",
|
|
|
|
"rbeacon" => "Version 2.0",
|
|
|
|
"rvitals" => "Version 2.0",
|
|
|
|
"reventlog" => "Version 2.0",
|
|
|
|
"rinv" => "Version 2.0",
|
|
|
|
"rsetboot" => "Version 2.0",
|
|
|
|
"rbootseq" => "Version 2.0",
|
|
|
|
"rscan" => "Version 2.0",
|
|
|
|
"rspconfig" => "Version 2.0",
|
|
|
|
"getmacs" => "Version 2.0",
|
|
|
|
"mkvm" => "Version 2.0",
|
|
|
|
"lsvm" => "Version 2.0",
|
|
|
|
"chvm" => "Version 2.0",
|
|
|
|
"rmvm" => "Version 2.0"
|
2008-04-10 21:06:26 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
#--------------------------------------------------------------------------------
|
|
|
|
=head3 getUsage
|
|
|
|
It returns the usage string for the given command.
|
|
|
|
Arguments:
|
|
|
|
command
|
|
|
|
Returns:
|
|
|
|
the usage string for the command.
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
sub getUsage {
|
|
|
|
my ($class, $command)=@_;
|
|
|
|
if (exists($usage{$command})) { return $usage{$command};}
|
|
|
|
else { return "Usage for command $command cannot be found\n"; }
|
|
|
|
}
|
2008-04-12 14:53:11 +00:00
|
|
|
|
|
|
|
#--------------------------------------------------------------------------------
|
|
|
|
=head3 getVersion
|
|
|
|
It returns the version string for the given command.
|
|
|
|
Arguments:
|
|
|
|
command
|
|
|
|
Returns:
|
|
|
|
the version string for the command.
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
sub getVersion {
|
|
|
|
my ($class, $command)=@_;
|
|
|
|
if (exists($version{$command})) { return $version{$command};}
|
|
|
|
else { return "Version string for command $command cannot be found\n"; }
|
|
|
|
}
|
|
|
|
|
|
|
|
#--------------------------------------------------------------------------------
|
|
|
|
=head3 parseCommand
|
|
|
|
This function parses the given command to see if the usage or version string
|
|
|
|
need to be returned.
|
|
|
|
Arguments:
|
|
|
|
command
|
|
|
|
arguments
|
|
|
|
Returns:
|
|
|
|
the usage or the version string for the command. The caller need to display the
|
|
|
|
string and then exit.
|
|
|
|
none, if no usage or version strings are needed. The caller can keep going.
|
|
|
|
=cut
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
sub parseCommand {
|
|
|
|
my $command=shift;
|
|
|
|
if ($command =~ /xCAT::Usage/) { $command=shift; }
|
|
|
|
my @exargs=@_;
|
|
|
|
|
|
|
|
@ARGV=@exargs;
|
|
|
|
|
|
|
|
#print "command=$command, args=@exargs, ARGV=@ARGV\n";
|
|
|
|
|
|
|
|
$Getopt::Long::ignorecase=0;
|
|
|
|
$Getopt::Long::pass_through=1;
|
|
|
|
|
|
|
|
# parse the options
|
|
|
|
if(!GetOptions(
|
|
|
|
'h|help' => \$::HELP,
|
|
|
|
'v|version' => \$::VERSION)) {
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($::HELP) { return xCAT::Usage->getUsage($command); }
|
|
|
|
if ($::VERSION) { return xCAT::Usage->getVersion($command); }
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
2008-04-21 13:40:51 +00:00
|
|
|
|