Skip to content

Commit 3b54132

Browse files
author
Peter Amstutz
committed
Evaluate resource request and allocate resources.
1 parent 68422a6 commit 3b54132

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

cwltool/process.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,47 @@ def _init_job(self, joborder, input_basedir, **kwargs):
186186

187187
builder.bindings.extend(builder.bind_input(self.inputs_record_schema, builder.job))
188188

189+
builder.resources = self.evalResources(builder)
190+
189191
return builder
190192

193+
def evalResources(self, builder, kwargs):
194+
resourceReq, _ = self.get_requirement("ResourceRequirement")
195+
request = {
196+
"coresMin": 1,
197+
"coresMax": 1,
198+
"ramMin": 1024,
199+
"ramMax": 1024,
200+
"tmpdirMin": 1024,
201+
"tmpdirMax": 1024,
202+
"outdirMin": 1024
203+
"outdirMax": 1024
204+
}
205+
for a in ("cores", "ram", "tmpdir", "outdir"):
206+
mn = None
207+
mx = None
208+
if resourceReq.get(a+"Min"):
209+
mn = builder.do_eval(resourceReq[a+"Min"])
210+
if resourceReq.get(a+"Max"):
211+
mx = builder.do_eval(resourceReq[a+"Max"])
212+
if mn is None:
213+
mn = mx
214+
elif mx is None:
215+
mx = mn
216+
217+
if mn:
218+
request[a+"Min"] = mn
219+
request[a+"Max"] = mx
220+
221+
if kwargs.get("select_resources"):
222+
return kwargs["select_resources"](request)
223+
else:
224+
return {
225+
"cores": request["coresMin"],
226+
"ram": request["ramMin"],
227+
"tmpdir": request["tmpdirMin"],
228+
"outdir": request["outdirMiax"],
229+
}
191230

192231
def validate_hints(self, hints, strict):
193232
for r in hints:

0 commit comments

Comments
 (0)