Ejemplo n.º 1
0
def cb_geometry(option,opt_str,value,parser,*args):
    """
    This callback will validate the geometry value and store it
    """
    opts = args[0]
    try:
        geom_str = ''
        geom_str = parse_geometry_string(value)
    except:
        logger.error("Invalid geometry entered: %s" % geom_str)
        sys.exit(1)
    setattr(parser.values,option.dest,geom_str) # set the option
    opts[option.dest] = value
Ejemplo n.º 2
0
Archivo: qalter.py Proyecto: ido/cobalt
        else:
            jobdata = None
            try:
                cqm = ComponentProxy("queue-manager", defer=False)
                jobdata = cqm.get_jobs(spec)
            except ComponentLookupError:
                print >> sys.stderr, "Failed to connect to queue manager"
                sys.exit(1)
            for job in jobdata:
                try:
                    Cobalt.Util.validate_geometry(opts["geometry"], int(job["nodes"]))
                except JobValidationError as err:
                    print >> sys.stderr, err.message
                    print >> sys.stderr, "Jobs not altered."
                    sys.exit(1)
            updates.update({"geometry": parse_geometry_string(opts["geometry"])})

    if str(opts["attrs"]).lower() == "none":
        updates.update({"attrs": {}})

    elif opts["attrs"] is not False:
        attrs = {}
        newoptsattrs = {}
        for attr in opts["attrs"].split(":"):
            if len(attr.split("=")) == 2:
                key, value = attr.split("=")
                attrs.update({key: value})
                newoptsattrs.update({key: value})
            elif len(attr.split("=")) == 1:
                if attr[:3] == "no_":
                    attrs.update({attr[3:]: "false"})
Ejemplo n.º 3
0
        jobspec['user_list'] = [auth_user for auth_user in opts['user_list'].split(':')]  
        for auth_user in jobspec['user_list']:
            try:
                pwd.getpwnam(auth_user)
            except KeyError:
                logger.error("user %s does not exist." % auth_user)
                sys.exit(1)
            except Exception:
                raise
    else:
        jobspec['user_list'] = [user]
    if user not in jobspec['user_list']:
        jobspec['user_list'].insert(0, user)

    if opts['geometry']:
        jobspec['geometry'] = parse_geometry_string(opts['geometry'])

    jobspec.update({'user':user, 'outputdir':opts['cwd'], 'walltime':opts['time'],
                    'jobid':'*', 'path':os.environ['PATH'], 'mode':opts.get('mode', 'co'),
                    'kernel':opts['kernel'], 'queue':opts['queue'],
                    'procs':opts.get('proccount'), 'nodes':opts.get('nodecount')})
    if opts['outputprefix']:
        if opts['outputprefix'][0] == '/':
            jobspec.update({'outputpath':"%s.output" % (opts['outputprefix']),
                            'errorpath':"%s.error" % (opts['outputprefix']),
                            'cobalt_log_file':"%s.cobaltlog" % (opts['outputprefix'])})
        else:
            jobspec.update({'outputpath':"%s/%s.output" % (opts['cwd'],
                                                           opts['outputprefix']),
                            'errorpath':"%s/%s.error" % (opts['cwd'], opts['outputprefix']),
                            'cobalt_log_file':"%s/%s.cobaltlog" % (opts['cwd'], opts['outputprefix'])})