public IList <JobFileContent> DownloadPartsOfJobFilesFromCluster(long submittedJobInfoId, TaskFileOffset[] taskFileOffsets, AdaptorUser loggedUser) { log.Info("Getting part of job files from cluster for submitted job info ID " + submittedJobInfoId + " with user " + loggedUser.GetLogIdentification()); SubmittedJobInfo jobInfo = LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).GetSubmittedJobInfoById(submittedJobInfoId, loggedUser); IRexFileSystemManager fileManager = FileSystemFactory.GetInstance(jobInfo.Specification.FileTransferMethod.Protocol).CreateFileSystemManager(jobInfo.Specification.FileTransferMethod); IList <JobFileContent> result = new List <JobFileContent>(); foreach (SubmittedTaskInfo taskInfo in jobInfo.Tasks) { IList <TaskFileOffset> currentTaskFileOffsets = (from taskFileOffset in taskFileOffsets where taskFileOffset.SubmittedTaskInfoId == taskInfo.Id select taskFileOffset).ToList(); foreach (TaskFileOffset currentOffset in currentTaskFileOffsets) { ICollection <JobFileContent> contents = fileManager.DownloadPartOfJobFileFromCluster(taskInfo, currentOffset.FileType, currentOffset.Offset); if (contents != null) { foreach (JobFileContent content in contents) { result.Add(content); } } } } return(result); }
public ICollection <FileInformation> ListChangedFilesForJob(long submittedJobInfoId, AdaptorUser loggedUser) { SubmittedJobInfo jobInfo = LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).GetSubmittedJobInfoById(submittedJobInfoId, loggedUser); if (jobInfo.State < JobState.Submitted || jobInfo.State == JobState.WaitingForServiceAccount) { return(null); } IRexFileSystemManager fileManager = FileSystemFactory.GetInstance(jobInfo.Specification.FileTransferMethod.Protocol).CreateFileSystemManager(jobInfo.Specification.FileTransferMethod); return(fileManager.ListChangedFilesForJob(jobInfo, jobInfo.SubmitTime.Value)); }
public IList <SynchronizedJobFiles> SynchronizeAllUnfinishedJobFiles() { var unfinishedJobs = LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).GetNotFinishedJobInfos().ToList(); IEnumerable <IGrouping <FileTransferMethod, SubmittedJobInfo> > fileTransferMethodGroups = (from jobInfo in unfinishedJobs group jobInfo by jobInfo.Specification.FileTransferMethod into fileTransferMethodGroup select fileTransferMethodGroup); IList <SynchronizedJobFiles> result = new List <SynchronizedJobFiles>(unfinishedJobs.Count); foreach (var fileTransferMethodGroup in fileTransferMethodGroups) { IRexFileSystemManager fileManager = FileSystemFactory.GetInstance(fileTransferMethodGroup.Key.Protocol).CreateFileSystemManager(fileTransferMethodGroup.Key); foreach (var jobInfo in fileTransferMethodGroup) { DateTime synchronizationTime = DateTime.UtcNow; ICollection <JobFileContent> files = fileManager.CopyLogFilesFromCluster(jobInfo); foreach (JobFileContent file in fileManager.CopyProgressFilesFromCluster(jobInfo)) { files.Add(file); } foreach (JobFileContent file in fileManager.CopyStdOutputFilesFromCluster(jobInfo)) { files.Add(file); } foreach (JobFileContent file in fileManager.CopyStdErrorFilesFromCluster(jobInfo)) { files.Add(file); } SynchronizedJobFiles fileContents = new SynchronizedJobFiles { SubmittedJobInfoId = jobInfo.Id, SynchronizationTime = synchronizationTime, FileContents = files.ToList() }; result.Add(fileContents); } } return(result); }
public byte[] DownloadFileFromCluster(long submittedJobInfoId, string relativeFilePath, AdaptorUser loggedUser) { SubmittedJobInfo jobInfo = LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).GetSubmittedJobInfoById(submittedJobInfoId, loggedUser); if (jobInfo.State < JobState.Submitted || jobInfo.State == JobState.WaitingForServiceAccount) { return(null); } IRexFileSystemManager fileManager = FileSystemFactory.GetInstance(jobInfo.Specification.FileTransferMethod.Protocol).CreateFileSystemManager(jobInfo.Specification.FileTransferMethod); try { return(fileManager.DownloadFileFromCluster(jobInfo, relativeFilePath)); } catch (SftpPathNotFoundException exception) { log.Warn($"{loggedUser.ToString()} is requesting not existing file '{relativeFilePath}'"); ExceptionHandler.ThrowProperExternalException(new InvalidRequestException(exception.Message)); } return(null); }