Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
98994b705c9302e2b8ff4807ce493716e2dedce7
[hpcvm.git] / src / and / hpcvm / HpcVm.java
1 package and.hpcvm ;
2
3 public class HpcVm
4 {
5         private static int client_port ;
6         private static String server_ip ;
7         private static int server_port ;
8         private static int dialog_port ;
9 //      private static int mode ; // 0: server, 1: client
10         private static Client client ;
11         private static Server server ;
12         
13         
14         public static void main( String argv[] )
15         {
16         
17                 /** Initialisation of defaults variables **/
18                 client_port = 2667 ;
19                 server_ip = "127.0.0.1" ;
20                 server_port = 2666 ;
21                 dialog_port = 7788 ;
22 //              mode = -1 ;
23                 
24                 
25 //              /** Signals handlers **/
26 //              SignalHandler signalHandler = new SignalHandler() {
27 //                 public void handle( Signal signal ) 
28 //                     {
29 //                     System.out.println( "Exiting because of signal: " + signal ) ;
30 //                                 System.out.println( "Killing all applications ..." ) ;
31 //                              
32 //                                 switch( mode )
33 //                                 {
34 //                                 case 0: if( server != null )
35 //                                                 {
36 //                                                        server.stop() ;
37 //                                                 }
38 //                                                 break ;
39 //                                 case 1: if( client != null )
40 //                                                 {
41 //                                                        client.stop() ;
42 //                                                 }
43 //                                                 break ;
44 //                                 }
45 //                     
46 //                         System.exit( 100 ) ;
47 //                 }
48 //             } ) ;
49 //             Signal.handle( new Signal( "TERM" ), signalHandler ) ;
50 //             Signal.handle( new Signal( "INT" ), signalHandler ) ;
51                 
52                 
53                 /** Launching ... **/
54                 
55                 /** Server **/
56                 if( argv[0].equalsIgnoreCase( "server" ) ) 
57                 {
58                         if( argv.length == 2 )
59                         {
60                                 server_port = Integer.parseInt( argv[1] ) ;
61                         }
62                         
63                         try
64                         {
65 //                              mode = 0 ;
66                                 server = new Server() ;
67                                 server.init( server_port ) ;
68                         } catch( Exception e ) {
69                                 System.err.println( "Error while launching Server: " + e ) ;
70                         }
71                         
72                         
73                 /** Client **/
74                 } else if( argv[0].equalsIgnoreCase( "client" ) ) 
75                 {       
76                         /** Command line verification **/
77                         if( argv.length < 2 ) 
78                         {
79                                 usage() ;
80                                 System.exit( 1 ) ;
81                         }
82                         
83                         
84                         switch( argv.length )
85                         {
86                         case 2: server_ip = argv[1] ; break ;
87                         
88                         case 3: server_ip = argv[1] ; 
89                                         server_port = Integer.parseInt( argv[2] ) ; break ;     
90                                         
91                         case 4: server_ip = argv[1] ; 
92                                         server_port = Integer.parseInt( argv[2] ) ;
93                                         client_port = Integer.parseInt( argv[3] ) ; break ;     
94                                         
95                         case 5: server_ip = argv[1] ; 
96                                         server_port = Integer.parseInt( argv[2] ) ;
97                                         client_port = Integer.parseInt( argv[3] ) ;
98                                         dialog_port = Integer.parseInt( argv[4] ) ; break ;
99                         }
100                         
101                         try
102                         {
103 //                              mode = 1 ;
104                                 client = new Client() ;
105                                 client.init( server_ip, server_port, client_port, dialog_port ) ;
106                         } catch( Exception e ) {
107                                 System.err.println( "Error while launching Client: " + e ) ;
108                         }
109                 } else if( argv[0].equalsIgnoreCase( "user" ) ) {
110                         if( argv.length < 4 )
111                         {
112                                 usage() ;
113                                 System.exit( 1 ) ;
114                         }
115                         
116                         User user = new User( argv[1], Integer.parseInt( argv[2] ) ) ;
117                         
118                         if( argv[3].equalsIgnoreCase( "stop" ) )
119                         {
120                                 user.stopMachines() ;
121                                 System.exit( 0 ) ;
122                         }
123                         
124                         if( argv[3].equalsIgnoreCase( "stopall" ) )
125                         {
126                                 user.stopAll() ;
127                                 System.exit( 0 ) ;
128                         }
129                         
130                         if( argv[3].equalsIgnoreCase( "start" ) )
131                         {
132                                 if( argv.length != 5 )
133                                 {
134                                         usage() ;
135                                         System.exit( 1 ) ;
136                                 }
137                                 
138                                 user.reserveMachines( Integer.parseInt( argv[4] ) ) ;
139                                 
140                                 System.exit( 0 ) ;
141                         }
142                         
143                         if( argv[3].equalsIgnoreCase( "deploy" ) )
144                         {
145                                 if( argv.length != 7 )
146                                 {
147                                         usage() ;
148                                         System.exit( 1 ) ;
149                                 }
150                                 
151                                 user.deploy( argv[4], argv[5], argv [6] ) ;
152                                 
153                                 System.exit( 0 ) ;
154                         }
155                         
156                 } else {
157                         usage() ;
158                         System.exit( 1 ) ;
159                 }
160         }
161
162
163         private static void usage()
164         {
165                 System.err.println( "Usage: " ) ;
166                 System.err.println( "HpcVm client server_ip server_port client_port " ) ;
167                 System.err.println( "HpcVm server server_port" ) ;
168                 System.err.println( "HpcVm user server_ip server_port {start nbVM | stop | stopAll}" ) ;
169                 System.err.println( "HpcVm user server_ip server_port deploy VM_name VM_archive VM_directory" ) ;
170                 System.out.println() ;
171         }
172         
173 }
174
175
176 /** La programmation est un art, respectons ceux qui la pratiquent !! **/
177