Home | History | Annotate | Download | only in bin
      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