예제 #1
0
    def reschedule(self,
                   backend_task_id,
                   status=None,
                   sub_ids=None,
                   backend_ids=None):
        cmd = [os.path.join(DIRAC_BACKEND_DIR, 'script', 'dirac-run.sh')]
        cmd += ['reschedule']
        cmd += ['--backend-task-id', str(backend_task_id)]
        if status:
            status = ensure_list(status)
            cmd += ['--job-status', ','.join(status)]
        elif sub_ids:
            sub_ids = ensure_list(sub_ids)
            cmd += ['--sub-ids', ','.join([str(x) for x in sub_ids])]
        elif backend_ids:
            backend_ids = ensure_list(backend_ids)
            cmd += ['--backend-ids', ','.join([str(x) for x in backend_ids])]

        try:
            output = subprocess.check_output(cmd)
        except subprocess.CalledProcessError as e:
            self._logger.error(
                'Failed to reschedule task on Dirac backend: %s' % e)
            return

        return json.loads(output)
예제 #2
0
    def __init__(self, param):
        self._param = param
        self._logger = logging.getLogger('JSUB')

        self.__job_group = param.get('jobGroup')
        self.__job_name = param.get('jobName')
        self.__banned_site = ensure_list(param.get('bannedSite', []))
        if not self.__banned_site:
            self.__banned_site = ensure_list(param.get('bannedSites', []))
        self.__site = ensure_list(param.get('site', []))
        if not self.__site:
            self.__site = ensure_list(param.get('sites', []))

        self.initialize_common_param()
예제 #3
0
 def load_pkg_manager(self):
     if self.__pkg_mgr is None:
         from jsub.manager.package import PackageManager
         packages = self.load_config_manager().config_jsubrc('package')
         packages = ensure_list(packages)
         self.__pkg_mgr = PackageManager(self.load_schema_manager(), packages)
     return self.__pkg_mgr
예제 #4
0
파일: __init__.py 프로젝트: jsubpy/jsub
 def load_pkg_manager(self):
     if self.__pkg_mgr is None:
         from jsub.manager.package import PackageManager
         packages = self.load_config_manager().config_jsubrc('package')
         packages = ensure_list(packages)
         self.__pkg_mgr = PackageManager(self.load_schema_manager(),
                                         packages)
     return self.__pkg_mgr
예제 #5
0
파일: package.py 프로젝트: xianghuzhao/jsub
 def __package_deps(self, packages):
     pkgs = []
     for pkg in packages:
         pkgs.append(pkg)
         pkg_config = _package_config(pkg)
         pkg_config = self.__schema_mgr.validate_package_config(pkg_config)
         if 'package' in pkg_config:
             sub_pkgs = ensure_list(pkg_config['package'])
             pkgs.append(self.__package_deps(sub_pkgs))
         self.packages_config[pkg] = pkg_config
     return unique_list(pkgs)
예제 #6
0
파일: package.py 프로젝트: jsubpy/jsub
 def __package_deps(self, packages):
     pkgs = []
     for pkg in packages:
         pkgs.append(pkg)
         pkg_config = _package_config(pkg)
         pkg_config = self.__schema_mgr.validate_package_config(pkg_config)
         if 'package' in pkg_config:
             sub_pkgs = ensure_list(pkg_config['package'])
             pkgs.append(self.__package_deps(sub_pkgs))
         self.packages_config[pkg] = pkg_config
     return unique_list(pkgs)
예제 #7
0
    def delete_task(self, backend_task_id, job_status):
        cmd = [os.path.join(DIRAC_BACKEND_DIR, 'script', 'dirac-run.sh')]
        cmd += ['delete']
        job_status = ensure_list(job_status)
        cmd += ['--backend-task-id', str(backend_task_id)]
        cmd += ['--job-status', ','.join(job_status)]

        try:
            output = subprocess.check_output(cmd)
        except subprocess.CalledProcessError as e:
            self._logger.error('Failed to delete task on Dirac backend: %s' %
                               e)
            return

        return json.loads(output)
예제 #8
0
파일: schemaconfig.py 프로젝트: jsubpy/jsub
import pytz

from schema import Schema, And, Or, Use, Optional, Regex

from jsub.util import ensure_list


_timezone_map = {tz.lower(): tz for tz in pytz.all_timezones}

_config_schema = {
    Optional('log_level', default='INFO'): And(str, Use(str.upper),
                                               lambda s: s in ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')),
    Optional('time_zone', default='UTC'): And(str, Use(str.lower), lambda s: s in _timezone_map, Use(lambda s: _timezone_map[s])),
    Optional('package'): And(Or(str, [str]), Use(lambda f: ['jsub.exts'] + ensure_list(f))),
}

_task_profile_schema = {
}


class SchemaManager(object):
    def __init__(self):
        pass

    def validate_jsubrc_config(self, config):
        return config

    def validate_package_config(self, config):
        return config

    def validate_final_config(self, config):