1"""The standalone harness interface
2
3The default interface as required for the standalone reboot helper.
4"""
5
6__author__ = """Copyright Andy Whitcroft 2007"""
7
8from autotest_lib.client.common_lib import utils, error
9import os, harness, shutil, logging
10
11class 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