Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void WriteFileOutput(GridJobTask task, string outputFile, string text)
 {
     GridIo.StoreJobTaskOutputFile(task, outputFile, Encoding.UTF8.GetBytes(text));
 }
Esempio n. 3
0
 public void CleanupJobDirectory(GridJob job)
 {
     GridIo.CleanupDirectory(job);
 }
Esempio n. 4
0
 public void PrepareJobTaskDirectories(GridJobTask task)
 {
     GridIo.CreateDirectoriesForTask(task);
 }
Esempio n. 5
0
 public string ResolveFilePath(GridJobTask task, string fileName)
 {
     return(GridIo.ResolveFilePath(task, fileName));
 }
Esempio n. 6
0
 public string ResolveFilePath(GridJobTask task, GridJobFile file)
 {
     return(GridIo.ResolveFilePath(task.ParentJob, task, file));
 }