def list_tasks(): tasks_path = kremtree.find_common_dir(c.PROJECT_TASKS_DIR) if tasks_path is not None: tasks_path = os.path.abspath(tasks_path) tasks_list = kremtree.list_dir(tasks_path) tasks_list.sort() print("\nAvailable tasks:\n") print("[nr]\tname\n") idx = 0 for task in tasks_list: missingFiles = [] printstring = "[" + str(idx) + "]\t" + str(task) # List scripts in task, to quickly see if something is missing task_path = os.path.join(tasks_path, task) if not os.path.isfile(os.path.join(task_path, c.TEMPLATE_TASK_FILE)): missingFiles.append(c.TEMPLATE_TASK_FILE) if not os.path.isfile(os.path.join(task_path, c.INIT_PACKAGE_FILE)): missingFiles.append(c.INIT_PACKAGE_FILE) if len(missingFiles) > 0: printstring = printstring + '\t' + "missing files: " + str( missingFiles) print(printstring) idx = idx + 1 print("")
def run_job(target): ret = 0 err = False jobs_path = kremtree.find_common_dir(c.PROJECT_JOBS_DIR) idx = 0 job_num = check_if_job_number(target) if not job_num < 0: jobs = kremtree.list_dir(jobs_path) jobs.sort() if not job_num + 1 > len(jobs): for job in jobs: if idx == job_num: print("\nRunning job: " + str(job) + "\n") target = job break idx = idx + 1 else: print("Invalid job number: " + str(job_num)) err = True if not err: #this will add project path to sys path so jobs can acces library, config, etc current_env = os.environ.copy() current_env['PYTHONPATH'] += os.pathsep + os.path.join( os.path.dirname(".")) target_path = os.path.join(jobs_path, target, c.TEMPLATE_JOB_SCRIPT) try: ret = subprocess.call(['python', target_path], env=current_env) except Exception as e: print("Invalid job: " + str(target)) return ret
def list_jobs(): jobs_path = os.path.abspath(kremtree.find_common_dir(c.PROJECT_JOBS_DIR)) job_list = kremtree.list_dir(jobs_path) job_list.sort() print("\nAvailable jobs: \n") print("[nr]\tname\n") idx = 0 for job in job_list: print("[" + str(idx) + "]\t" + str(job)) idx = idx + 1 print('\n')
def run_job(target): ret = 0 jobs_path = kremtree.find_common_dir(c.PROJECT_JOBS_DIR) if not os.path.isdir(os.path.join(kremtree.find_krem_root("./"), c.PROJECT_OUTPUT_DIR)): templatePath = os.path.join(c.TEMPLATES_PATH, c.TEMPLATE_PROJECT) shutil.copytree(os.path.join(templatePath, c.PROJECT_OUTPUT_DIR), os.path.join(kremtree.find_krem_root("./"), c.PROJECT_OUTPUT_DIR)) idx = 0 job_num = check_if_job_number(target) if job_num >= 0: jobs = kremtree.list_dir(jobs_path) jobs.sort() if not job_num + 1 > len(jobs): for job in jobs: if idx == job_num: print("\nRunning job: " + str(job) +"\n") target = job break idx = idx + 1 else: print("Invalid job number: " + str(job_num)) ret = 1 if ret == 0: target_path = os.path.join(jobs_path, target, c.TEMPLATE_JOB_SCRIPT) if not os.path.exists(target_path): print("Invalid job: " + str(target)) ret = 1 if ret == 0: #this will add project path to sys path so jobs can acces library, config, etc current_env = os.environ.copy() current_env['PYTHONPATH'] += os.pathsep + os.path.join(os.path.dirname(".")) if os.stat(target_path).st_size == 0: print("[ERROR]: Target job-script is empty.") exit(1) try: ret = subprocess.call(['python', target_path], env=current_env) except Exception: print("Invalid job: " + str(target)) ret = 1 return ret