X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=lib%2Fwhentools.ml;h=569421df37d9828d1be1ec1552e0d21ec0941c7b;hp=cac698a4ec36033aff07da3c1e581574a3916e7b;hb=64ada3d57b1a6593b72d9a2d5e4a47bfc3729740;hpb=f3db678247d4ccc04c6ca1655e2eeec17e1bc169 diff --git a/lib/whentools.ml b/lib/whentools.ml index cac698a..569421d 100644 --- a/lib/whentools.ml +++ b/lib/whentools.ml @@ -39,6 +39,24 @@ let set_variable_float name value = check_valid_variable_name name; Whenfile.set_variable name (T_float value) +type preinfo = Whenexpr.preinfo + +let max n preinfo = + let name = preinfo.pi_job_name in + + (* Count running jobs with the same name. *) + let count = List.fold_left ( + fun count -> + function + | { pirun_job_name = n } when n = name -> count + 1 + | _ -> count + ) 0 preinfo.pi_running in + + (* Only let this job run if there are fewer than n already running. *) + count < n + +let one () preinfo = max 1 preinfo + type result = Whenexpr.result let mailto ?(only_on_failure = false) ?from email result =