## Revision 7d4f1b45

b/qa/qa_config.py
296 296
```  return node
```
297 297

298 298

299
```def AcquireManyNodes(num, exclude=None):
```
300
```  """Return the least used nodes.
```
301

302
```  @type num: int
```
303
```  @param num: Number of nodes; can be 0.
```
304
```  @type exclude: list of nodes or C{None}
```
305
```  @param exclude: nodes to be excluded from the choice
```
306
```  @rtype: list of nodes
```
307
```  @return: C{num} different nodes
```
308

309
```  """
```
310
```  nodes = []
```
311
```  if exclude is None:
```
312
```    exclude = []
```
313
```  elif isinstance(exclude, (list, tuple)):
```
314
```    # Don't modify the incoming argument
```
315
```    exclude = list(exclude)
```
316
```  else:
```
317
```    exclude = [exclude]
```
318

319
```  try:
```
320
```    for _ in range(0, num):
```
321
```      n = AcquireNode(exclude=exclude)
```
322
```      nodes.append(n)
```
323
```      exclude.append(n)
```
324
```  except qa_error.OutOfNodesError:
```
325
```    ReleaseManyNodes(nodes)
```
326
```    raise
```
327
```  return nodes
```
328

329

299 330
```def ReleaseNode(node):
```
300 331
```  node["_count"] = node.get("_count", 0) - 1
```
332

333

334
```def ReleaseManyNodes(nodes):
```
335
```  for n in nodes:
```
336
```    ReleaseNode(n)
```

Also available in: Unified diff