fix errors
[tests.git] / qaapi / qa / Remote.py
1 import utils
2 import os
3
4 class Remote:
5
6     def get_remote_command(self, command):
7         if 'chroot' in self and self['chroot']:
8             command = " chroot %s %s" % (self['chroot'], command)
9         if 'vserver' in self and self['vserver']:
10             command = " vserver %s exec %s " % (self['vserver'], command)
11         if 'host' in self and self['host'] not in ['localhost', self.config.hostname]:
12             options = ""
13             if 'rootkey' in self and self['rootkey']:
14                 options = "-i %s " % self['rootkey']
15             command = "ssh %s root@%s \"%s\" " % (options, self['host'], command)       
16         
17         return command
18
19     def popen(self, command, fatal = True):
20         command = self.get_remote_command(command)
21         if self.config.verbose:
22             utils.header(command)
23         return utils.popen(command, fatal)
24
25     def popen3(self, command):
26         command = self.get_remote_command(command)
27         if self.config.verbose:
28             utils.header(command)
29         return utils.popen3(command) 
30
31     def commands(self, command, fatal = True):
32         command = self.get_remote_command(command) 
33         if self.config.verbose:
34             utils.header(command)
35         return utils.commands(command, fatal)
36
37     def scp(self, src, dest):
38         options = "" 
39         if 'rootkey' in self and self['rootkey'] is not None:
40              options += " -i %s " % (self['rootkey']) 
41         path = ""
42         if 'chroot' in self and self['chroot'] is not None:
43             path += "/plc/root/"
44         if 'vserver' in self and self['vserver'] is not None:
45             path += '/vservers/%s/' % self['vserver']           
46
47         src_cmd = ""
48         src_parts = src.split(":")
49         dest_cmd = ""
50         dest_parts = dest.split(":")
51         command = "scp "
52         if len(src_parts) == 1:
53             src_cmd = src
54         elif src_parts[0].find('localhost')  != -1: 
55             src_cmd = path + os.sep + src_parts[1]
56         else:
57             host, file  = src_parts[0], src_parts[1]
58             src_cmd = 'root@%(host)s:%(path)s%(file)s ' % locals()
59
60         if len(dest_parts) == 1:
61             dest_cmd = dest
62         elif dest_parts[0].find('localhost') != -1:
63             dest_cmd = path +os.sep+ dest_parts[1]
64         else:
65             host, file = dest_parts[0], dest_parts[1]
66             dest_cmd = 'root@%(host)s:%(path)s%(file)s'  % locals()
67
68         command = 'scp %(options)s %(src_cmd)s %(dest_cmd)s' % locals()
69         if self.config.verbose:
70             utils.header(command)
71         return utils.commands(command)      
72