[LON-CAPA-cvs] cvs: loncom / lonManage

foxr lon-capa-cvs@mail.lon-capa.org
Tue, 21 Oct 2003 09:44:04 -0000


foxr		Tue Oct 21 05:44:04 2003 EDT

  Modified files:              
    /loncom	lonManage 
  Log:
  Add ability to manage entire cluster in hosts table.
  
  
Index: loncom/lonManage
diff -u loncom/lonManage:1.15 loncom/lonManage:1.16
--- loncom/lonManage:1.15	Tue Sep 16 05:49:54 2003
+++ loncom/lonManage	Tue Oct 21 05:44:04 2003
@@ -3,9 +3,9 @@
 #
 #  lonManage supports remote management of nodes in a LonCAPA cluster.
 #
-#  $Id: lonManage,v 1.15 2003/09/16 09:49:54 foxr Exp $
+#  $Id: lonManage,v 1.16 2003/10/21 09:44:04 foxr Exp $
 #
-# $Id: lonManage,v 1.15 2003/09/16 09:49:54 foxr Exp $
+# $Id: lonManage,v 1.16 2003/10/21 09:44:04 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -33,23 +33,29 @@
 #   it is a command line tool.  The following command line syntax (usage)
 #   is supported:
 #
-#    lonManage  -push   <tablename>  newfile  host
+#    lonManage  -push   <tablename>  newfile  [host]
 #        Push <tablename> to the lonTabs directory.  Note that
 #        <tablename> must be one of:
 #           host  (hosts.tab)
 #           domain (domain.tab)
 #
-#    lonManage  -reinit lonc host
+#    lonManage  -reinit lonc [host]
 #           Sends a HUP signal to the remote systems's lond.
 #
-#    lonmanage  -reinit lond host
+#    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.
+#    not the IP address of the host
+#  
+#   If [host] is not supplied, every host in the client's hosts.tab
+#   table is iterated through and procesed..
 #
 #  $Log: lonManage,v $
+#  Revision 1.16  2003/10/21 09:44:04  foxr
+#  Add ability to manage entire cluster in hosts table.
+#
 #  Revision 1.15  2003/09/16 09:49:54  foxr
 #  Adjust the usage message to reflect what actually will happen on
 #  --reinit={lond|lonc}
@@ -127,24 +133,28 @@
 sub Usage  {
     print "Usage:";
     print <<USAGE;
-    lonManage  --push=<tablename>  newfile  host
+    lonManage  --push=<tablename>  newfile  [host]
         Push <tablename> to the lonTabs directory.  Note that
         <tablename> must be one of:
            host  (hosts.tab)
            domain (domain.tab)
 
-    lonManage  --reinit=lonc host
+    lonManage  --reinit=lonc [host]
        Causes lonc in the remote system to reread hosts.tab and
        adjust the set of clients that are being maintained to match
        the new file.
        
 
-    lonManage  --reinit=lond host
+    lonManage  --reinit=lond [host]
        Causes lond in the remote system to reread the hosts.tab file
        and adjust the set of servers to match changes in that file.
 
     In the above syntax, the host above is the hosts.tab name of a host,
     not the IP address of the host.
+
+    If [host] is omitted, all hosts in the hosts.tab file are iterated
+    over.
+
 USAGE
 
 
@@ -214,9 +224,9 @@
 
     if($pushing ne '') {
 
-        # --push takes in addition a table, and a host:
+        # --push takes in addition a table, and an optional  host:
         #
-	if($paramcount != 2) {
+	if(($paramcount != 2) && ($paramcount != 1)) {
 	    return ();		# Invalid parameter count.
 	}
 	if($command ne '') {
@@ -230,9 +240,9 @@
 
     if ($reinitting ne '') {
 
-	# --reinit takes in addition just a host name
+	# --reinit takes in addition just an optional  host name
 
-	if($paramcount != 1) {
+	if($paramcount > 1) {
 	    return ();
 	}
 	if($command ne '') {
@@ -278,7 +288,6 @@
 sub ValidHost {
     my $host       = shift;
    
-    ReadConfig;
 
     return defined $hostshash{$host};
 
@@ -374,6 +383,7 @@
 
     if( ($tablename eq "host")    ||
 	($tablename eq "domain")) {
+	print("Pushing $tablename to $host\n");
 	Transact($host, "pushfile:$tablename",\@table);
     } else {
 	die "EINVAL - Invalid parameter. tablename: $tablename must be host or domain";
@@ -407,6 +417,7 @@
 
     if(($process eq "lonc") ||
        ($process eq "lond")) {
+	print("Reinitializing $process in $host\n");
 	Transact($host, "reinit:$process");
     } else {
 	die "EINVAL -Invalid parameter. Process $process must be lonc or lond";
@@ -414,6 +425,9 @@
 }
 #--------------------------- Entry point: --------------------------
 
+ReadConfig;			# Read the configuration info (incl.hosts).
+
+
 #  Parse the parameters
 #  If command parsing failed, then print usage:
 
@@ -440,13 +454,25 @@
     my $tablename = shift @params;
     my $tablefile = shift @params;
     my $host      = shift @params;
-    PushFile($tablename, $tablefile, $host);
+    if($host) {
+	PushFile($tablename, $tablefile, $host);
+    } else {			# Push to whole cluster.
+	foreach my $host (keys %hostshash) {
+	    PushFile($tablename, $tablefile, $host);
+	}
+    }
 
 } elsif($operation eq "reinit") {	# reinit processname host.
     my $process   = shift @params;
     my $host      = shift @params;
-    ReinitProcess($process, $host);
-}
+    if ($host) {
+	ReinitProcess($process, $host);
+    } else {			# Reinit whole cluster.
+	foreach my $host (keys %hostshash) {
+	    ReinitProcess($process,$host);
+	}
+    }
+} 
 else {
     Usage;
 }