--- loncom/Attic/lonManage 2003/08/12 09:46:27 1.1 +++ loncom/Attic/lonManage 2003/08/12 10:40:44 1.4 @@ -3,9 +3,9 @@ # # lonManage supports remote management of nodes in a LonCAPA cluster. # -# $Id: lonManage,v 1.1 2003/08/12 09:46:27 foxr Exp $ +# $Id: lonManage,v 1.4 2003/08/12 10:40:44 foxr Exp $ # -# $Id: lonManage,v 1.1 2003/08/12 09:46:27 foxr Exp $ +# $Id: lonManage,v 1.4 2003/08/12 10:40:44 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -49,3 +49,142 @@ # In the above syntax, the host above is the hosts.tab name of a host, # not the IP address of the host. # +# $Log: lonManage,v $ +# Revision 1.4 2003/08/12 10:40:44 foxr +# Get switch parsing right. +# +# Revision 1.3 2003/08/12 10:22:35 foxr +# Put in parameter parsing infrastructure +# +# Revision 1.2 2003/08/12 09:58:49 foxr +# Add usage and skeleton documentation. +# +# +use Getopt::Long; + +sub Usage { + print "Usage:"; + print < newfile host + Push to the lonTabs directory. Note that + must be one of: + hosts (hosts.tab) + domain (domain.tab) + + lonManage --reinit=lonc host + Sends a HUP signal to the remote systems's lond. + + lonmanage --reinit=lond host + Requests the remote system's lond perform the same action as if + it had received a HUP signal. + + In the above syntax, the host above is the hosts.tab name of a host, + not the IP address of the host. +USAGE + + +} + +# +# Use Getopt::Long to parse the parameters of the program. +# +# Return value is a list consisting of: +# A 'command' which is one of: +# push - table push requested. +# reinit - reinit requested. +# Additional parameters as follows: +# for push: Tablename, hostname +# for reinit: Appname hostname +# +# This function does not validation of the parameters of push and +# reinit. +# +# returns a list. The first element of the list is the operation name +# (e.g. reinit or push). The second element is the switch parameter. +# for push, this is the table name, for reinit, this is the process name. +# Additional elements of the list are the command argument. The count of +# command arguments is validated, but not their semantics. +# +# returns an empty list if the parse fails. +# + +sub ParseArgs { + my $pushing = ''; + my $reiniting = ''; + if(!GetOptions('push=s' => \$pushing, + 'reinit=s' => \$reinitting)) { + return (); + } + + # Require exactly one of --push and --reinit + + my $command = ''; + my $commandarg = ''; + if($pushing ne '') { + if($command ne '') { + return (); + } else { + $command = 'push'; + $commandarg = $pushing; + } + } + if ($reinitting ne '') { + if($command ne '') { + return (); + } else { + $command = 'reinit'; + $commandarg = $reinitting; + } + } + + return ($command, $commandarg); +} + +# +# If command parsing failed, then print usage: + +@status = ParseArgs; +$nparam = @status; + +if($nparam == 0) { + Usage; + exit -1; +} +print "Will do a $status[0] : $status[1]\n"; + +exit 0; + +=head1 NAME + lonManage - Command line utility for remote management of lonCAPA + cluster nodes. + +=head1 SYNOPSIS + +Usage: + B newfile host> + Push to the lonTabs directory. Note that + must be one of: + hosts (hosts.tab) + domain (domain.tab) + + B + Sends a HUP signal to the remote systems's lond. + + B + Requests the remote system's lond perform the same action as if + it had received a HUP signal. + + In the above syntax, the host above is the hosts.tab name of a host, + not the IP address of the host. + + +=head1 DESCRIPTION + +=head1 PREREQUISITES + +=item Getopt::Long + +=head1 CATEGORIES + Command line utility + +=cut