def _execute(state): # Read backup config files err, msg = _execute_config(state) if err: _D.ERROR(__name__, "Error reading job config", "msg", msg) return 0, None # If no matching jobs then finish if not state.jobs: _D.WARNING(__name__, "No matching backup jobs found, exiting") return 0, None # Check jobs do not step on each other err, msg = _validate_jobs(state.jobs) if err: _D.ERROR(__name__, "Error validating jobs", "msg", msg) return 0, None # Empty temp directory before executing jobs fsutil.empty_dir(state.model.dir_temp) # Execute each job i = 0 for job in state.jobs: i += 1 err, msg = _exec_job(state, job, i, len(state.jobs)) if err: _D.ERROR(__name__, "Error executing job", "msg", msg) # Done return 0, None
def _init_model(dir_resource, dir_work, filename): # Resource directory if not os.path.exists(dir_resource): return None, 1, "HTML Diags Resource directory does not exist: {}".format(dir_resource) # Working dir if not os.path.exists(dir_work): return None, 1, "HTML Diags Work directory does not exist: {}".format(dir_work) err, msg = fsutil.empty_dir(dir_work) if err: return None, err, "Diagnostic directory cannot be emptied: {}".format(msg) err, msg = fsutil.ensure_dir(dir_work) if err: return None, err, msg # HTML log filename if not filename: return None, 1, "HTML log filename must be provided" return Model(dir_resource, dir_work, filename), 0, None