3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.util.ArrayList;
8 public class VirtualMachine
12 private String initial_archive_name ;
13 private String directory ;
14 private String vmx_name ;
15 private String vmx_name_normal ;
16 private String vmx_name_crash ;
17 private String save_current ;
18 private String save_last ;
20 private int no_save_last ;
21 private Status status ;
22 private int computation_id ;
23 private String working_directory ;
24 private ArrayList<ServicesClient> save_neighbors ;
25 private String clientInVM ;
26 private String vm_user ;
27 private String vm_user_passwd ;
29 public VirtualMachine()
33 initial_archive_name = "VmTest.tgz" ;
34 directory = "VmTest" ;
35 vmx_name = "VmTest.vmx" ;
36 vmx_name_normal = "VmTest.vmx.normal" ;
37 vmx_name_crash = "VmTest.vmx.crash" ;
38 save_current = "VmTest.tgz" ;
39 save_last = "VmTest.tgz" ;
40 working_directory = "/localhome/vmware" ;
43 status = new Status() ;
44 status.setStatus( "stopped" ) ;
46 save_neighbors = new ArrayList<ServicesClient>() ;
47 clientInVM = "/home/mpi/InGuest" ;
49 vm_user_passwd = "mpi" ;
53 public ArrayList<ServicesClient> getSaveNeighbors() { return save_neighbors ; }
55 @SuppressWarnings("unchecked")
56 public void setSaveNeighbors( ArrayList<ServicesClient> _sn )
60 save_neighbors = (ArrayList<ServicesClient>) _sn.clone() ;
64 public void addSaveNeighbor( ServicesClient _sn )
68 save_neighbors.add( _sn ) ;
73 public String getVmUser()
79 public void setVmUser( String _user )
85 public String getVmUserPasswd()
87 return vm_user_passwd ;
91 public void setVmUserPasswd( String _user_passwd )
93 vm_user_passwd = _user_passwd ;
97 public String getClientInVM()
103 public void setClientInVM( String _civ )
109 public String getStatus()
111 return status.getStatus() ;
115 public void setStatus( String _status )
117 status.setStatus( _status ) ;
121 public String getWorkingDirectory()
123 return working_directory ;
127 public void setWorkingDirectory( String _wd )
129 working_directory = _wd ;
132 public String getName() {
137 public void setName(String name) {
141 public String getIp() {
145 public void setIp(String ip) {
149 public String getInitial_archive_name() {
150 return initial_archive_name;
153 public void setInitial_archive_name(String initial_archive_name) {
154 this.initial_archive_name = initial_archive_name;
157 public String getDirectory() {
161 public void setDirectory(String directory) {
162 this.directory = directory;
165 public String getVmx_name() {
169 public void setVmx_name(String vmx_name) {
170 this.vmx_name = vmx_name;
173 public String getVmx_name_normal() {
174 return vmx_name_normal;
177 public void setVmx_name_normal(String vmx_name_normal) {
178 this.vmx_name_normal = vmx_name_normal;
181 public String getVmx_name_crash() {
182 return vmx_name_crash;
185 public void setVmx_name_crash(String vmx_name_crash) {
186 this.vmx_name_crash = vmx_name_crash;
189 public String getSave_current() {
193 public void setSave_current(String save_current) {
194 this.save_current = save_current;
197 public String getSave_last() {
201 public void setSave_last(String save_last) {
202 System.out.println( "Save name: " + save_last ) ;
203 this.save_last = save_last;
206 public int getNo_save()
211 public void setNo_save( int no_save )
213 this.no_save = no_save ;
216 public int getNo_save_last()
218 return no_save_last ;
221 public void setNo_save_last( int no_save_last )
223 this.no_save_last = no_save_last ;
226 public int getComputationId() { return computation_id ; }
229 public void setComputationId( int _id )
231 computation_id = _id ;
235 public int deployLastSave()
237 System.out.print( "Removing current VM ... " ) ;
239 String[] command = new String[] { "/bin/rm", "-rf",
240 working_directory + "/" + directory } ;
243 pr = Runtime.getRuntime().exec( command ) ;
244 // synchronized( pr ){
246 } catch( IOException e ) {
247 System.err.println( "Error while removing current VM!" ) ;
248 e.printStackTrace() ;
250 } catch( InterruptedException e ) {
251 e.printStackTrace() ;
255 if( pr.exitValue() == 0 )
257 System.out.println( "Successful deletion of current VM." ) ;
259 System.err.println( "Error: " + pr.exitValue() ) ;
260 BufferedReader b = new BufferedReader( new InputStreamReader( pr.getErrorStream() ) ) ;
264 while( (l = b.readLine()) != null )
266 System.err.println( l ) ;
268 } catch( IOException e ) {
269 e.printStackTrace() ;
273 System.out.print( "Deploying the last save ... " ) ;
275 command = new String[] { "/bin/tar", "-xzf",
276 working_directory + "/" + save_last,
277 "-C", working_directory } ;
280 pr = Runtime.getRuntime().exec( command ) ;
281 // synchronized( pr ){
283 } catch( IOException e ) {
284 System.err.println( "Error while deploying the last secure save!" ) ;
285 e.printStackTrace() ;
287 } catch( InterruptedException e ) {
288 e.printStackTrace() ;
293 if( pr.exitValue() == 0 )
295 System.out.println( "Successful extraction of the save archive." ) ;
298 System.err.println( "Error: " + pr.exitValue() ) ;
299 BufferedReader b = new BufferedReader( new InputStreamReader( pr.getErrorStream() ) ) ;
303 while( (l = b.readLine()) != null )
305 System.err.println( l ) ;
307 } catch( IOException e ) {
308 e.printStackTrace() ;
318 /** La programmation est un art, respectons ceux qui la pratiquent !! **/