Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit f9f5309

Browse files
Orchestrator and symbols - phase1 (#458)
Prepare the orchestrator for consuming symbols - phase1 Make the Orchestrator's interfaces generic.
1 parent 5476662 commit f9f5309

50 files changed

Lines changed: 1205 additions & 652 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/NuGet.Services.Validation.Orchestrator/IMessageService.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
namespace NuGet.Services.Validation.Orchestrator
77
{
8-
public interface IMessageService
8+
public interface IMessageService<T> where T : class, IEntity
99
{
10-
void SendPackagePublishedMessage(Package package);
11-
void SendPackageValidationFailedMessage(Package package);
12-
void SendPackageSignedValidationFailedMessage(Package package);
13-
void SendPackageValidationTakingTooLongMessage(Package package);
10+
void SendPublishedMessage(T entity);
11+
void SendValidationFailedMessage(T entity);
12+
void SendSignedValidationFailedMessage(T entity);
13+
void SendValidationTakingTooLongMessage(T entity);
1414
}
1515
}

src/NuGet.Services.Validation.Orchestrator/IPackageStatusProcessor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ namespace NuGet.Services.Validation.Orchestrator
99
/// <summary>
1010
/// This interface manages the state of gallery artifacts: gallery DB and packages container.
1111
/// </summary>
12-
public interface IPackageStatusProcessor
12+
public interface IStatusProcessor<T> where T : class, IEntity
1313
{
14-
Task SetPackageStatusAsync(
15-
Package package,
14+
Task SetStatusAsync(
15+
IValidatingEntity<T> validatingEntity,
1616
PackageValidationSet validationSet,
17-
PackageStatus packageStatus);
17+
PackageStatus status);
1818
}
1919
}

src/NuGet.Services.Validation.Orchestrator/IValidationOutcomeProcessor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace NuGet.Services.Validation.Orchestrator
99
/// <summary>
1010
/// Interface for the code that deals with any changes that happened in the validation set
1111
/// </summary>
12-
public interface IValidationOutcomeProcessor
12+
public interface IValidationOutcomeProcessor<T> where T : class, IEntity
1313
{
1414
/// <summary>
1515
/// Processes the changes in validation statuses:
@@ -18,10 +18,10 @@ public interface IValidationOutcomeProcessor
1818
/// * Otherwise, queues another check for the package
1919
/// </summary>
2020
/// <param name="validationSet">Current state of validation set</param>
21-
/// <param name="package">Package information from Gallery DB</param>
21+
/// <param name="validatingEntity">The validating entity.</param>
2222
/// <param name="currentCallStats">Contains information about what happened during current message processing in
2323
/// the validation set processor.</param>
2424
/// <returns>A task that completes when the outcome has been processed</returns>
25-
Task ProcessValidationOutcomeAsync(PackageValidationSet validationSet, Package package, ValidationSetProcessorResult currentCallStats);
25+
Task ProcessValidationOutcomeAsync(PackageValidationSet validationSet, IValidatingEntity<T> validatingEntity, ValidationSetProcessorResult currentCallStats);
2626
}
2727
}

src/NuGet.Services.Validation.Orchestrator/IValidationPackageFileService.cs

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,48 @@
99

1010
namespace NuGet.Services.Validation.Orchestrator
1111
{
12-
public interface IValidationPackageFileService : ICorePackageFileService
12+
public interface IValidationFileService
1313
{
14+
/// <summary>
15+
/// The action to delete the package file in the validation container.
16+
/// </summary>
17+
/// <param name="validationSet">The <see cref="PackageValidationSet"/> for the file to be deleted.</param>
18+
/// <returns></returns>
19+
Task DeleteValidationPackageFileAsync(PackageValidationSet validationSet);
20+
21+
/// <summary>
22+
/// The action to delete the package file.
23+
/// </summary>
24+
/// <param name="validationSet">The <see cref="PackageValidationSet"/> for the file to be deleted.</param>
25+
/// <returns></returns>
26+
Task DeletePackageFileAsync(PackageValidationSet validationSet);
27+
28+
/// <summary>
29+
/// It will return true if the package associated with this validation set exists.
30+
/// </summary>
31+
/// <param name="validationSet">The <see cref="PackageValidationSet"/> for the file to be found.</param>
32+
/// <returns></returns>
33+
Task<bool> DoesPackageFileExistAsync(PackageValidationSet validationSet);
34+
35+
/// <summary>
36+
/// It will return true if the package in the validation container associated with this validation set exists.
37+
/// </summary>
38+
/// <param name="validationSet"></param>
39+
/// <returns></returns>
40+
Task<bool> DoesValidationPackageFileExistAsync(PackageValidationSet validationSet);
41+
1442
/// <summary>
1543
/// Download the package content from the packages container to a temporary location on disk.
1644
/// </summary>
1745
/// <param name="package">The package metadata.</param>
1846
/// <returns>The package stream.</returns>
19-
Task<Stream> DownloadPackageFileToDiskAsync(Package package);
47+
Task<Stream> DownloadPackageFileToDiskAsync(PackageValidationSet package);
2048

2149
/// <summary>
2250
/// Backs up the package file from the location specific for the validation set.
2351
/// </summary>
24-
/// <param name="package">The package metadata.</param>
2552
/// <param name="validationSet">The validation set, containing validation set and package identifiers.</param>
26-
Task BackupPackageFileFromValidationSetPackageAsync(Package package, PackageValidationSet validationSet);
53+
Task BackupPackageFileFromValidationSetPackageAsync(PackageValidationSet validationSet);
2754

2855
/// <summary>
2956
/// Copy a package from the validation container to a location specific for the validation set. This allows the
@@ -54,9 +81,8 @@ Task CopyValidationSetPackageToPackageFileAsync(
5481
/// <summary>
5582
/// Copy a package from the validation container to the packages container.
5683
/// </summary>
57-
/// <param name="id">The package ID.</param>
58-
/// <param name="normalizedVersion">The normalized package version.</param>
59-
Task CopyValidationPackageToPackageFileAsync(string id, string normalizedVersion);
84+
/// <param name="validationSet">The validation set.</param>
85+
Task CopyValidationPackageToPackageFileAsync(PackageValidationSet validationSet);
6086

6187
/// <summary>
6288
/// Copy a package URL to a location specific for the validation set.
@@ -90,12 +116,12 @@ Task CopyValidationSetPackageToPackageFileAsync(
90116
/// <summary>
91117
/// Updates package blob metadata.
92118
/// </summary>
93-
/// <param name="package">A package that will have its blob metadata updated.</param>
119+
/// <param name="validationSet">A validationSet that will identify the package that will have its blob metadata updated.</param>
94120
/// <returns>A task that represents the asynchronous operation.
95121
/// The task result (<see cref="Task{PackageStreamMetadata}.Result" />) returns
96122
/// a <see name="PackageStreamMetadata" />.</returns>
97123
/// <exception cref="Microsoft.WindowsAzure.Storage.StorageException">Thrown if the blob has changed between
98124
/// successive read and write operations.</exception>
99-
Task<PackageStreamMetadata> UpdatePackageBlobMetadataAsync(Package package);
125+
Task<PackageStreamMetadata> UpdatePackageBlobMetadataAsync(PackageValidationSet validationSet);
100126
}
101127
}

src/NuGet.Services.Validation.Orchestrator/IValidationSetProcessor.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ public interface IValidationSetProcessor
1616
/// Persists all validation status changes.
1717
/// </summary>
1818
/// <param name="validationSet">Validation set to work with. Any validation updates would be reflected in that object upon return.</param>
19-
/// <param name="package">Gallery DB package information</param>
2019
/// <returns>Information about what happened during processing of the message.</returns>
21-
Task<ValidationSetProcessorResult> ProcessValidationsAsync(PackageValidationSet validationSet, Package package);
20+
Task<ValidationSetProcessorResult> ProcessValidationsAsync(PackageValidationSet validationSet);
2221
}
2322
}

src/NuGet.Services.Validation.Orchestrator/IValidationSetProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ namespace NuGet.Services.Validation.Orchestrator
1010
/// <summary>
1111
/// Provides <see cref="PackageValidationSet"/> instances.
1212
/// </summary>
13-
public interface IValidationSetProvider
13+
public interface IValidationSetProvider<T> where T : class, IEntity
1414
{
1515
/// <summary>
1616
/// Reads validation set data from storage, creates one if did not exist in storage
1717
/// </summary>
18-
/// <param name="validationTrackingId">Validation tracking id</param>
19-
/// <param name="package">Package details from Gallery DB</param>
18+
/// <param name="message">The validation message data. It contains the validation tracking id</param>
19+
/// <param name="validatingEntity">The validating entity</param>
2020
/// <returns><see cref="PackageValidationSet"/> object with information about
2121
/// requested <paramref name="validationTrackingId"/>. Null if no further processing
2222
/// should be made (e.g. duplicate validation request was detected).
2323
/// </returns>
24-
Task<PackageValidationSet> TryGetOrCreateValidationSetAsync(Guid validationTrackingId, Package package);
24+
Task<PackageValidationSet> TryGetOrCreateValidationSetAsync(PackageValidationMessageData message, IValidatingEntity<T> validatingEntity);
2525
}
2626
}

src/NuGet.Services.Validation.Orchestrator/IValidationStorageService.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Threading.Tasks;
6+
using NuGetGallery;
67

78
namespace NuGet.Services.Validation.Orchestrator
89
{
@@ -26,11 +27,11 @@ public interface IValidationStorageService
2627
Task<PackageValidationSet> GetValidationSetAsync(Guid validationTrackingId);
2728

2829
/// <summary>
29-
/// Gets the number of validation sets that the provided package key has.
30+
/// Gets the number of validation sets that the provided entity has.
3031
/// </summary>
31-
/// <param name="packageKey">The package key.</param>
32+
/// <param name="entity">The entity.</param>
3233
/// <returns>The count.</returns>
33-
Task<int> GetValidationSetCountAsync(int packageKey);
34+
Task<int> GetValidationSetCountAsync<T>(IValidatingEntity<T> entity) where T : class, IEntity;
3435

3536
/// <summary>
3637
/// Updates the passed <see cref="PackageValidation"/> with the validation result's status,
@@ -75,9 +76,9 @@ public interface IValidationStorageService
7576
/// <param name="recentDuration">Max amount of time to look back.</param>
7677
/// <param name="currentValidationSetTrackingId">Validation set tracking for the currently processed request.</param>
7778
/// <returns>True if validation set exists, false otherwise.</returns>
78-
Task<bool> OtherRecentValidationSetForPackageExists(
79-
int packageKey,
79+
Task<bool> OtherRecentValidationSetForPackageExists<T>(
80+
IValidatingEntity<T> entity,
8081
TimeSpan recentDuration,
81-
Guid currentValidationSetTrackingId);
82+
Guid currentValidationSetTrackingId) where T : class, IEntity;
8283
}
8384
}

src/NuGet.Services.Validation.Orchestrator/Job.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Microsoft.Extensions.Logging;
2020
using Microsoft.Extensions.Options;
2121
using Microsoft.WindowsAzure.Storage;
22+
using NuGetGallery;
2223
using NuGet.Jobs;
2324
using NuGet.Jobs.Configuration;
2425
using NuGet.Jobs.Validation;
@@ -198,6 +199,7 @@ private void ConfigureJobServices(IServiceCollection services, IConfigurationRoo
198199
services.AddScoped<IValidationStorageService, ValidationStorageService>();
199200
services.Add(ServiceDescriptor.Transient(typeof(NuGetGallery.IEntityRepository<>), typeof(NuGetGallery.EntityRepository<>)));
200201
services.AddTransient<NuGetGallery.ICorePackageService, NuGetGallery.CorePackageService>();
202+
services.AddTransient<IEntityService<Package>, PackageEntityService>();
201203
services.AddTransient<ISubscriptionClient>(serviceProvider =>
202204
{
203205
var configuration = serviceProvider.GetRequiredService<IOptionsSnapshot<ServiceBusConfiguration>>().Value;
@@ -210,11 +212,11 @@ private void ConfigureJobServices(IServiceCollection services, IConfigurationRoo
210212
});
211213
services.AddTransient<IPackageValidationEnqueuer, PackageValidationEnqueuer>();
212214
services.AddTransient<IValidatorProvider, ValidatorProvider>();
213-
services.AddTransient<IValidationSetProvider, ValidationSetProvider>();
214-
services.AddTransient<IMessageHandler<PackageValidationMessageData>, ValidationMessageHandler>();
215+
services.AddTransient<IValidationSetProvider<Package>, ValidationSetProvider<Package>>();
216+
services.AddTransient<IMessageHandler<PackageValidationMessageData>, PackageValidationMessageHandler>();
215217
services.AddTransient<IServiceBusMessageSerializer, ServiceBusMessageSerializer>();
216218
services.AddTransient<IBrokeredMessageSerializer<PackageValidationMessageData>, PackageValidationMessageDataSerializationAdapter>();
217-
services.AddTransient<IPackageCriteriaEvaluator, PackageCriteriaEvaluator>();
219+
services.AddTransient<ICriteriaEvaluator<Package>, PackageCriteriaEvaluator>();
218220
services.AddTransient<VcsValidator>();
219221
services.AddTransient<IProcessSignatureEnqueuer, ProcessSignatureEnqueuer>();
220222
services.AddTransient<NuGetGallery.ICloudBlobClient>(c =>
@@ -225,10 +227,11 @@ private void ConfigureJobServices(IServiceCollection services, IConfigurationRoo
225227
readAccessGeoRedundant: false);
226228
});
227229
services.AddTransient<NuGetGallery.ICoreFileStorageService, NuGetGallery.CloudBlobCoreFileStorageService>();
228-
services.AddTransient<IValidationPackageFileService, ValidationPackageFileService>();
229-
services.AddTransient<IPackageDownloader, PackageDownloader>();
230-
services.AddTransient<IPackageStatusProcessor, PackageStatusProcessor>();
231-
services.AddTransient<IValidationSetProvider, ValidationSetProvider>();
230+
services.AddTransient<IValidationFileServiceMetadata, PackageValidationFileServiceMetadata>();
231+
services.AddTransient<IValidationFileService, ValidationFileService>();
232+
services.AddTransient<IFileDownloader, PackageDownloader>();
233+
services.AddTransient<IStatusProcessor<Package>, EntityStatusProcessor<Package>>();
234+
services.AddTransient<IValidationSetProvider<Package>, ValidationSetProvider<Package>>();
232235
services.AddTransient<IValidationSetProcessor, ValidationSetProcessor>();
233236
services.AddTransient<IBrokeredMessageSerializer<SignatureValidationMessage>, SignatureValidationMessageSerializer>();
234237
services.AddTransient<IBrokeredMessageSerializer<CertificateValidationMessage>, CertificateValidationMessageSerializer>();
@@ -267,13 +270,13 @@ private void ConfigureJobServices(IServiceCollection services, IConfigurationRoo
267270
});
268271
services.AddTransient<ICoreMessageServiceConfiguration, CoreMessageServiceConfiguration>();
269272
services.AddTransient<ICoreMessageService, CoreMessageService>();
270-
services.AddTransient<IMessageService, MessageService>();
273+
services.AddTransient<IMessageService<Package>, PackageMessageService>();
271274
services.AddTransient<ICommonTelemetryService, CommonTelemetryService>();
272275
services.AddTransient<ITelemetryService, TelemetryService>();
273276
services.AddTransient<ITelemetryClient, TelemetryClientWrapper>();
274277
services.AddTransient<IDiagnosticsService, LoggerDiagnosticsService>();
275278
services.AddSingleton(new TelemetryClient());
276-
services.AddTransient<IValidationOutcomeProcessor, ValidationOutcomeProcessor>();
279+
services.AddTransient<IValidationOutcomeProcessor<Package>, ValidationOutcomeProcessor<Package>>();
277280
services.AddSingleton(p =>
278281
{
279282
var assembly = Assembly.GetEntryAssembly();

src/NuGet.Services.Validation.Orchestrator/MessageService.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99

1010
namespace NuGet.Services.Validation.Orchestrator
1111
{
12-
public class MessageService : IMessageService
12+
public class PackageMessageService : IMessageService<Package>
1313
{
1414
private readonly ICoreMessageService _coreMessageService;
1515
private readonly EmailConfiguration _emailConfiguration;
16-
private readonly ILogger<MessageService> _logger;
16+
private readonly ILogger<PackageMessageService> _logger;
1717

18-
public MessageService(
18+
public PackageMessageService(
1919
ICoreMessageService coreMessageService,
2020
IOptionsSnapshot<EmailConfiguration> emailConfigurationAccessor,
21-
ILogger<MessageService> logger)
21+
ILogger<PackageMessageService> logger)
2222
{
2323
_coreMessageService = coreMessageService ?? throw new ArgumentNullException(nameof(coreMessageService));
2424
if (emailConfigurationAccessor == null)
@@ -45,7 +45,7 @@ public MessageService(
4545
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
4646
}
4747

48-
public void SendPackagePublishedMessage(Package package)
48+
public void SendPublishedMessage(Package package)
4949
{
5050
package = package ?? throw new ArgumentNullException(nameof(package));
5151

@@ -55,7 +55,7 @@ public void SendPackagePublishedMessage(Package package)
5555
_coreMessageService.SendPackageAddedNotice(package, galleryPackageUrl, packageSupportUrl, _emailConfiguration.EmailSettingsUrl);
5656
}
5757

58-
public void SendPackageValidationFailedMessage(Package package)
58+
public void SendValidationFailedMessage(Package package)
5959
{
6060
package = package ?? throw new ArgumentNullException(nameof(package));
6161

@@ -65,7 +65,7 @@ public void SendPackageValidationFailedMessage(Package package)
6565
_coreMessageService.SendPackageValidationFailedNotice(package, galleryPackageUrl, packageSupportUrl);
6666
}
6767

68-
public void SendPackageSignedValidationFailedMessage(Package package)
68+
public void SendSignedValidationFailedMessage(Package package)
6969
{
7070
package = package ?? throw new ArgumentNullException(nameof(package));
7171

@@ -74,7 +74,7 @@ public void SendPackageSignedValidationFailedMessage(Package package)
7474
_coreMessageService.SendSignedPackageNotAllowedNotice(package, galleryPackageUrl, _emailConfiguration.AnnouncementsUrl, _emailConfiguration.TwitterUrl);
7575
}
7676

77-
public void SendPackageValidationTakingTooLongMessage(Package package)
77+
public void SendValidationTakingTooLongMessage(Package package)
7878
{
7979
package = package ?? throw new ArgumentNullException(nameof(package));
8080

src/NuGet.Services.Validation.Orchestrator/NuGet.Services.Validation.Orchestrator.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@
5151
<Compile Include="DiskMailSender.cs" />
5252
<Compile Include="Configuration\EmailConfiguration.cs" />
5353
<Compile Include="Error.cs" />
54+
<Compile Include="Services\IEntityService.cs" />
5455
<Compile Include="IMessageService.cs" />
5556
<Compile Include="IPackageStatusProcessor.cs" />
57+
<Compile Include="Services\PackageValidationFileServiceMetadata.cs" />
58+
<Compile Include="Services\IValidationFileServiceMetadata.cs" />
59+
<Compile Include="ValidatingEntitites\IValidatingEntity.cs" />
5660
<Compile Include="IValidationOutcomeProcessor.cs" />
5761
<Compile Include="IValidationPackageFileService.cs" />
5862
<Compile Include="IValidationSetProcessor.cs" />
@@ -62,6 +66,7 @@
6266
<Compile Include="MessageService.cs" />
6367
<Compile Include="OrchestrationRunner.cs" />
6468
<Compile Include="Configuration\OrchestrationRunnerConfiguration.cs" />
69+
<Compile Include="Services\PackageEntityService.cs" />
6570
<Compile Include="PackageSigning\ProcessSignature\BaseSignatureProcessor.cs" />
6671
<Compile Include="PackageSigning\ProcessSignature\IProcessSignatureEnqueuer.cs" />
6772
<Compile Include="PackageSigning\ProcessSignature\PackageSignatureProcessor.cs" />
@@ -84,6 +89,7 @@
8489
<Compile Include="Telemetry\TelemetryService.cs" />
8590
<Compile Include="Configuration\ValidationConfiguration.cs" />
8691
<Compile Include="Configuration\ValidationConfigurationItem.cs" />
92+
<Compile Include="ValidatingEntitites\PackageValidatingEntity.cs" />
8793
<Compile Include="ValidationFailureBehavior.cs" />
8894
<Compile Include="ValidationPackageFileService.cs" />
8995
<Compile Include="ValidationSetProcessorResult.cs" />

0 commit comments

Comments
 (0)