public IJobDefinition WithCorrelationPayloadUris(params Uri[] payloadUris) { foreach (Uri uri in payloadUris) { CorrelationPayloads.Add(new UriPayload(uri), ""); } return(this); }
public IJobDefinition WithCorrelationPayloadUris(IDictionary <Uri, string> payloadUrisWithDestinations) { foreach (var(uri, destination) in payloadUrisWithDestinations) { CorrelationPayloads.Add(new UriPayload(uri), destination); } return(this); }
public async Task <ISentJob> SendAsync(Action <string> log = null) { IBlobHelper storage; if (string.IsNullOrEmpty(StorageAccountConnectionString)) { storage = new ApiBlobHelper(HelixApi.Storage); } else { storage = new ConnectionStringBlobHelper(StorageAccountConnectionString); } IBlobContainer storageContainer = await storage.GetContainerAsync(TargetContainerName); var jobList = new List <JobListEntry>(); List <string> correlationPayloadUris = (await Task.WhenAll(CorrelationPayloads.Select(p => p.UploadAsync(storageContainer, log)))).ToList(); jobList = (await Task.WhenAll( _workItems.Select(async w => { var entry = await w.SendAsync(storageContainer, TargetContainerName, log); entry.CorrelationPayloadUris = correlationPayloadUris; return(entry); } ))).ToList(); string jobListJson = JsonConvert.SerializeObject(jobList); Uri jobListUri = await storageContainer.UploadTextAsync( jobListJson, $"job-list-{Guid.NewGuid()}.json"); string jobStartIdentifier = Guid.NewGuid().ToString("N"); JobCreationResult newJob = await HelixApi.RetryAsync( () => JobApi.NewAsync( new JobCreationRequest( Source, Type, Build, _properties.ToImmutableDictionary(), jobListUri.ToString(), TargetQueueId, storageContainer.Uri, storageContainer.ReadSas, storageContainer.WriteSas) { Creator = Creator, MaxRetryCount = MaxRetryCount ?? 0, JobStartIdentifier = jobStartIdentifier, }), ex => log?.Invoke($"Starting job failed with {ex}\nRetrying...")); return(new SentJob(JobApi, newJob)); }
public async Task <ISentJob> SendAsync() { IBlobHelper storage; if (string.IsNullOrEmpty(StorageAccountConnectionString)) { storage = new ApiBlobHelper(HelixApi.Storage); } else { storage = new ConnectionStringBlobHelper(StorageAccountConnectionString); } IBlobContainer storageContainer = await storage.GetContainerAsync(TargetContainerName); var jobList = new List <JobListEntry>(); List <string> correlationPayloadUris = (await Task.WhenAll(CorrelationPayloads.Select(p => p.UploadAsync(storageContainer)))).ToList(); foreach (WorkItemDefinition workItem in _workItems) { JobListEntry entry = await workItem.SendAsync(storageContainer, TargetContainerName); entry.CorrelationPayloadUris = correlationPayloadUris; jobList.Add(entry); } string jobListJson = JsonConvert.SerializeObject(jobList); Uri jobListUri = await storageContainer.UploadTextAsync( jobListJson, $"job-list-{Guid.NewGuid()}.json"); JobCreationResult newJob = await JobApi.NewOperationAsync( new JobCreationRequest( Source, Type, Build, _properties, jobListUri.ToString(), TargetQueueId, storageContainer.Uri, storageContainer.ReadSas, storageContainer.WriteSas, Creator)); return(new SentJob(JobApi, newJob)); }
public IJobDefinition WithCorrelationPayloadFiles(params string[] files) { CorrelationPayloads.Add(new AdhocPayload(files)); return(this); }
public IJobDefinition WithCorrelationPayloadDirectory(string directory) { CorrelationPayloads.Add(new DirectoryPayload(directory)); return(this); }
public IJobDefinition WithCorrelationPayloadArchive(string archive, string destination = "") { CorrelationPayloads.Add(new ArchivePayload(archive), destination); return(this); }
public IJobDefinition WithCorrelationPayloadFiles(IList <string> files, string destination) { CorrelationPayloads.Add(new AdhocPayload(files.ToArray()), destination); return(this); }
public IJobDefinition WithCorrelationPayloadDirectory(string directory, string archiveEntryPrefix, string destination) { CorrelationPayloads.Add(new DirectoryPayload(directory, archiveEntryPrefix), destination); return(this); }
public IJobDefinition WithCorrelationPayloadArchive(string archive) { CorrelationPayloads.Add(new ArchivePayload(archive)); return(this); }