#!/usr/bin/python

import shutil
import sys
import syslog
import os
import os.path

import isi.fs.job as job

JOBENG_IFSVAR_DIR = "/ifs/.ifsvar/modules/jobengine/"

WAI_UPGRADE_FILE = JOBENG_IFSVAR_DIR + "pre_wai_upgrade"
WAI_UPGRADE_DONE_FILE = JOBENG_IFSVAR_DIR + "pre_wai_upgrade_done"

def global_upgrade():

    # Lock a file so nodes don't stomp on each other.
    lockfd = os.open(WAI_UPGRADE_FILE,
            os.O_RDONLY | os.O_CREAT | os.O_EXLOCK, 0640)
    os.chmod(WAI_UPGRADE_FILE, 0640)
    try:
        if os.path.exists(WAI_UPGRADE_DONE_FILE):
            return

        if job.JobConfig().get_job_type_by_name(job.JobType.TREEDELETE_JOB)['default_policy'] == "HIGH":
            # Make TreeDelete as MEDIUM impact 
            job.JobConfig().set_default_policy(job.JobType.TREEDELETE_JOB, "MEDIUM")

        # Indicate the global upgrade has completed.
        fd = os.open(WAI_UPGRADE_DONE_FILE, os.O_CREAT | os.O_RDONLY, 0640)
        os.close(fd)
        os.chmod(WAI_UPGRADE_DONE_FILE, 0640)
        syslog.syslog(syslog.LOG_NOTICE,
                "Completed isi_job_d config upgrade.")
    finally:
        os.close(lockfd)

if __name__ == '__main__':
    try:
        global_upgrade() 
    except Exception, e:
        syslog.syslog(syslog.LOG_WARNING, "%s failed: %s" % (sys.argv[0], str(e)))
        sys.exit(1)
