Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rewrite perl script for optorsim
authorNavarrop <Pierre.Navarro@imag.fr>
Thu, 20 Oct 2011 11:22:19 +0000 (13:22 +0200)
committerNavarrop <Pierre.Navarro@imag.fr>
Thu, 20 Oct 2011 11:28:03 +0000 (13:28 +0200)
examples/platforms/conf/transform_optorsim_platform.pl

index 2efc350..5b021e2 100644 (file)
@@ -23,82 +23,153 @@ my @list_of_name;
 my $num_link = 0;
 
 my @links = ();
+my @links_router = ();
 my @routers = ();
 my @hosts = ();
+my @is_router = ();
 my @routes = ();
-my $power;
+my @routes_router = ();
+my @routes_cluster = ();
+my $nb_host;
 while(defined($line=<FILE>))
 {
        
-       if($line =~ /^#(.*)\)(.*)$/)
-       {
-               print "<!--$1 $2-->\n";
-               push @list_of_name, $2;
+if($line =~ /^#(.*)\)(.*)$/)
+{
+       print "<!--$1 $2-->\n";
+       push @list_of_name, $2;
+}
+elsif($line =~ /^([0-9]*) ([0-9]*) ([0-9]*) (.*)$/)
+{
+       if($1 == "0"){
+               push @is_router, 1;
+               if(@list_of_name){
+                       push @routers, "\t\t<router id=\"$list_of_name[$src]\"/>\n";
+               }
+               else{
+                       push @routers, "\t\t<router id=\"router$src\"/>\n";
+               }
        }
-       elsif($line =~ /^([0-9]*) ([0-9]*) ([0-9]*) (.*)$/)
-       {
-               if($1.$2.$3 == "000"){
-                       if(@list_of_name){
-                               push @routers, "\t<router id=\"$list_of_name[$src]\"/>\n";
-                       }
-                       else{
-                               push @routers, "\t<router id=\"$src\"/>\n";
-                       }
+       else{
+               push @is_router, 0;
+               $nb_host = $1;
+               if(@list_of_name){
+                       push @hosts, "\t<cluster id=\"$list_of_name[$src]\" prefix=\"$list_of_name[$src]-\" suffix=\"\"\n";
+                       push @hosts, "\t         radical=\"1-$nb_host\" power=\"1000000000\"    bw=\"125000000\"     lat=\"5E-5\"\n";
+                       push @hosts, "\t         router_id=\"$list_of_name[$src]-router\"/>\n";
                }
                else{
-                       $power = $1 * $3;
-                       if($power == 0){
-                               $power=1;
-                       }
-                       if(@list_of_name){
-                               push @hosts, "\t<host id=\"$list_of_name[$src]\" power=\"$power\"/>\n";
-                       }
-                       else{
-                               push @hosts, "\t<host id=\"$src\" power=\"$power\"/>\n";
-                       }
-               }               
-               my $table = $4;
-               @tokens = split(/ /,$table);
-               foreach $token (@tokens) {
-                       if($token != "0"){
-                               if($src <= $dst){
-                                       
+                       push @hosts, "\t<cluster id=\"cluster$src\" prefix=\"$list_of_name[$src]-\" suffix=\"\"\n";
+                       push @hosts, "\t         radical=\"1-$nb_host\" power=\"1000000000\"    bw=\"125000000\"     lat=\"5E-5\"\n";
+                       push @hosts, "\t         router_id=\"cluster$src-router\"/>\n";
+               }
+       }               
+       my $table = $4;
+       @tokens = split(/ /,$table);
+       foreach $token (@tokens) {
+               if($src >= $dst){
+                       if($token != "0") #if there is a link between src and dst
+                       {       
+                               #Create a link                          
+                               if($1 == "0"){ 
+                                       push @links_router, "\t\t<link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
+                               }
+                               else{
                                        push @links, "\t<link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
-                                       
+                               }
+
+                               #Create the route between router and router
+                               if($is_router[$src] && $is_router[$dst]) 
+                               {
+                                       if(@list_of_name){
+                                               push @routes_router, "\t\t<route src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\">\n";
+                                       }
+                                       else{
+                                               push @routes_router, "\t\t<route src=\"router$src\" dst=\"router$dst\">\n";
+                                       }
+                                       push @routes_router, "\t\t\t<link_ctn id=\"link$num_link\"/>\n";
+                                       push @routes_router, "\t\t</route>\n";
+                               }
+
+                               #Create the route between cluster and cluster
+                               elsif(!$is_router[$src] && !$is_router[$dst]) 
+                               {
                                        if(@list_of_name){
-                                               push @routes, "\t<route src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\">\n";
+                                       push @routes_cluster, "\t\t<ASroute src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\"\n";
+                                       push @routes_cluster, "\t\t     gw_src=\"$list_of_name[$src]-router\" gw_dst=\"$list_of_name[$dst]-router\">\n";
                                        }
                                        else{
-                                               push @routes, "\t<route src=\"$src\" dst=\"$dst\">\n";
+                                       push @routes_cluster, "\t\t<ASroute src=\"cluster$src\" dst=\"cluster$dst\"\n";
+                                       push @routes_cluster, "\t\t    gw_src=\"cluster$src-router\" dst=\"cluster$dst-router\">\n";
+                                       }
+                                       push @routes_cluster, "\t\t\t<link_ctn id=\"link$num_link\"/>\n";
+                                       push @routes_cluster, "\t\t</ASroute>\n";
+                               }                               
+                               else
+                               {
+                                       push @routes, "\t<ASroute ";
+                                       if(@list_of_name){
+                                               if($is_router[$src])    #router
+                                                       {push @routes, "src=\"AS_intern\" gw_src=\"$list_of_name[$src]\"\n";}
+                                               else                    #cluster
+                                                       {push @routes, "src=\"$list_of_name[$src]\" gw_src=\"$list_of_name[$src]-router\"\n";}
+
+
+                                               if($is_router[$dst])    #router
+                                                       {push @routes, "\t\tdst=\"AS_intern\" gw_dst=\"$list_of_name[$dst]\">\n";}
+                                               else                    #cluster
+                                                       {push @routes, "\t\tdst=\"$list_of_name[$dst]\" gw_dst=\"$list_of_name[$dst]-router\">\n";}
+                                       }
+                                       else{
+                                               if($is_router[$src])    #router
+                                                       {push @routes, "src=\"AS_intern\" gw_src=\"router$src\"\n";}
+                                               else                    #cluster
+                                                       {push @routes, "src=\"cluster$src\" gw_src=\"cluster$src-router\"\n";}
+
+
+                                               if($is_router[$dst])    #router
+                                                       {push @routes, "\t\tdst=\"AS_intern\" gw_dst=\"router$dst\">\n";}
+                                               else                    #cluster
+                                                       {push @routes, "\t\tdst=\"cluster$dst\" gw_dst=\"cluster$dst-router\">\n";}
                                        }
                                        push @routes, "\t\t<link_ctn id=\"link$num_link\"/>\n";
-                                       push @routes, "\t</route>\n";
-                                       $num_link++;
+                                       push @routes, "\t</ASroute>\n";
+
                                }
+
+                               $num_link++;    
                        }
-                       $dst++;
                }
-               $src++;
-               $dst = 0;
-    }
-    else
-    {
-       die;
-    }
+               $dst++;
+       }
+       $src++;
+       $dst = 0;
+}
+else
+{
+die;
+}
        
        
 }
 close(FILE);
-       
-print @hosts;
-print "\n";
+
+print "\t<AS  id=\"AS_intern\"  routing=\"Floyd\">\n";
 print @routers;
+print @links_router;
+print @routes_router;
+print "\t</AS>\n";
+print "\n";    
+print @hosts;
+print @routes_cluster;
 print "\n";
+
 print @links;
 print "\n";
 print @routes;
+print "\n";
 
 print "</AS>\n";
 print "</platform>";
 
-print " \n";
\ No newline at end of file
+print " \n";