Merge remote-tracking branch 'origin/pycurl' into planetlab-4_0-branch
[plcapi.git] / trunk / plctest / TestRestore.py
1 #!/usr/bin/env python
2
3 import os, sys, time
4 from optparse import OptionParser
5 import xmlrpclib
6
7 class TestRestore:
8
9     subversion_id = "$Id$"
10
11     def __init__ (self):
12         self.url="https://localhost:443/PLCAPI/"
13         self.server=xmlrpclib.Server(self.url,allow_none=True)
14         self.path=os.path.dirname(sys.argv[0])
15
16 ###################3
17     def auth_root (self):
18         return {'Username':'root@onelab-test.inria.fr',
19                 'AuthMethod':'password',
20                 'AuthString':'test++',
21                 'Role' : 'root'
22                 }
23     
24 ##############check if the db version exsit
25     def check_dir(self,dbname):
26
27         config_file = "/plc/data/var/lib/pgsql/backups/"+dbname
28         if (os.path.isfile (config_file)):
29             print "==>dbversion found "
30             return 1
31         else:
32             print "\n %s  non-existing Bdd version\n" % config_file
33             return 0
34             
35 ##############restoring one db return list of host nodes
36     def restore_db(self,db,display):
37         try:
38             list_host=[]
39             ##stop httpd service
40             os.system('chroot /plc/root  service httpd stop')
41             ##droping
42             os.system(' echo drop database planetlab4 |chroot /plc/root psql --user=pgsqluser template1')
43             ##creating
44             os.system('chroot /plc/root  createdb -U postgres --encoding=UNICODE --owner=pgsqluser planetlab4')
45             ##populating
46             os.system('chroot /plc/root psql -U pgsqluser planetlab4 -f /var/lib/pgsql/backups/'+db)
47             ##starting httpd service
48             os.system('chroot /plc/root  service httpd start')
49
50             print 'db.restored'
51             hosts=self.server.GetNodes(self.auth_root())
52             for host in hosts:
53                 print host['hostname']
54                 list_host.append(host['hostname'])
55                 
56             for l in list_host :
57                 print display
58                 os.system('DISPLAY=%s vmplayer %s/VirtualFile-%s/My_Virtual_Machine.vmx &'%(display,self.path,l))
59
60         except Exception, e:
61             print str(e)
62 ###########################    
63
64
65
66
67     def main (self):
68         try:
69             usage = """usage: %prog [options] BDDversion"""
70             parser=OptionParser(usage=usage,version=self.subversion_id)
71             # verbosity
72             parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False, 
73                               help="Run in verbose mode")
74             #exporting Display
75             parser.add_option("-d","--display", action="store", dest="Xdisplay", default='bellami:0.0',
76                               help="export the display on the mentionneted one")
77        
78         
79             (self.options, self.args) = parser.parse_args()
80             
81             hosts=[]
82             i=0
83             dirname =''
84             display=''
85            
86             
87             if (self.options.Xdisplay):
88                 display=self.options.Xdisplay
89                 print 'the display is', display
90        
91                 
92             if (len(self.args) == 0 ):
93                 parser.print_help()
94                 sys.exit(1)
95             else:
96                 dirname=self.args[0]    
97                
98             if (not (self.check_dir(dirname))):
99                  parser.print_help()
100                  sys.exit(1)
101                  
102             self.restore_db(dirname,display)
103             
104         except Exception, e:
105             print str(e)
106             
107 if __name__ == "__main__":
108     TestRestore().main()       
109