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

foxr lon-capa-cvs@mail.lon-capa.org
Tue, 19 Aug 2003 10:26:24 -0000


foxr		Tue Aug 19 06:26:24 2003 EDT

  Modified files:              
    /loncom	lonManage 
  Log:
  Initial working version... tested against an unmodified lond this
  produces an unknown_cmd response which is about what I'd expect.
  
  
  
Index: loncom/lonManage
diff -u loncom/lonManage:1.12 loncom/lonManage:1.13
--- loncom/lonManage:1.12	Mon Aug 18 07:08:07 2003
+++ loncom/lonManage	Tue Aug 19 06:26:24 2003
@@ -3,9 +3,9 @@
 #
 #  lonManage supports remote management of nodes in a LonCAPA cluster.
 #
-#  $Id: lonManage,v 1.12 2003/08/18 11:08:07 foxr Exp $
+#  $Id: lonManage,v 1.13 2003/08/19 10:26:24 foxr Exp $
 #
-# $Id: lonManage,v 1.12 2003/08/18 11:08:07 foxr Exp $
+# $Id: lonManage,v 1.13 2003/08/19 10:26:24 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -50,6 +50,10 @@
 #    not the IP address of the host.
 #
 #  $Log: lonManage,v $
+#  Revision 1.13  2003/08/19 10:26:24  foxr
+#  Initial working version... tested against an unmodified lond this
+#  produces an unknown_cmd response which is about what I'd expect.
+#
 #  Revision 1.12  2003/08/18 11:08:07  foxr
 #  Debug request building in Transact.
 #
@@ -93,18 +97,25 @@
 #
 #
 
+#  >>>>BUGBUG<<<< require authentication with lond of some sort.
+#                 domain admin login eg.
+
 # Modules required:
 
 use strict;			# Because it's good practice.
 use English;			# Cause I like meaningful names.
 use Getopt::Long;
 use LONCAPA::Configuration;	# To handle configuration I/O.
+use IO::Socket::UNIX;		# To communicate with lonc.
 
 # File scoped variables:
 
 my %perlvar;			# Perl variable defs from apache config.
 my %hostshash;			# Host table as a host indexed hash.
 
+#
+#   prints out utility's command usage info.
+#
 sub Usage  {
     print "Usage:";
     print <<USAGE;
@@ -127,7 +138,30 @@
 
 
 }
-
+#
+#   Lifted from lonnet.pm - and we need to figure out a way to get it back in.
+#   Performas a transaction with lond via the lonc proxy server.
+#   Parameter:
+#      cmd  - The text of the request.
+#      host - The host to which the request ultimately goes.
+#   Returns:
+#      The text of the reply from the lond or con_lost if not able to contact
+#      lond/lonc etc.
+#
+sub subreply {
+    my ($cmd,$server)=@_;
+    my $peerfile="$perlvar{'lonSockDir'}/$server";
+    my $client=IO::Socket::UNIX->new(Peer    =>"$peerfile",
+                                     Type    => SOCK_STREAM,
+                                     Timeout => 10)
+       or return "con_lost";
+    print $client "$cmd\n";
+    my $answer=<$client>;
+    if (!$answer) { $answer="con_lost"; }
+    chomp($answer);
+    return $answer;
+}
+#   >>> BUGBUG <<< 
 #
 #  Use Getopt::Long to parse the parameters of the program.
 #
@@ -238,6 +272,9 @@
     return defined $hostshash{$host};
 
 }
+
+
+
 #
 #  Performs a transaction with lonc.
 #  By the time this is called, the transaction has already been
@@ -278,9 +315,12 @@
     } else {
 	$request .= "\n";
     }
-    # Body is now built..
+    # Body is now built... transact with lond..
+    
+    my $answer = subreply($request, $host);
+
+    print "$answer\n";
 
-    print "$request";
 }
 #
 #   Called to push a file to the remote system.
@@ -298,6 +338,8 @@
 #     tablefile - name of the file containing the table to push.
 #     host      - name of the host to push this file to.     
 #
+#    >>>BUGBUG<<< This belongs in lonnet.pm.
+#
 sub PushFile {
     my $tablename = shift;
     my $tablefile = shift;
@@ -339,6 +381,8 @@
 #     process - The name of the process to reinit (lonc or lond).
 #     host    - The host in which this reinit will happen.
 #
+#   >>>BUGBUG<<<< This belongs  in lonnet.pm
+#
 sub ReinitProcess {
     my $process = shift;
     my $host    = shift;
@@ -428,6 +472,9 @@
 =item strict
 =item Getopt::Long
 =item English
+=item IO::Socket::UNIX
+
+=head1 KEY Subroutines.
 
 =head1  CATEGORIES
     Command line utility