summaryrefslogtreecommitdiff
path: root/util/pbs/jobfile.py
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2006-02-23 00:20:32 -0500
committerNathan Binkert <binkertn@umich.edu>2006-02-23 00:20:32 -0500
commit35094fb0fe7113be4d2faa88beb505d3e9155a77 (patch)
tree3b7db7d03d355a693ca02e6ffc4286b494e2aa28 /util/pbs/jobfile.py
parentcc60bc49e6b448f9119b2195d393cd50ffeb90cb (diff)
downloadgem5-35094fb0fe7113be4d2faa88beb505d3e9155a77.tar.xz
make it possible to add filters for job names so that
parts of the full crossproduct of jobs can be ignored. --HG-- extra : convert_revision : c44b3daea0cf4b487b1d99eae92da16573b15930
Diffstat (limited to 'util/pbs/jobfile.py')
-rw-r--r--util/pbs/jobfile.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/util/pbs/jobfile.py b/util/pbs/jobfile.py
index d36b5ee6d..5cdd343de 100644
--- a/util/pbs/jobfile.py
+++ b/util/pbs/jobfile.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2005 The Regents of The University of Michigan
+# Copyright (c) 2005-2006 The Regents of The University of Michigan
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -356,6 +356,8 @@ class Configuration(Data):
def __init__(self, name, desc, **kwargs):
super(Configuration, self).__init__(name, desc, **kwargs)
self._groups = []
+ self._posfilters = []
+ self._negfilters = []
def group(self, name, desc, **kwargs):
grp = Group(name, desc, **kwargs)
@@ -402,13 +404,39 @@ class Configuration(Data):
if checkpoint:
yield options
+ def addfilter(self, filt, pos=True):
+ import re
+ filt = re.compile(filt)
+ if pos:
+ self._posfilters.append(filt)
+ else:
+ self._negfilters.append(filt)
+
+ def jobfilter(self, job):
+ for filt in self._negfilters:
+ if filt.match(job.name):
+ return False
+
+ if not self._posfilters:
+ return True
+
+ for filt in self._posfilters:
+ if filt.match(job.name):
+ return True
+
+ return False
+
def checkpoints(self, groups = None):
for options in self.options(groups, True):
- yield Job(options)
+ job = Job(options)
+ if self.jobfilter(job):
+ yield job
def jobs(self, groups = None):
for options in self.options(groups, False):
- yield Job(options)
+ job = Job(options)
+ if self.jobfilter(job):
+ yield job
def alljobs(self, groups = None):
for options in self.options(groups, True):