1 """The standalone harness interface 2 3 The default interface as required for the standalone reboot helper. 4 """ 5 6 __author__ = """Copyright Andy Whitcroft 2007""" 7 8 from autotest_lib.client.common_lib import utils, error 9 import os, harness, shutil, logging 10 11 class harness_standalone(harness.harness): 12 """The standalone server harness 13 14 Properties: 15 job 16 The job object for this job 17 """ 18 19 def __init__(self, job, harness_args): 20 """ 21 job 22 The job object for this job 23 """ 24 self.autodir = os.path.abspath(os.environ['AUTODIR']) 25 self.setup(job) 26 27 src = job.control_get() 28 dest = os.path.join(self.autodir, 'control') 29 if os.path.abspath(src) != os.path.abspath(dest): 30 shutil.copyfile(src, dest) 31 job.control_set(dest) 32 33 logging.debug("Symlinking init scripts") 34 rc = os.path.join(self.autodir, 'tools/autotest') 35 # see if system supports event.d versus systemd versus inittab 36 supports_eventd = os.path.exists('/etc/event.d') 37 supports_systemd = os.path.exists('/etc/systemd') 38 supports_inittab = os.path.exists('/etc/inittab') 39 if supports_eventd or supports_systemd: 40 # NB: assuming current runlevel is default 41 initdefault = utils.system_output('/sbin/runlevel').split()[1] 42 elif supports_inittab: 43 initdefault = utils.system_output('grep :initdefault: /etc/inittab') 44 initdefault = initdefault.split(':')[1] 45 else: 46 initdefault = '2' 47 48 try: 49 service = '/etc/init.d/autotest' 50 service_link = '/etc/rc%s.d/S99autotest' % initdefault 51 if os.path.islink(service): 52 os.remove(service) 53 if os.path.islink(service_link): 54 os.remove(service_link) 55 os.symlink(rc, service) 56 os.symlink(rc, service_link) 57 except Exception, e: 58 logging.error("Symlink init scripts failed with %s", e) 59