X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2FTestNode.py;h=28b013ab908cf8e94617e0a394dc5fe1178e4e6c;hb=55177a1292ca841809a3194015d32f76f1f0420c;hp=fa8281a7ec139945b3e198cb3983f6e6630c626c;hpb=c8d96644288f1efba9ee43ed4717497021650ef4;p=tests.git diff --git a/system/TestNode.py b/system/TestNode.py index fa8281a..28b013a 100644 --- a/system/TestNode.py +++ b/system/TestNode.py @@ -7,6 +7,26 @@ import utils from TestUser import TestUser from TestBoxQemu import TestBoxQemu from TestSsh import TestSsh +from Completer import CompleterTask + +class CompleterTaskNodeSsh (CompleterTask): + def __init__ (self, hostname, qemuname, local_key, command=None, message=None, boot_state="boot", expected=True, dry_run=False): + self.hostname=hostname + self.qemuname=qemuname + self.boot_state=boot_state + self.local_key=local_key + self.command=command if command is not None else "hostname;uname -a" + self.expected=expected + self.dry_run = dry_run + self.message = message if message else "cannot reach %s in %s mode"%(self.hostname, self.boot_state) + self.test_ssh = TestSsh (self.hostname,key=self.local_key) + def run (self, silent): + command = self.test_ssh.actual_command(self.command) + retcod=utils.system (command, silent=silent, dry_run=self.dry_run) + if self.expected: return retcod==0 + else: return retcod !=0 + def failure_message (self): + return self.message class TestNode: @@ -201,6 +221,12 @@ class TestNode: file.close() return True + def qemu_clean (self): + utils.header("Cleaning up qemu for host %s on box %s"%(self.name(),self.test_box().hostname())) + dry_run=self.dry_run() + self.test_box().rmdir(self.nodedir(), dry_run=dry_run) + return True + def qemu_export (self): "all nodes: push local node-dep directory on the qemu box" # if relevant, push the qemu area onto the host box @@ -208,7 +234,6 @@ class TestNode: return True dry_run=self.dry_run() utils.header ("Cleaning any former sequel of %s on %s"%(self.name(),self.host_box())) - self.test_box().rmdir(self.nodedir(), dry_run=dry_run) utils.header ("Transferring configuration files for node %s onto %s"%(self.name(),self.host_box())) return self.test_box().copy(self.nodedir(),recursive=True,dry_run=dry_run)==0 @@ -222,7 +247,7 @@ class TestNode: utils.header("TestNode.qemu_start : %s model %s taken as real node"%(self.name(),model)) return True - def timestamp_qemu (self): + def qemu_timestamp (self): "all nodes: start the qemu instance (also runs qemu-bridge-init start)" test_box = self.test_box() test_box.run_in_buildname("mkdir -p %s"%self.nodedir(), dry_run=self.dry_run()) @@ -258,7 +283,7 @@ class TestNode: return True remote_log="%s/log.txt"%self.nodedir() local_log="logs/node.qemu.%s.txt"%self.name() - self.test_box().test_ssh.fetch(remote_log,local_log) + self.test_box().test_ssh.fetch(remote_log,local_log,dry_run=self.dry_run()) def keys_clear_known_hosts (self): "remove test nodes entries from the local known_hosts file" @@ -303,7 +328,7 @@ class TestNode: return test_ssh.run ("rpm -q --quiet libvirt-client")==0 def _check_system_slice (self, slicename,dry_run=False): - sitename=self.test_plc.plc_spec['PLC_SLICE_PREFIX'] + sitename=self.test_plc.plc_spec['settings']['PLC_SLICE_PREFIX'] vservername="%s_%s"%(sitename,slicename) test_ssh=self.create_test_ssh() if self.has_libvirt():