private static GridJobModule LoadModule(GridJobTask task, GridJobFileLink link) { var moduleFile = task.ParentJob.JobFiles.FirstOrDefault(x => x.FileName == link.FileName); if (moduleFile == null) { throw new GridJobTaskCommandException(task, $"Unable to locate referenced module file {link} in task instance"); } moduleFile.Bytes = File.ReadAllBytes(GridIo.ResolveFilePath(task, moduleFile)); moduleFile.UpdateCheckSum(); Assembly assembly; try { assembly = Assembly.Load(moduleFile.Bytes); } catch (Exception e) { throw new GridJobTaskCommandException(task, $"Unable to load module assembly file {link} when try to execute task", e); } var entryPoint = assembly.GetExportedTypes().FirstOrDefault(t => t.BaseType == typeof(GridJobModule)); if (entryPoint == null) { throw new GridJobTaskCommandException(task, $"Unable to load module {link}: target module do not release {typeof(GridJobModule).FullName} class"); } dynamic obj; try { obj = Activator.CreateInstance(entryPoint, null); } catch (Exception err) { throw new GridJobTaskCommandException(task, $"Unable to load module {link}: unable to create instance of {entryPoint.FullName} module entrypoint class", err); } return((GridJobModule)obj); }
public void WriteFileOutput(GridJobTask task, string outputFile, string text) { GridIo.StoreJobTaskOutputFile(task, outputFile, Encoding.UTF8.GetBytes(text)); }
public void CleanupJobDirectory(GridJob job) { GridIo.CleanupDirectory(job); }
public void PrepareJobTaskDirectories(GridJobTask task) { GridIo.CreateDirectoriesForTask(task); }
public string ResolveFilePath(GridJobTask task, string fileName) { return(GridIo.ResolveFilePath(task, fileName)); }
public string ResolveFilePath(GridJobTask task, GridJobFile file) { return(GridIo.ResolveFilePath(task.ParentJob, task, file)); }