/// <inheritdoc/> public async Task <PublishBulkResultModel> NodePublishBulkAsync( string endpoint, PublishBulkRequestModel request) { var result = await _client.NodePublishBulkAsync(endpoint, request.ToApiModel()); return(result.ToServiceModel()); }
/// <inheritdoc/> public async Task <PublishBulkResultModel> NodePublishBulkAsync( string endpoint, PublishBulkRequestModel request, CancellationToken ct = default ) { var result = await _client.NodePublishBulkAsync(endpoint, request.ToApiModel(), ct); return(result.ToServiceModel()); }
/// <inheritdoc/> public async Task <PublishBulkResultModel> NodePublishBulkAsync(string endpointId, PublishBulkRequestModel request) { if (string.IsNullOrEmpty(endpointId)) { throw new ArgumentNullException(nameof(endpointId)); } if (request == null) { throw new ArgumentNullException(nameof(request)); } var endpoint = await _endpoints.GetEndpointAsync(endpointId); var result = await _jobs.NewOrUpdateJobAsync(GetDefaultId(endpointId), job => { var publishJob = AsJob(job); var jobChanged = false; var connection = new ConnectionModel { Endpoint = endpoint.Registration.Endpoint, Diagnostics = request.Header?.Diagnostics, User = request.Header?.Elevation }; if (request.NodesToAdd != null) { var dataSetWriterName = Guid.NewGuid().ToString(); foreach (var item in request.NodesToAdd) { AddOrUpdateItemInJob(publishJob, item, endpointId, job.Id, connection, dataSetWriterName); jobChanged = true; } } if (request.NodesToRemove != null) { foreach (var item in request.NodesToRemove) { jobChanged = RemoveItemFromJob(publishJob, item, connection); } } if (jobChanged) { job.JobConfiguration = _serializer.SerializeJobConfiguration( publishJob, out var jobType); job.JobConfigurationType = jobType; if (publishJob.WriterGroup.DataSetWriters.Count != 0 && job.LifetimeData.Status != JobStatus.Deleted) { job.LifetimeData.Status = JobStatus.Active; } job.Demands = PublisherDemands(endpoint); } return(Task.FromResult(jobChanged)); }); return(new PublishBulkResultModel { NodesToAdd = request.NodesToAdd? .Select(_ => new ServiceResultModel()).ToList(), NodesToRemove = request.NodesToRemove? .Select(_ => new ServiceResultModel()).ToList(), }); }
/// <inheritdoc/> public async Task <PublishBulkResultModel> NodePublishBulkAsync( string endpointId, PublishBulkRequestModel request, CancellationToken ct = default ) { if (string.IsNullOrEmpty(endpointId)) { throw new ArgumentNullException(nameof(endpointId)); } if (request == null) { throw new ArgumentNullException(nameof(request)); } var endpoint = await _endpoints.GetEndpointAsync(endpointId, ct : ct); if (endpoint == null) { throw new ArgumentException("Invalid endpointId"); } PublishBulkResultModel bulkResult = null; var jobId = GetDefaultId(endpointId); var result = await _jobs.NewOrUpdateJobAsync(jobId, job => { var publishJob = AsJob(job); var jobChanged = false; var connection = new ConnectionModel { Endpoint = endpoint.Registration.Endpoint, Diagnostics = request.Header?.Diagnostics, User = request.Header?.Elevation }; bulkResult = new PublishBulkResultModel { NodesToAdd = new Dictionary <string, ServiceResultModel>(), NodesToRemove = new Dictionary <string, ServiceResultModel>() }; // Add nodes. if (request.NodesToAdd != null && request.NodesToAdd.Count() > 0) { var dataSetWriterName = Guid.NewGuid().ToString(); foreach (var item in request.NodesToAdd) { AddOrUpdateItemInJob(publishJob, item, endpointId, job.Id, connection, dataSetWriterName); jobChanged = true; bulkResult.NodesToAdd.Add(item.NodeId, new ServiceResultModel()); } } // Remove nodes. if (request.NodesToRemove != null && request.NodesToRemove.Count() > 0) { foreach (var item in request.NodesToRemove) { var currentJobChanged = RemoveItemFromJob(publishJob, item, connection); jobChanged |= currentJobChanged; var serviceResultModel = currentJobChanged ? new ServiceResultModel() : new ServiceResultModel() { StatusCode = (uint)HttpStatusCode.NotFound, ErrorMessage = "Job not found" }; bulkResult.NodesToRemove.Add(item, serviceResultModel); } } if (jobChanged) { job.JobConfiguration = _serializer.SerializeJobConfiguration( publishJob, out var jobType); job.JobConfigurationType = jobType; if (publishJob.WriterGroup.DataSetWriters.Count != 0 && job.LifetimeData.Status != JobStatus.Deleted) { job.LifetimeData.Status = JobStatus.Active; } job.Demands = PublisherDemands(endpoint); } return(Task.FromResult(jobChanged)); }, ct); return(bulkResult); }