Show
Ignore:
Timestamp:
04/10/08 17:00:03 (4 years ago)
Author:
Ted Faber <faber@…>
Children:
33e35371dbef4a5c607301f20c8c8f53c967524c
Parents:
f64fa816aea8218515cc0900940696d700329c0a
git-committer:
Ted Faber <faber@isi.edu> / 2008-04-11T00:00:03Z+0000
Message:

event repeater starts remotely

Location:
fedkit
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • fedkit/fed-tun.pl

    rf64fa81 r8034579  
    6161my $ssh_port_fwds = ""; 
    6262my $remote_script_dir;          # location of the other sides fed-tun.pl 
     63my $event_repeater;             # The pathname of the event repeater 
     64my $remote_config_file;         # Config file for the other side 
    6365 
    6466if ($#ARGV != 0 && !getopts('df:r', \%opts)) { 
     
    9799    $type =~ tr/A-Z/a-z/; 
    98100    $remote_script_dir = $opts{'remotescriptdir'} || "."; 
     101    $event_repeater = $opts{'eventrepeater'}; 
     102    $remote_config_file = $opts{'remoteconfigfile'}; 
     103    $remote_config_file = "-f $remote_config_file" if $remote_config_file; 
    99104 
    100105    if (defined($opts{'fsname'})) { 
     
    179184        # the expected single line of output when the tunnel is connected. 
    180185 
    181         open($SSHCMD[$count], "$SSH -w $count:$count $ssh_port_fwds -o \"StrictHostKeyChecking no\" $opts{'peer'}  \"$remote_script_dir/fed-tun.pl -r $addr $count\" |") or die "Failed to run ssh"; 
     186        print "$SSH -w $count:$count $ssh_port_fwds -o \"StrictHostKeyChecking no\" $opts{'peer'}  \"$remote_script_dir/fed-tun.pl $remote_config_file -r $addr $count\"\n" if $debug; 
     187        open($SSHCMD[$count], "$SSH -w $count:$count $ssh_port_fwds -o \"StrictHostKeyChecking no\" $opts{'peer'}  \"$remote_script_dir/fed-tun.pl $remote_config_file -r $addr $count\" |") or die "Failed to run ssh"; 
    182188 
    183189        my $check = <$SSHCMD[$count]>;  # Make sure something ran... 
     
    210216    &setup_bridging($tun, $bridge, $iface, $addr); 
    211217    print "Remote connection all set up!\n";  # Trigger other end with output 
     218 
     219    # If this is the first remote invocation on a control gateway, start the 
     220    # event repeater. 
     221 
     222    my $file = new IO::File(">/tmp/remote"); 
     223    print($file "hello!!!\n") if $file; 
     224    if ( $count == 0 && $type ne "experiment" ) { 
     225        my $remote_pubsub_port = $PUBSUB_PORT - 1;  # There will be a local 
     226                                                    # pubsubd running, so we 
     227                                                    # dodge the port on the 
     228                                                    # remote tunnel node. 
     229        print($file "In here!\n"); 
     230        # Make sure we have the relevant parameters 
     231        die "Missing event repeater params (No config file ?)\n" 
     232            unless $event_repeater && $opts{'remoteexperiment'} &&  
     233            $opts{'localexperiment'}; 
     234 
     235        print "Starting event repeater\n" if $debug; 
     236         
     237        print($file "$event_repeater -P $remote_pubsub_port -S localhost " .  
     238            "-E $opts{'remoteexperiment'} -e $opts{'localexperiment'}\n")  
     239            if $file; 
     240        # Connect to the forwarded pubsub port on this host to listen to the 
     241        # other experiment's events, and to the local experiment to forward 
     242        # events. 
     243        system("$event_repeater -P $remote_pubsub_port -S localhost " .  
     244            "-E $opts{'remoteexperiment'} -e $opts{'localexperiment'}"); 
     245        warn "Event repeater returned $?\n" if $?; 
     246    } 
     247    $file->close() if $file; 
    212248} else { 
    213249    print "inactive end of a connection, finishing" if ($debug); 
  • fedkit/splitter.pl

    rf64fa81 r8034579  
    1010 
    1111my @scripts = ("fed_bootstrap", "federate.sh", "smbmount.pl",  
    12     "make_hosts", "fed-tun.pl"); 
     12    "make_hosts", "fed-tun.pl", "fed_evrepeater" ); 
    1313my $local_script_dir = "."; 
    1414my($pid, $gid);                 # Process and group IDs for calling parse.tcl 
     
    638638        my $ddomain =                           # domain for the destination 
    639639            $tbparams->{$dtb}->{'domain'}; 
    640         my $sproject =                          # Project of the destination 
     640        my $sproject =                          # Project of the source 
    641641            $tbparams->{$gateways}->{'project'}; 
     642        my $dproject =                          # Project of the destination 
     643            $tbparams->{$dtb}->{'project'}; 
    642644        my $fs =                                # Master fs node (FQDN) 
    643645            $tbparams->{$master}->{'fs'} .  $tbparams->{$master}->{'domain'}; 
     
    648650            $tbparams->{$master}->{'domain'}; 
    649651        my $remote_script_dir =                 # Remote fed script location 
    650             "/proj/" . $tbparams->{$dtb}->{'project'} . "/exp/$eid/tmp"; 
     652            "/proj/" . $dproject . "/exp/$eid/tmp"; 
     653        my $local_script_dir =                  # Local fed script location 
     654            "/proj/" . $sproject . "/exp/$eid/tmp"; 
    651655        my $active;                             # Is this the active side of 
    652656                                                # the connector? 
     
    656660 
    657661        my $conf_file = "$myname$sdomain.gw.conf"; 
     662        my $remote_conf_file = "$desthost$ddomain.gw.conf"; 
    658663        # translate to lower case so the `hostname` hack for specifying 
    659664        # configuration files works. 
    660665        $conf_file =~ tr/A-Z/a-z/; 
     666        $remote_conf_file =~ tr/A-Z/a-z/; 
    661667 
    662668        # If either end of this link is in the master side of the testbed, that 
     
    684690        print $gwconfig "Type: $type\n"; 
    685691        print $gwconfig "RemoteScriptDir: $remote_script_dir\n"; 
     692        print $gwconfig "EventRepeater: $local_script_dir/fed_evrepeater\n"; 
     693        print $gwconfig "RemoteExperiment: $dproject/$eid\n"; 
     694        print $gwconfig "LocalExperiment: $sproject/$eid\n"; 
     695        print $gwconfig "RemoteConfigFile: " .  
     696            "$remote_script_dir/$remote_conf_file\n"; 
    686697        print $gwconfig "Peer: $desthost$ddomain\n"; 
    687698        print $gwconfig "Pubkeys: " .