Пример #1
0
def get_boot_cron(ignored_params, extra=""):
    '''Turn current python script into a crontab reboot entry'''
    job_args = sanitize(sys.argv, ignored_params)
    job = " ".join(job_args)
    out_fname = get_outfname()

    short_job = " ".join([common.get_cmd()] + job_args[1:])
    msg = "Job '%s' will write output to '%s'" % (short_job, out_fname)

    sys.stderr.write("%s %d seconds after reboot.\n" % (msg, DELAY))

    # Create sleep and wall commands which will countdown DELAY seconds
    # before executing the job
    cmds = ["sleep %d" % DELAY_INTERVAL]
    delay_rem = DELAY - DELAY_INTERVAL
    while delay_rem > 0:
        wmsg = "Restarting experiments in %d seconds. %s" % (delay_rem, extra)
        cmds += [wall(wmsg)]
        cmds += ["sleep %d" % min(DELAY_INTERVAL, delay_rem)]
        delay_rem -= DELAY_INTERVAL
    delay_cmd = ";".join(cmds)

    # Create command which will only execute if the same kernel is running
    kern = common.kernel()
    fail_wall = wall("Need matching kernel '%s' to run!" % kern)
    run_cmd = "echo '%s' | grep -q `uname -r` && %s && %s && %s >> %s 2>>%s || %s" %\
      (kern, wall(msg), wall("Starting..."), job, out_fname, out_fname, fail_wall)

    return "@reboot cd %s; %s; %s;" % (os.getcwd(), delay_cmd, run_cmd)
Пример #2
0
def verify_environment(exp_params):
    '''Raise an exception if the current system doesn't match that required
    by @exp_params.'''
    if exp_params.kernel and not re.match(exp_params.kernel, com.kernel()):
        raise InvalidKernel(exp_params.kernel)

    if exp_params.config_options:
        results = []
        for param, wanted in exp_params.config_options.iteritems():
            try:
                actual = com.get_config_option(param)
            except IOError:
                actual = None
            if not str(wanted) == str(actual):
                results += [ConfigResult(param, wanted, actual)]

        if results:
            raise InvalidConfig(results)
Пример #3
0
def verify_environment(exp_params):
    '''Raise an exception if the current system doesn't match that required
    by @exp_params.'''
    if exp_params.kernel and not re.match(exp_params.kernel, com.kernel()):
        raise InvalidKernel(exp_params.kernel)

    if exp_params.config_options:
        results = []
        for param, wanted in exp_params.config_options.iteritems():
            try:
                actual = com.get_config_option(param)
            except IOError:
                actual = None
            if not str(wanted) == str(actual):
                results += [ConfigResult(param, wanted, actual)]

        if results:
            raise InvalidConfig(results)
Пример #4
0
def get_boot_cron(ignored_params, extra=""):
    """Turn current python script into a crontab reboot entry"""
    job_args = sanitize(sys.argv, ignored_params)
    job = " ".join(job_args)
    out_fname = get_outfname()

    short_job = " ".join([common.get_cmd()] + job_args[1:])
    msg = "Job '%s' will write output to '%s'" % (short_job, out_fname)

    sys.stderr.write("%s %d seconds after reboot.\n" % (msg, DELAY))

    # Create sleep and wall commands which will countdown DELAY seconds
    # before executing the job
    cmds = ["sleep %d" % DELAY_INTERVAL]
    delay_rem = DELAY - DELAY_INTERVAL
    while delay_rem > 0:
        wmsg = "Restarting experiments in %d seconds. %s" % (delay_rem, extra)
        cmds += [wall(wmsg)]
        cmds += ["sleep %d" % min(DELAY_INTERVAL, delay_rem)]
        delay_rem -= DELAY_INTERVAL
    delay_cmd = ";".join(cmds)

    # Create command which will only execute if the same kernel is running
    kern = common.kernel()
    fail_wall = wall("Need matching kernel '%s' to run!" % kern)
    run_cmd = "echo '%s' | grep -q `uname -r` && %s && %s && %s >> %s 2>>%s || %s" % (
        kern,
        wall(msg),
        wall("Starting..."),
        job,
        out_fname,
        out_fname,
        fail_wall,
    )

    return "@reboot cd %s; %s; %s;" % (os.getcwd(), delay_cmd, run_cmd)