Ejemplo n.º 1
0
 def _load(self, storPath, ext=""):
     self.log.debug("%s: load from %s, ext '%s'", self, storPath, ext)
     if self.state != State.init:
         raise se.TaskMetaDataLoadError("task %s - can't load self: "
                                        "not in init state" % self)
     taskDir = os.path.join(storPath, str(self.id) + str(ext))
     if not getProcPool().os.path.exists(taskDir):
         raise se.TaskDirError("load: no such task dir '%s'" % taskDir)
     oldid = self.id
     self._loadTaskMetaFile(taskDir)
     if self.id != oldid:
         raise se.TaskMetaDataLoadError("task %s: loaded file do not match"
                                        " id (%s != %s)" %
                                        (self, self.id, oldid))
     if self.state == State.finished:
         self._loadTaskResultMetaFile(taskDir)
     for jn in range(self.njobs):
         self.jobs.append(Job("load", None))
         self._loadJobMetaFile(taskDir, jn)
         self.jobs[jn].setOwnerTask(self)
     for rn in range(self.nrecoveries):
         self.recoveries.append(Recovery("load", "load",
                                         "load", "load", ""))
         self._loadRecoveryMetaFile(taskDir, rn)
         self.recoveries[rn].setOwnerTask(self)
Ejemplo n.º 2
0
    def _loadMetaFile(cls, filename, obj, fields):
        try:
            for line in getProcPool().readLines(filename):
                # process current line
                line = line.encode('utf8')
                if line.find(KEY_SEPARATOR) < 0:
                    continue
                parts = line.split(KEY_SEPARATOR)
                if len(parts) != 2:
                    cls.log.warning("Task._loadMetaFile: %s - ignoring line"
                                    " '%s'", filename, line)
                    continue

                field = _eq_decode(parts[0].strip())
                value = _eq_decode(parts[1].strip())
                if field not in fields:
                    cls.log.warning("Task._loadMetaFile: %s - ignoring field"
                                    " %s in line '%s'", filename, field, line)
                    continue

                ftype = fields[field]
                setattr(obj, field, ftype(value))
        except Exception:
            cls.log.error("Unexpected error", exc_info=True)
            raise se.TaskMetaDataLoadError(filename)