Versions Compared

    Key

    • This line was added.
    • This line was removed.
    • Formatting was changed.

    Synopsis

    Qube!'s requirement specification is expression based. The proper use of these expressions will allow a user to specify the host and/or the conditions required before a job is allowed to run.
    The syntax for specifying the expression is similar to Perl or C. The evaluation of the expression where:

    ...

    allows the job to be dispatched to a qualifying host.

    An expression consists of operators and operands. Operators are either text or symbolic.
    These are equivalent:

    eq, ==, =

    String and numeric comparisons are automatically resolved based upon the values they resolve to.

    Quoting

    Since a job requirement can include a number of operator characters, any reference to a property or resource that includes an operator should be quoted so the interpreter can differentiate between the literal character and the operator.

    ...


    The reason for multiple definitions for most operators is to allow a programmer more flexibility in the case of Unix command line applications where reserved characters like the such as ">", unless otherwise escaped, will be interpreted by the shell.

    Operands

    Operands in Qube! also have a syntax. They all follow a base class.type format.

    Host.type operands

    Operand

    Values

    host.os

    "linux", "irix", "winnt", "osx"

    host.processor_speed

    CPU speed in MHz

    host.processor_make

    "GenuineIntel", "AuthenticAMD"

    host.processor_model

    "pentium"

    host.kernel_version

    Version reported by the operating system.

    host.architecture

    "intel", "mips"

    host.name

    Host name

    host.groups

    Comma delimited list of group names

    host.cluster

    Cluster specification string

    host.state

    Host state

    host.restrictions

    List of restricted cluster specification strings

    host.flags

    Numeric representation of the Worker's flags

    host.qube_version

    Worker version of Qube!

    host.jobtypes

    Comma delimited list of job types

    host.flag.name

    true if the flag exists

    host.duty.property

    Comma delimited list of job properties for jobs on the worker.

    ...

    % qbsub --requirements "host.os eq linux" ls
    % qbsub --requirements "host.name eq host01" ls
    % qbsub --requirements "host.flag.remove_logs host.group has host05" ls
    % qbsub --requirements "(host.os == 'winnt') and host.processor_speed >= 100" ls

    Resource operands

    are slightly different and include those defined by your administrator host.

    ...

    % qbsub --requirements "host.processors.total > 10" ls

    Job operands

    The possible operands for a job.type are:

    ...

    Here are examples of job requirements that use job resource expressions:
    % qbsub --requirements "job.type in host.jobtypes" ls
    % qbsub --requirements "job.user eq host.name" ls

    ...

    Advanced Examples

    More advanced uses of the requirements expression allow  Qube! users to route a job to a specific host and also conversely restrict a job from a host.

    ...

    not(job.kind in host.duty.kind)

    (Also see How to restrict a host to only one instance of a given kind of job, but still allow other jobs)

    ...