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

Commit f24a663

Browse files
authored
Merge pull request #386 from NuGet/dev
[ReleasePrep][2018.03.22]RI of dev into master
2 parents a8fc313 + e01c553 commit f24a663

121 files changed

Lines changed: 4042 additions & 1239 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.

NuGet.Jobs.sln

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gallery.Maintenance", "src\
7373
EndProject
7474
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CopyAzureContainer", "src\CopyAzureContainer\CopyAzureContainer.csproj", "{A07F7D0C-F269-43D5-A812-3ABC47090885}"
7575
EndProject
76-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SnapshotAzureBlob", "SnapshotAzureBlob\SnapshotAzureBlob.csproj", "{ED2D370C-D921-433A-A0B9-A601F936EDD3}"
77-
EndProject
7876
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.Helper", "src\Validation.Helper\Validation.Helper.csproj", "{305FB2C1-01FD-413D-B788-7B85BAD85A41}"
7977
EndProject
8078
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.Helper.Tests", "tests\Validation.Helper.Tests\Validation.Helper.Tests.csproj", "{8336BEBE-EC6A-4E40-A1C9-8C34A507E62D}"
@@ -97,10 +95,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.Common.Tests", "
9795
EndProject
9896
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.Core", "src\Validation.PackageSigning.Core\Validation.PackageSigning.Core.csproj", "{91C060DA-736F-4DA9-A57F-CB3AC0E6CB10}"
9997
EndProject
100-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ExtractAndValidateSignature", "src\Validation.PackageSigning.ExtractAndValidateSignature\Validation.PackageSigning.ExtractAndValidateSignature.csproj", "{DD043977-6BCD-475A-BEE2-8C34309EC622}"
101-
EndProject
102-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ExtractAndValidateSignature.Tests", "tests\Validation.PackageSigning.ExtractAndValidateSignature.Tests\Validation.PackageSigning.ExtractAndValidateSignature.Tests.csproj", "{26435822-8938-48C9-96FD-0DCCF8F7CE00}"
103-
EndProject
10498
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ValidateCertificate", "src\Validation.PackageSigning.ValidateCertificate\Validation.PackageSigning.ValidateCertificate.csproj", "{A245E448-8AE0-452B-9338-8C0E0B637D72}"
10599
EndProject
106100
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ValidateCertificate.Tests", "tests\Validation.PackageSigning.ValidateCertificate.Tests\Validation.PackageSigning.ValidateCertificate.Tests.csproj", "{5ACE7756-F8D0-4D90-9957-872DE4A1381E}"
@@ -113,6 +107,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.Common.Job", "sr
113107
EndProject
114108
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageHash", "src\PackageHash\PackageHash.csproj", "{40843020-6F0A-48F0-AC28-42FFE3A5C21E}"
115109
EndProject
110+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.Common.Job.Tests", "tests\Validation.Common.Job.Tests\Validation.Common.Job.Tests.csproj", "{430F63C7-20C2-4872-AC3E-DDE846E50AA4}"
111+
EndProject
112+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ProcessSignature", "src\Validation.PackageSigning.ProcessSignature\Validation.PackageSigning.ProcessSignature.csproj", "{DD043977-6BCD-475A-BEE2-8C34309EC622}"
113+
EndProject
114+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SnapshotAzureBlob", "src\SnapshotAzureBlob\SnapshotAzureBlob.csproj", "{ED2D370C-D921-433A-A0B9-A601F936EDD3}"
115+
EndProject
116+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Validation.PackageSigning.ProcessSignature.Tests", "tests\Validation.PackageSigning.ProcessSignature.Tests\Validation.PackageSigning.ProcessSignature.Tests.csproj", "{26435822-8938-48C9-96FD-0DCCF8F7CE00}"
117+
EndProject
116118
Global
117119
GlobalSection(SolutionConfigurationPlatforms) = preSolution
118120
Debug|Any CPU = Debug|Any CPU
@@ -209,10 +211,6 @@ Global
209211
{A07F7D0C-F269-43D5-A812-3ABC47090885}.Debug|Any CPU.Build.0 = Debug|Any CPU
210212
{A07F7D0C-F269-43D5-A812-3ABC47090885}.Release|Any CPU.ActiveCfg = Release|Any CPU
211213
{A07F7D0C-F269-43D5-A812-3ABC47090885}.Release|Any CPU.Build.0 = Release|Any CPU
212-
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
213-
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
214-
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
215-
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Release|Any CPU.Build.0 = Release|Any CPU
216214
{305FB2C1-01FD-413D-B788-7B85BAD85A41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
217215
{305FB2C1-01FD-413D-B788-7B85BAD85A41}.Debug|Any CPU.Build.0 = Debug|Any CPU
218216
{305FB2C1-01FD-413D-B788-7B85BAD85A41}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -257,14 +255,6 @@ Global
257255
{91C060DA-736F-4DA9-A57F-CB3AC0E6CB10}.Debug|Any CPU.Build.0 = Debug|Any CPU
258256
{91C060DA-736F-4DA9-A57F-CB3AC0E6CB10}.Release|Any CPU.ActiveCfg = Release|Any CPU
259257
{91C060DA-736F-4DA9-A57F-CB3AC0E6CB10}.Release|Any CPU.Build.0 = Release|Any CPU
260-
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
261-
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Debug|Any CPU.Build.0 = Debug|Any CPU
262-
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Release|Any CPU.ActiveCfg = Release|Any CPU
263-
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Release|Any CPU.Build.0 = Release|Any CPU
264-
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
265-
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Debug|Any CPU.Build.0 = Debug|Any CPU
266-
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Release|Any CPU.ActiveCfg = Release|Any CPU
267-
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Release|Any CPU.Build.0 = Release|Any CPU
268258
{A245E448-8AE0-452B-9338-8C0E0B637D72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
269259
{A245E448-8AE0-452B-9338-8C0E0B637D72}.Debug|Any CPU.Build.0 = Debug|Any CPU
270260
{A245E448-8AE0-452B-9338-8C0E0B637D72}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -289,6 +279,22 @@ Global
289279
{40843020-6F0A-48F0-AC28-42FFE3A5C21E}.Debug|Any CPU.Build.0 = Debug|Any CPU
290280
{40843020-6F0A-48F0-AC28-42FFE3A5C21E}.Release|Any CPU.ActiveCfg = Release|Any CPU
291281
{40843020-6F0A-48F0-AC28-42FFE3A5C21E}.Release|Any CPU.Build.0 = Release|Any CPU
282+
{430F63C7-20C2-4872-AC3E-DDE846E50AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
283+
{430F63C7-20C2-4872-AC3E-DDE846E50AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
284+
{430F63C7-20C2-4872-AC3E-DDE846E50AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
285+
{430F63C7-20C2-4872-AC3E-DDE846E50AA4}.Release|Any CPU.Build.0 = Release|Any CPU
286+
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
287+
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Debug|Any CPU.Build.0 = Debug|Any CPU
288+
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Release|Any CPU.ActiveCfg = Release|Any CPU
289+
{DD043977-6BCD-475A-BEE2-8C34309EC622}.Release|Any CPU.Build.0 = Release|Any CPU
290+
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
291+
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
292+
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Release|Any CPU.ActiveCfg = Release|Any CPU
293+
{ED2D370C-D921-433A-A0B9-A601F936EDD3}.Release|Any CPU.Build.0 = Release|Any CPU
294+
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
295+
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Debug|Any CPU.Build.0 = Debug|Any CPU
296+
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Release|Any CPU.ActiveCfg = Release|Any CPU
297+
{26435822-8938-48C9-96FD-0DCCF8F7CE00}.Release|Any CPU.Build.0 = Release|Any CPU
292298
EndGlobalSection
293299
GlobalSection(SolutionProperties) = preSolution
294300
HideSolutionNode = FALSE
@@ -316,7 +322,6 @@ Global
316322
{12719498-B87E-4E92-8C2B-30046393CF85} = {BEC3DF4D-9A04-42C8-8B4F-D42750202B4D}
317323
{EFF021CA-1BF4-4C09-BFB8-D314EAAD24D2} = {88725659-D5F8-49F9-9B7E-D87C5B9917D7}
318324
{A07F7D0C-F269-43D5-A812-3ABC47090885} = {FA5644B5-4F08-43F6-86B3-039374312A47}
319-
{ED2D370C-D921-433A-A0B9-A601F936EDD3} = {FA5644B5-4F08-43F6-86B3-039374312A47}
320325
{305FB2C1-01FD-413D-B788-7B85BAD85A41} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
321326
{8336BEBE-EC6A-4E40-A1C9-8C34A507E62D} = {6A776396-02B1-475D-A104-26940ADB04AB}
322327
{BC9EA7CE-AD21-4D17-B581-F8ED8CBD7191} = {FA5644B5-4F08-43F6-86B3-039374312A47}
@@ -328,14 +333,16 @@ Global
328333
{A3B0B15D-22D9-4F1F-94C4-B24B28ECF632} = {6A776396-02B1-475D-A104-26940ADB04AB}
329334
{F9690B52-3C92-42A0-B41F-1A6040C2D2EE} = {6A776396-02B1-475D-A104-26940ADB04AB}
330335
{91C060DA-736F-4DA9-A57F-CB3AC0E6CB10} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
331-
{DD043977-6BCD-475A-BEE2-8C34309EC622} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
332-
{26435822-8938-48C9-96FD-0DCCF8F7CE00} = {6A776396-02B1-475D-A104-26940ADB04AB}
333336
{A245E448-8AE0-452B-9338-8C0E0B637D72} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
334337
{5ACE7756-F8D0-4D90-9957-872DE4A1381E} = {6A776396-02B1-475D-A104-26940ADB04AB}
335338
{2C5BE067-ADFD-49E3-BA9F-13A74436E5DB} = {6A776396-02B1-475D-A104-26940ADB04AB}
336339
{B4B7564A-965B-447B-927F-6749E2C08880} = {6A776396-02B1-475D-A104-26940ADB04AB}
337340
{FA87D075-A934-4443-8D0B-5DB32640B6D7} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
338341
{40843020-6F0A-48F0-AC28-42FFE3A5C21E} = {FA5644B5-4F08-43F6-86B3-039374312A47}
342+
{430F63C7-20C2-4872-AC3E-DDE846E50AA4} = {6A776396-02B1-475D-A104-26940ADB04AB}
343+
{DD043977-6BCD-475A-BEE2-8C34309EC622} = {678D7B14-F8BC-4193-99AF-2EE8AA390A02}
344+
{ED2D370C-D921-433A-A0B9-A601F936EDD3} = {FA5644B5-4F08-43F6-86B3-039374312A47}
345+
{26435822-8938-48C9-96FD-0DCCF8F7CE00} = {6A776396-02B1-475D-A104-26940ADB04AB}
339346
EndGlobalSection
340347
GlobalSection(ExtensibilityGlobals) = postSolution
341348
SolutionGuid = {284A7AC3-FB43-4F1F-9C9C-2AF0E1F46C2B}

build.ps1

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ Invoke-BuildStep 'Set version metadata in AssemblyInfo.cs' { `
107107
"$PSScriptRoot\src\NuGetCDNRedirect\Properties\AssemblyInfo.g.cs",
108108
"$PSScriptRoot\src\NuGet.Services.Validation.Orchestrator\Properties\AssemblyInfo.g.cs",
109109
"$PSScriptRoot\src\Stats.CollectAzureChinaCDNLogs\Properties\AssemblyInfo.g.cs",
110-
"$PSScriptRoot\src\Validation.PackageSigning.ExtractAndValidateSignature\Properties\AssemblyInfo.g.cs",
111-
"$PSScriptRoot\src\Validation.PackageSigning.ValidateCertificate\Properties\AssemblyInfo.g.cs"
110+
"$PSScriptRoot\src\Validation.PackageSigning.ProcessSignature\Properties\AssemblyInfo.g.cs",
111+
"$PSScriptRoot\src\Validation.PackageSigning.ValidateCertificate\Properties\AssemblyInfo.g.cs",
112+
"$PSScriptRoot\src\NuGet.Jobs.Common\Properties\AssemblyInfo.g.cs",
113+
"$PSScriptRoot\src\Validation.Common.Job\Properties\AssemblyInfo.g.cs"
112114

113115
$versionMetadata | ForEach-Object {
114116
Set-VersionInfo -Path $_ -Version $SimpleVersion -Branch $Branch -Commit $CommitSHA
@@ -155,8 +157,10 @@ Invoke-BuildStep 'Creating artifacts' {
155157
"src/NuGetCDNRedirect/NuGetCDNRedirect.csproj", `
156158
"src/NuGet.Services.Validation.Orchestrator/NuGet.Services.Validation.Orchestrator.csproj", `
157159
"src/Stats.CollectAzureChinaCDNLogs/Stats.CollectAzureChinaCDNLogs.csproj", `
158-
"src/Validation.PackageSigning.ExtractAndValidateSignature/Validation.PackageSigning.ExtractAndValidateSignature.csproj", `
159-
"src/Validation.PackageSigning.ValidateCertificate/Validation.PackageSigning.ValidateCertificate.csproj"
160+
"src/Validation.PackageSigning.ProcessSignature/Validation.PackageSigning.ProcessSignature.csproj", `
161+
"src/Validation.PackageSigning.ValidateCertificate/Validation.PackageSigning.ValidateCertificate.csproj", `
162+
"src/NuGet.Jobs.Common/NuGet.Jobs.Common.csproj", `
163+
"src/Validation.Common.Job/Validation.Common.Job.csproj"
160164

161165
Foreach ($Project in $Projects) {
162166
New-Package (Join-Path $PSScriptRoot "$Project") -Configuration $Configuration -BuildNumber $BuildNumber -Version $SemanticVersion -Branch $Branch -MSBuildVersion "$msBuildVersion"

src/NuGet.Jobs.Common/NuGet.Jobs.Common.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@
201201
<Compile Include="JobBase.cs" />
202202
<Compile Include="JobRunner.cs" />
203203
<Compile Include="Properties\AssemblyInfo.cs" />
204+
<Compile Include="Properties\AssemblyInfo.*.cs" />
204205
<Compile Include="StorageHelpers.cs" />
205206
<Compile Include="Strings.Designer.cs" />
206207
</ItemGroup>

src/NuGet.Jobs.Common/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,3 @@
1111
[assembly: AssemblyCopyright("Copyright © .NET Foundation 2015")]
1212
[assembly: ComVisible(false)]
1313
[assembly: Guid("6dc01e18-81b0-49b4-9976-4a3548c6a959")]
14-
[assembly: AssemblyVersion("1.0.0.0")]
15-
[assembly: AssemblyFileVersion("1.0.0.0")]

src/NuGet.Services.Validation.Orchestrator/Configuration/ConfigurationValidator.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ private void CheckPropertyValues()
6767
throw new ConfigurationErrorsException("Validation name cannot be empty");
6868
}
6969

70-
if (validationConfigurationItem.FailAfter == TimeSpan.Zero)
70+
if (validationConfigurationItem.TrackAfter == TimeSpan.Zero)
7171
{
72-
throw new ConfigurationErrorsException($"failAfter timeout must be set for validation {validationConfigurationItem.Name}");
72+
throw new ConfigurationErrorsException($"{nameof(validationConfigurationItem.TrackAfter)} must be set for validation {validationConfigurationItem.Name}");
7373
}
7474
}
7575
}
@@ -102,9 +102,7 @@ private void CheckUnknownValidators()
102102
{
103103
foreach (var validatorItem in _configuration.Validations)
104104
{
105-
// This method will throw if the validator does not exist.
106-
var validatorType = _validatorProvider.GetValidatorType(validatorItem.Name);
107-
if (validatorType == null)
105+
if (!_validatorProvider.IsValidator(validatorItem.Name))
108106
{
109107
throw new ConfigurationErrorsException("Validator implementation not found for " + validatorItem.Name);
110108
}
@@ -142,7 +140,7 @@ private void CheckForCyclesAndParallelProcessors()
142140
var processorNames = _configuration
143141
.Validations
144142
.Select(x => x.Name)
145-
.Where(x => typeof(IProcessor).IsAssignableFrom(_validatorProvider.GetValidatorType(x)))
143+
.Where(x => _validatorProvider.IsProcessor(x))
146144
.ToList();
147145

148146
TopologicalSort.Validate(_configuration.Validations, processorNames);

src/NuGet.Services.Validation.Orchestrator/Configuration/ValidationConfiguration.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,15 @@ public class ValidationConfiguration
3939
/// this window.
4040
/// </summary>
4141
public TimeSpan NewValidationRequestDeduplicationWindow { get; set; }
42+
43+
/// <summary>
44+
/// The threshold until which an email will be sent out due to a validation set taking too long.
45+
/// </summary>
46+
public TimeSpan ValidationSetNotificationTimeout { get; set; }
47+
48+
/// <summary>
49+
/// The threshold until a validation set is no longer processed.
50+
/// </summary>
51+
public TimeSpan TimeoutValidationSetAfter { get; set; }
4252
}
4353
}

src/NuGet.Services.Validation.Orchestrator/Configuration/ValidationConfigurationItem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ public class ValidationConfigurationItem
1717
public string Name { get; set; }
1818

1919
/// <summary>
20-
/// Timeout after which started validation is considered failed if it didn't produce any outcome
20+
/// Time after which a validation's processing time will be tracked. Use this to track validations that take too long.
2121
/// </summary>
22-
public TimeSpan FailAfter { get; set; }
22+
public TimeSpan TrackAfter { get; set; }
2323

2424
/// <summary>
2525
/// List of validation names that must finish before this validation can run

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public interface IMessageService
1010
void SendPackagePublishedMessage(Package package);
1111
void SendPackageValidationFailedMessage(Package package);
1212
void SendPackageSignedValidationFailedMessage(Package package);
13+
void SendPackageValidationTakingTooLongMessage(Package package);
1314
}
1415
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System.Threading.Tasks;
5+
using NuGetGallery;
6+
7+
namespace NuGet.Services.Validation.Orchestrator
8+
{
9+
/// <summary>
10+
/// This interface manages the state of gallery artifacts: gallery DB and packages container.
11+
/// </summary>
12+
public interface IPackageStatusProcessor
13+
{
14+
Task SetPackageStatusAsync(
15+
Package package,
16+
PackageValidationSet validationSet,
17+
PackageStatus packageStatus);
18+
}
19+
}

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

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,28 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5+
using System.IO;
56
using System.Threading.Tasks;
67
using NuGetGallery;
78

89
namespace NuGet.Services.Validation.Orchestrator
910
{
1011
public interface IValidationPackageFileService : ICorePackageFileService
1112
{
13+
/// <summary>
14+
/// Download the package content from the packages container to a temporary location on disk.
15+
/// </summary>
16+
/// <param name="package">The package metadata.</param>
17+
/// <returns>The package stream.</returns>
18+
Task<Stream> DownloadPackageFileToDiskAsync(Package package);
19+
20+
/// <summary>
21+
/// Backs up the package file from the location specific for the validation set.
22+
/// </summary>
23+
/// <param name="package">The package metadata.</param>
24+
/// <param name="validationSet">The validation set, containing validation set and package identifiers.</param>
25+
Task BackupPackageFileFromValidationSetPackageAsync(Package package, PackageValidationSet validationSet);
26+
1227
/// <summary>
1328
/// Copy a package from the validation container to a location specific for the validation set. This allows the
1429
/// validation set to have its own copy of the package to mutate (via <see cref="IProcessor"/>) and validate.
@@ -21,13 +36,19 @@ public interface IValidationPackageFileService : ICorePackageFileService
2136
/// validation set to have its own copy of the package to mutate (via <see cref="IProcessor"/>) and validate.
2237
/// </summary>
2338
/// <param name="validationSet">The validation set, containing validation set and package identifiers.</param>
24-
Task CopyPackageFileForValidationSetAsync(PackageValidationSet validationSet);
39+
/// <returns>The etag of the source package.</returns>
40+
Task<string> CopyPackageFileForValidationSetAsync(PackageValidationSet validationSet);
2541

2642
/// <summary>
2743
/// Copy a package from a location specific for the validation set to the packages container.
2844
/// </summary>
2945
/// <param name="validationSet">The validation set, containing validation set and package identifiers.</param>
30-
Task CopyValidationSetPackageToPackageFileAsync(PackageValidationSet validationSet);
46+
/// <param name="destAccessCondition">
47+
/// The access condition used for asserting the state of the destination file.
48+
/// </param>
49+
Task CopyValidationSetPackageToPackageFileAsync(
50+
PackageValidationSet validationSet,
51+
IAccessCondition destAccessCondition);
3152

3253
/// <summary>
3354
/// Copy a package from the validation container to the packages container.
@@ -36,6 +57,14 @@ public interface IValidationPackageFileService : ICorePackageFileService
3657
/// <param name="normalizedVersion">The normalized package version.</param>
3758
Task CopyValidationPackageToPackageFileAsync(string id, string normalizedVersion);
3859

60+
/// <summary>
61+
/// Copy a package URL to a location specific for the validation set.
62+
/// </summary>
63+
/// <param name="validationSet">The validation set.</param>
64+
/// <param name="srcPackageUrl">The source package URL.</param>
65+
/// <returns></returns>
66+
Task CopyPackageUrlForValidationSetAsync(PackageValidationSet validationSet, string srcPackageUrl);
67+
3968
/// <summary>
4069
/// Delete a package from a location specific for the validation set.
4170
/// </summary>

0 commit comments

Comments
 (0)