cloudinfo-set 1.86 KB
Newer Older
1
#!/usr/bin/perl
Mike Hibler's avatar
Mike Hibler committed
2 3
#
# Copyright (c) 2006 University of Utah and the Flux Group.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
Mike Hibler's avatar
Mike Hibler committed
23
#
24 25

#
26
# cloudinfo-set <pid> <eid>: Set the cloud info based on an input file of the form:
27
#
28
#####################   <pid> <eid>
29 30 31 32 33 34 35 36
#   <src> <dst> <bw> <delay> <loss>
#
# Where <src> and <dst> or of the form "elab-*" for now.

use strict;

my $TEVC = "/usr/testbed/bin/tevc";

37 38 39 40 41 42
#local $_ = <>;
#chop;
#my ($pid,$eid) = /^(\S+)\s+(\S+)$/ or die
#  "First line must be of the form \"<pid> <eid>\"\n";
my $pid = $ARGV[0];
my $eid = $ARGV[1];
43

44 45
my $failures = 0;

46
while (<STDIN>) {
47
    my ($src, $dst, $bw, $del, $plr) = split /\s+/;
48 49 50 51 52
    my $dstip = $dst;
    if ($dstip !~ /^\d+\.\d+\.\d+\.\d+$/) {
	$dst =~ (/^elab-(\d+)$/) or die "Host names must be of the form elab-NUM\n";
	$dstip = "10.0.0.$1";
    }
53 54 55 56 57
    my $srcip = $src;
    if ($srcip =~ /^\d+\.\d+\.\d+\.(\d+)$/)
    {
	$src = "elab-$1";
    }
58 59
    my $cmd = "$TEVC -e $pid/$eid now elabc-$src MODIFY ".
      "DEST=$dstip BANDWIDTH=$bw DELAY=$del PLR=$plr";
60
    print STDERR "$cmd\n";
61
    system("$cmd");
62 63 64 65
    if ($? != 0) {
	print STDERR "*** Failed to set paramters for $src -> $dst\n";
	$failures++;
    }
66 67
}

68
exit $failures;