def prepare(self): try: os.mkdir("/root/build") except OSError: pass os.chdir("/root/build") os.system("rm -Rf spl") gitinfo = self.job.attributes['zfs-git-repo'] repodir = "%s/repositories/%s" % (Utility.get_persistent_dir(), gitinfo['spl-repository']) if os.system("git clone -b %s %s spl" % (gitinfo['spl-branch'], repodir)) != 0: return TaskResult.FAILED os.chdir("spl") if os.system( "git reset --hard `git rev-list --max-count=1 --before=%s HEAD`" % (gitinfo['timestamp'])) != 0: return TaskResult.FAILED return TaskResult.PASSED
def mount_partitions(): if os.system("mountpoint -q /mnt") != 0 or os.system("mount -o remount,rw /mnt") != 0: try: os.makedirs("/mnt") except OSError: pass if os.system("mount %s /mnt" % (PartitionBuilder.get_rootpart())) != 0: raise Error("Could not mount node filesystem.") if os.system("mountpoint -q /mnt/dev") != 0: try: os.makedirs("/mnt/dev") except OSError: pass if os.system("mount --bind /dev /mnt/dev") != 0: raise Error("Could not mount /mnt/dev") if os.system("mountpoint -q /mnt/sys") != 0: try: os.makedirs("/mnt/sys") except OSError: pass if os.system("mount --bind /sys /mnt/sys") != 0: raise Error("Could not mount /mnt/sys") if os.system("mountpoint -q /mnt/proc") != 0: try: os.makedirs("/mnt/proc") except OSError: pass if os.system("mount -t proc none /mnt/proc") != 0: raise Error("Could not mount /mnt/proc") persistent_dir = Utility.get_persistent_dir() if os.system("mountpoint -q /mnt/%s" % (persistent_dir)) != 0: try: os.makedirs("/mnt/%s" % (persistent_dir)) except OSError: pass if os.system("mount --bind %s /mnt/%s" % (persistent_dir, persistent_dir)) != 0: raise Error("Could not mount /mnt/%s" % (persistent_dir))
def prepare(self): try: os.mkdir("/root/build") except OSError: pass os.chdir("/root/build") os.system("rm -Rf spl") gitinfo = self.job.attributes['zfs-git-repo'] repodir = "%s/repositories/%s" % (Utility.get_persistent_dir(), gitinfo['spl-repository']) if os.system("git clone -b %s %s spl" % (gitinfo['spl-branch'], repodir)) != 0: return TaskResult.FAILED os.chdir("spl") if os.system("git reset --hard `git rev-list --max-count=1 --before=%s HEAD`" % (gitinfo['timestamp'])) != 0: return TaskResult.FAILED return TaskResult.PASSED
def process_results(session): for resultdir in glob.glob(Utility.get_persistent_dir() + '/results/*'): try: resultfile = resultdir + '/job.json' fp = open(resultfile, 'r') resultinfo = json.load(fp) fp.close() statinfo = os.lstat(resultfile) timestamp = datetime.fromtimestamp(statinfo.st_mtime) except Exception, exc: print exc continue job = Job.get_by_hash(session, resultinfo['job_id']) if job == None: job = Job(resultinfo['job_id']) job.attributes = resultinfo['input'] session.add(job) if not 'output' in resultinfo: continue if not 'result_id' in resultinfo: resultinfo['result_id'] = hashlib.md5(os.path.basename(resultdir)).hexdigest() result = JobResult.get_by_hash(session, resultinfo['result_id']) if result == None: jobresult = JobResult(job, resultinfo['result_id']) for (task, taskinfo) in resultinfo['output'].iteritems(): taskresult = TaskResult(jobresult, task) taskresult.attributes = taskinfo session.add(taskresult) session.add(jobresult)
def unmount_partitions(): persistent_dir = Utility.get_persistent_dir() os.system("umount /mnt/%s /mnt/dev /mnt/sys /mnt/proc /mnt" % (persistent_dir))