104
104
class JobStore(MessageStore):
105
105
"""A job store which stores its jobs in a file system hierarchy."""
108
# TODO: Order alphabetically within suite or non-suite
110
# Remove the same job if it already exists without a suite
112
for filename in self._find_matching_messages(name=job["name"], suite=None):
115
# Return if the same job is already in the store
116
if list(self._find_matching_messages(name=job["name"])):
119
message_id = super(JobStore, self).add(job)
121
# TODO: Apply dependencies
123
for depends in job["depends"]:
124
for filename in self._find_matching_messages():
125
message = self._read_message(filename, cache=True)
126
if job["name"] in message.get("depends", []):
127
new_filename = self._get_next_message_filename()
128
os.rename(filename, new_filename)
132
# TODO: Optimize by only searching backwards until a given condition
133
def _find_matching_messages(self, **kwargs):
134
for filename in self._walk_messages():
135
message = self._read_message(filename,cache=True)
136
for key, value in kwargs.items():
137
if message.get(key) != value: