Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
First ~stable~ version.
[hpcvm.git] / src / and / hpcvm / VirtualMachine.java
1 package and.hpcvm ;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.util.ArrayList;
7
8 public class VirtualMachine 
9 {
10         private String name ;
11         private String ip ;
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 ;
19         private int no_save ;
20         private int no_save_last ;
21         private Status status ;
22         private int computation_id ;
23         private String working_directory ;
24         private ArrayList<String> save_neighbors ;
25         private String clientInVM ;
26         private String vm_user ;
27         private String vm_user_passwd ;
28         
29         public VirtualMachine()
30         {
31                 name = "VmTest" ;
32                 ip = "127.0.0.1" ;
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" ;
41                 no_save = 0 ;
42                 no_save_last = 0 ;
43                 status = new Status() ;
44                 status.setStatus( "stopped" ) ;
45                 computation_id  = -1 ;
46                 save_neighbors = new ArrayList<String>() ;
47                 save_neighbors.add( "127.0.0.1" ) ;
48                 clientInVM = "/home/mpi/InGuest" ;
49                 vm_user = "mpi" ;
50                 vm_user_passwd = "mpi" ;
51         }
52         
53         
54         public ArrayList<String> getSaveNeighbors() { return save_neighbors ; }
55         
56         @SuppressWarnings("unchecked")
57         public void setSaveNeighbors( ArrayList<String> _sn )
58         {
59                 if( _sn != null ) 
60                 {
61                         save_neighbors = (ArrayList<String>) _sn.clone() ;
62                 }
63         }
64         
65         public void addSaveNeighbor( String _sn )
66         {
67                 if( _sn != null && _sn.length() > 0 )
68                 {
69                         save_neighbors.add( _sn ) ;
70                 }
71         }
72         
73         
74         public String getVmUser()
75         {
76                 return vm_user ;
77         }
78         
79         
80         public void setVmUser( String _user )
81         {
82                 vm_user = _user ;
83         }
84         
85         
86         public String getVmUserPasswd()
87         {
88                 return vm_user_passwd ;
89         }
90         
91         
92         public void setVmUserPasswd( String _user_passwd )
93         {
94                 vm_user_passwd = _user_passwd ;
95         }
96         
97         
98         public String getClientInVM()
99         {
100                 return clientInVM ;
101         }
102         
103         
104         public void setClientInVM( String _civ )
105         {
106                 clientInVM = _civ ;
107         }
108         
109         
110         public String getStatus()
111         {
112                 return status.getStatus() ;
113         }
114         
115         
116         public void setStatus( String _status )
117         {
118                 status.setStatus( _status ) ;
119         }
120         
121         
122         public String getWorkingDirectory()
123         {
124                 return working_directory ;
125         }
126         
127         
128         public void setWorkingDirectory( String _wd )
129         {
130                 working_directory = _wd ;
131         }
132
133         public String getName() {
134                 return name;
135         }
136
137         
138         public void setName(String name) {
139                 this.name = name;
140         }
141
142         public String getIp() {
143                 return ip;
144         }
145
146         public void setIp(String ip) {
147                 this.ip = ip;
148         }
149
150         public String getInitial_archive_name() {
151                 return initial_archive_name;
152         }
153
154         public void setInitial_archive_name(String initial_archive_name) {
155                 this.initial_archive_name = initial_archive_name;
156         }
157
158         public String getDirectory() {
159                 return directory;
160         }
161
162         public void setDirectory(String directory) {
163                 this.directory = directory;
164         }
165
166         public String getVmx_name() {
167                 return vmx_name;
168         }
169
170         public void setVmx_name(String vmx_name) {
171                 this.vmx_name = vmx_name;
172         }
173
174         public String getVmx_name_normal() {
175                 return vmx_name_normal;
176         }
177
178         public void setVmx_name_normal(String vmx_name_normal) {
179                 this.vmx_name_normal = vmx_name_normal;
180         }
181
182         public String getVmx_name_crash() {
183                 return vmx_name_crash;
184         }
185
186         public void setVmx_name_crash(String vmx_name_crash) {
187                 this.vmx_name_crash = vmx_name_crash;
188         }
189
190         public String getSave_current() {
191                 return save_current;
192         }
193
194         public void setSave_current(String save_current) {
195                 this.save_current = save_current;
196         }
197
198         public String getSave_last() {
199                 return save_last;
200         }
201
202         public void setSave_last(String save_last) {
203                 this.save_last = save_last;
204         }
205
206         public int getNo_save() 
207         {
208                 return no_save ;
209         }
210
211         public void setNo_save( int no_save ) 
212         {
213                 this.no_save = no_save ;
214         }
215
216         public int getNo_save_last() 
217         {
218                 return no_save_last ;
219         }
220
221         public void setNo_save_last( int no_save_last ) 
222         {
223                 this.no_save_last = no_save_last ;
224         }
225         
226         public int getComputationId() { return computation_id ; }
227         
228         
229         public void setComputationId( int _id )
230         {
231                 computation_id = _id ;
232         }
233
234         
235         public int deployLastSave()
236         {
237                 System.out.print( "Deploying the last save ..." ) ;
238                 
239                 String[] command = new String[] { "/bin/tar", "-xzvf", 
240                                 working_directory + "/" + save_last,
241                                 "-C", working_directory } ;
242                 Process pr = null ;
243                 try {
244                         pr = Runtime.getRuntime().exec( command ) ;
245 //                      synchronized( pr ){
246                         pr.waitFor() ; //;}
247                 } catch( IOException e ) {
248                         System.err.println( "Error while deploying the last secure save!" ) ;
249                         e.printStackTrace() ;
250                 } catch( InterruptedException e ) {
251                         e.printStackTrace() ;
252                 }
253                         
254                 if( pr.exitValue() == 0 )
255                 {
256                         System.out.println( "Successful extraction of the save archive." ) ;
257                         return 0 ;
258                 } else {
259                         System.err.println( "Error: " + pr.exitValue() ) ;
260                         BufferedReader b = new BufferedReader( new InputStreamReader( pr.getErrorStream() ) ) ;
261                         
262                         String l ;
263                         try {
264                                 while( (l = b.readLine()) != null )
265                                 {
266                                         System.err.println( l ) ;
267                                 }
268                         } catch( IOException e ) {
269                                         e.printStackTrace() ;
270                         }
271                 }
272                 
273                 return 1 ;
274         }
275
276         
277 }
278
279 /** La programmation est un art, respectons ceux qui la pratiquent !! **/