Skip to content

Commit 8b84f3e

Browse files
authored
Revert "Remove unnecessary Docker login from CleanAcrImagesCommand (#2044)"
This reverts commit fb308a5.
1 parent 12bc96e commit 8b84f3e

2 files changed

Lines changed: 28 additions & 18 deletions

File tree

src/ImageBuilder.Tests/CleanAcrImagesCommandTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public async Task StagingRepos()
5454
IAcrClientFactory acrClientFactory = CreateAcrClientFactory(AcrName, acrClientMock.Object);
5555

5656
CleanAcrImagesCommand command = new(
57-
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
57+
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
5858
command.Options.RegistryName = AcrName;
5959
command.Options.RepoName = "build-staging/*";
6060
command.Options.Action = CleanAcrImagesAction.Delete;
@@ -121,7 +121,7 @@ public async Task PublicNightlyRepos()
121121
AcrName, [repo1ContentClient, repo2ContentClient, repo3ContentClient, repo4ContentClient]);
122122

123123
CleanAcrImagesCommand command = new(
124-
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
124+
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
125125
command.Options.RegistryName = AcrName;
126126
command.Options.RepoName = "public/dotnet/*nightly/*";
127127
command.Options.Action = CleanAcrImagesAction.PruneDangling;
@@ -166,7 +166,7 @@ public async Task DeleteEmptyTestRepo()
166166
IAcrClientFactory acrClientFactory = CreateAcrClientFactory(AcrName, acrClientMock.Object);
167167

168168
CleanAcrImagesCommand command = new(
169-
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
169+
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
170170
command.Options.RegistryName = AcrName;
171171
command.Options.RepoName = "test/*";
172172
command.Options.Action = CleanAcrImagesAction.PruneAll;
@@ -205,7 +205,7 @@ public async Task DeleteAllExpiredImagesTestRepo()
205205
IAcrClientFactory acrClientFactory = CreateAcrClientFactory(AcrName, acrClientMock.Object);
206206

207207
CleanAcrImagesCommand command = new CleanAcrImagesCommand(
208-
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
208+
acrClientFactory, Mock.Of<IAcrContentClientFactory>(), Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
209209
command.Options.RegistryName = AcrName;
210210
command.Options.RepoName = "test/*";
211211
command.Options.Action = CleanAcrImagesAction.PruneAll;
@@ -254,7 +254,7 @@ public async Task TestRepos()
254254
IAcrContentClientFactory acrContentClientFactory = CreateAcrContentClientFactory(AcrName, [repo1ContentClientMock, repo2ContentClientMock]);
255255

256256
CleanAcrImagesCommand command = new CleanAcrImagesCommand(
257-
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
257+
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
258258
command.Options.RegistryName = AcrName;
259259
command.Options.RepoName = "test/*";
260260
command.Options.Action = CleanAcrImagesAction.PruneAll;
@@ -311,7 +311,7 @@ public async Task DeleteEolImages()
311311
Mock<ILifecycleMetadataService> lifecycleMetadataServiceMock = CreateLifecycleMetadataServiceMock(age, repo1Name);
312312

313313
CleanAcrImagesCommand command = new CleanAcrImagesCommand(
314-
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), lifecycleMetadataServiceMock.Object, Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
314+
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), lifecycleMetadataServiceMock.Object, Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
315315
command.Options.RegistryName = AcrName;
316316
command.Options.RepoName = "test/*";
317317
command.Options.Action = CleanAcrImagesAction.PruneEol;
@@ -361,7 +361,7 @@ public async Task ExcludedImages()
361361
AcrName, [repo1ContentClient, repo2ContentClient]);
362362

363363
CleanAcrImagesCommand command = new(
364-
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
364+
acrClientFactory, acrContentClientFactory, Mock.Of<ILogger<CleanAcrImagesCommand>>(), Mock.Of<ILifecycleMetadataService>(), Mock.Of<IRegistryCredentialsProvider>(), Microsoft.Extensions.Options.Options.Create(new PublishConfiguration()));
365365
command.Options.RegistryName = AcrName;
366366
command.Options.RepoName = "public/dotnet/nightly/*";
367367
command.Options.Action = CleanAcrImagesAction.PruneAll;

src/ImageBuilder/Commands/CleanAcrImagesCommand.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class CleanAcrImagesCommand : Command<CleanAcrImagesOptions, CleanAcrImag
2525
private readonly IAcrContentClientFactory _acrContentClientFactory;
2626
private readonly ILogger<CleanAcrImagesCommand> _logger;
2727
private readonly ILifecycleMetadataService _lifecycleMetadataService;
28+
private readonly IRegistryCredentialsProvider _registryCredentialsProvider;
2829
private readonly PublishConfiguration _publishConfig;
2930

3031
private const int MaxConcurrentDeleteRequestsPerRepo = 5;
@@ -34,12 +35,14 @@ public CleanAcrImagesCommand(
3435
IAcrContentClientFactory acrContentClientFactory,
3536
ILogger<CleanAcrImagesCommand> logger,
3637
ILifecycleMetadataService lifecycleMetadataService,
38+
IRegistryCredentialsProvider registryCredentialsProvider,
3739
IOptions<PublishConfiguration> publishConfigOptions)
3840
{
3941
_acrClientFactory = acrClientFactory ?? throw new ArgumentNullException(nameof(acrClientFactory));
4042
_acrContentClientFactory = acrContentClientFactory;
4143
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
4244
_lifecycleMetadataService = lifecycleMetadataService ?? throw new ArgumentNullException(nameof(lifecycleMetadataService));
45+
_registryCredentialsProvider = registryCredentialsProvider ?? throw new ArgumentNullException(nameof(registryCredentialsProvider));
4346
_publishConfig = publishConfigOptions.Value;
4447
}
4548

@@ -67,18 +70,25 @@ public override async Task ExecuteAsync()
6770
List<string> deletedRepos = new List<string>();
6871
List<string> deletedImages = new List<string>();
6972

70-
IEnumerable<Task> cleanupTasks = await repositoryNames
71-
.Where(repoName => repoNameFilterRegex.IsMatch(repoName))
72-
.Select(repoName => acrClient.GetRepository(repoName))
73-
.Select(repo =>
73+
await _registryCredentialsProvider.ExecuteWithCredentialsAsync(
74+
isDryRun: false,
75+
async () =>
7476
{
75-
Acr acr = Acr.Parse(Options.RegistryName);
76-
IAcrContentClient acrContentClient = CreateAcrContentClient(acr, repo.Name);
77-
return ProcessRepoAsync(acrClient, acrContentClient, repo, deletedRepos, deletedImages);
78-
})
79-
.ToArrayAsync();
80-
81-
await Task.WhenAll(cleanupTasks);
77+
IEnumerable<Task> cleanupTasks = await repositoryNames
78+
.Where(repoName => repoNameFilterRegex.IsMatch(repoName))
79+
.Select(repoName => acrClient.GetRepository(repoName))
80+
.Select(repo =>
81+
{
82+
Acr acr = Acr.Parse(Options.RegistryName);
83+
IAcrContentClient acrContentClient = CreateAcrContentClient(acr, repo.Name);
84+
return ProcessRepoAsync(acrClient, acrContentClient, repo, deletedRepos, deletedImages);
85+
})
86+
.ToArrayAsync();
87+
88+
await Task.WhenAll(cleanupTasks);
89+
},
90+
Options.CredentialsOptions,
91+
registryName: Options.RegistryName);
8292

8393
await LogSummaryAsync(acrClient, deletedRepos, deletedImages);
8494
}

0 commit comments

Comments
 (0)