--- loncom/Attic/lonManage 2003/08/18 09:56:01 1.7 +++ loncom/Attic/lonManage 2003/08/18 10:25:46 1.9 @@ -3,9 +3,9 @@ # # lonManage supports remote management of nodes in a LonCAPA cluster. # -# $Id: lonManage,v 1.7 2003/08/18 09:56:01 foxr Exp $ +# $Id: lonManage,v 1.9 2003/08/18 10:25:46 foxr Exp $ # -# $Id: lonManage,v 1.7 2003/08/18 09:56:01 foxr Exp $ +# $Id: lonManage,v 1.9 2003/08/18 10:25:46 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,6 +50,15 @@ # not the IP address of the host. # # $Log: lonManage,v $ +# Revision 1.9 2003/08/18 10:25:46 foxr +# Write ReinitProcess function in terms of ValidHost and Transact. +# +# Revision 1.8 2003/08/18 10:18:21 foxr +# Completed PushFile function in terms of +# - ValidHost - Determines if target host is valid. +# - Transact - Performs one of the valid transactions with the +# appropriate lonc<-->lond client/server pairs. +# # Revision 1.7 2003/08/18 09:56:01 foxr # 1. Require to be run as root. # 2. Catch case where no operation switch is supplied and put out usage. @@ -178,6 +187,11 @@ sub ParseArgs { return @result; } +sub ValidHost { + return 1; +} +sub Transact { +} # # Called to push a file to the remote system. # The only legal files to push are hosts.tab and domain.tab. @@ -199,10 +213,59 @@ sub PushFile { my $tablefile = shift; my $host = shift; -} + # Open the table file: + if(!open(TABLEFILE, "<$tablefile")) { + die "ENOENT - No such file or directory $tablefile"; + } + + # Require that the host be valid: + + if(!ValidHost($host)) { + die "EHOSTINVAL - Invalid host $host"; # Ok so I invented this 'errno'. + } + # Read in the file. If the table name is valid, push it. + + my @table = ; # These files are pretty small. + close TABLEFILE; + + if( ($tablename eq "host") || + ($tablename eq "domain")) { + Transact($host, "pushfile:$tablename:",\@table); + } else { + die "EINVAL - Invalid parameter. tablename: $tablename must be host or domain"; + } +} +# +# This function is called to reinitialize a server in a remote host. +# The servers that can be reinitialized are: +# - lonc - The lonc client process. +# - lond - The lond daemon. +# NOTE: +# Reinitialization in this case means re-scanning the hosts table, +# starting new lond/lonc's as approprate and stopping existing lonc/lond's. +# +# Parameters: +# process - The name of the process to reinit (lonc or lond). +# host - The host in which this reinit will happen. +# sub ReinitProcess { - print "Reinitializing a process\n"; + my $process = shift; + my $host = shift; + + # Ensure the host is valid: + + if(!ValidHost($host)) { + die "EHOSTINVAL - Invalid host $host"; + } + # Ensure target process selector is valid: + + if(($process eq "lonc") || + ($process eq "lond")) { + Transact($host, "reinit:$process"); + } else { + die "EINVAL -Invalid parameter. Process $process must be lonc or lond"; + } } #--------------------------- Entry point: --------------------------