Skip to content

Commit 9055c76

Browse files
abrilgzzdanielluo-msft
authored andcommitted
Remove jobs from table entirely
1 parent d4603de commit 9055c76

File tree

21 files changed

+184
-607
lines changed

21 files changed

+184
-607
lines changed

Service/GroupMembershipManagement/Hosts/AzureMaintenance/Services/AzureMaintenanceService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ public async Task<List<SyncJob>> GetSyncJobsAsync()
5454
SyncStatus.NotOwnerOfDestinationGroup,
5555
SyncStatus.SecurityGroupNotFound,
5656
SyncStatus.ThresholdExceeded,
57-
SyncStatus.SubmissionRejected,
58-
SyncStatus.Removed);
57+
SyncStatus.SubmissionRejected);
5958

6059
return ApplyJobTriggerFilters(jobs).ToList();
6160
}

Service/GroupMembershipManagement/Hosts/WebApi/Services.WebApi/RemoveGMMHandler.cs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
3-
using Common.DependencyInjection;
4-
using Microsoft.AspNetCore.JsonPatch;
5-
using Microsoft.Extensions.Options;
3+
64
using Models;
75
using Repositories.Contracts;
86
using Services.Contracts;
97
using Services.Messages.Requests;
108
using Services.Messages.Responses;
11-
using Services.WebApi;
129
using System.Net;
13-
using WebApi.Models.DTOs;
10+
using LogMessage = Models.LogMessage;
1411

1512
namespace Services
1613
{
1714
public class RemoveGMMHandler : RequestHandlerBase<RemoveGMMRequest, RemoveGMMResponse>
1815
{
1916
private readonly IGraphGroupRepository _graphGroupRepository;
2017
private readonly IDatabaseSyncJobsRepository _syncJobRepository;
21-
private readonly PatchJobHandler _patchJobHandler;
18+
private readonly ILoggingRepository _loggingRepository;
2219

2320
public RemoveGMMHandler(ILoggingRepository loggingRepository,
2421
IGraphGroupRepository graphGroupRepository,
25-
IDatabaseSyncJobsRepository syncJobRepository,
26-
PatchJobHandler patchJobHandler) : base(loggingRepository)
22+
IDatabaseSyncJobsRepository syncJobRepository) : base(loggingRepository)
2723
{
2824
_graphGroupRepository = graphGroupRepository ?? throw new ArgumentNullException(nameof(graphGroupRepository));
2925
_syncJobRepository = syncJobRepository ?? throw new ArgumentNullException(nameof(syncJobRepository));
30-
_patchJobHandler = patchJobHandler ?? throw new ArgumentNullException(nameof(patchJobHandler));
26+
_loggingRepository = loggingRepository ?? throw new ArgumentNullException(nameof(loggingRepository));
3127
}
3228

3329
protected override async Task<RemoveGMMResponse> ExecuteCoreAsync(RemoveGMMRequest request)
@@ -51,25 +47,27 @@ protected override async Task<RemoveGMMResponse> ExecuteCoreAsync(RemoveGMMReque
5147
};
5248
}
5349

54-
var patchDocument = new JsonPatchDocument<SyncJobPatch>();
55-
patchDocument.Replace(e => e.Status, "Removed");
56-
57-
var patchJobRequest = new PatchJobRequest(true, request.UserIdentity, request.SyncJobId, patchDocument);
58-
var patchJobResponse = await _patchJobHandler.ExecuteAsync(patchJobRequest);
50+
try
51+
{
52+
await _syncJobRepository.DeleteSyncJobAsync(syncJob);
5953

60-
if (patchJobResponse.StatusCode != HttpStatusCode.OK)
54+
return new RemoveGMMResponse
55+
{
56+
StatusCode = HttpStatusCode.OK
57+
};
58+
} catch (Exception ex)
6159
{
60+
await _loggingRepository.LogMessageAsync(new LogMessage
61+
{
62+
Message = $"Error removing GMM from job:\n{ex.Message}",
63+
RunId = null
64+
});
65+
6266
return new RemoveGMMResponse
6367
{
64-
StatusCode = patchJobResponse.StatusCode,
65-
ErrorCode = patchJobResponse.ErrorCode
68+
StatusCode = HttpStatusCode.InternalServerError
6669
};
6770
}
68-
69-
return new RemoveGMMResponse
70-
{
71-
StatusCode = HttpStatusCode.OK
72-
};
7371
}
7472

7573
}

Service/GroupMembershipManagement/Hosts/WebApi/WebApi.Tests/JobDetailsControllerTests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ public void Initialize()
7171
return jobs.BuildMock();
7272
});
7373

74+
_syncJobRepository.Setup(x => x.DeleteSyncJobAsync(It.IsAny<SyncJob>()));
75+
7476
_getJobDetailsHandler = new GetJobDetailsHandler(_loggingRepository.Object,
7577
_syncJobRepository.Object,
7678
_graphGroupRepository.Object,
@@ -82,8 +84,7 @@ public void Initialize()
8284

8385
_removeGMMHandler = new RemoveGMMHandler(_loggingRepository.Object,
8486
_graphGroupRepository.Object,
85-
_syncJobRepository.Object,
86-
_patchJobHandler);
87+
_syncJobRepository.Object);
8788

8889
_jobDetailsController = new JobDetailsController(_getJobDetailsHandler, _removeGMMHandler, _patchJobHandler);
8990
}

Service/GroupMembershipManagement/Hosts/WebApi/WebApi/Configuration/MessageHandlerInjector.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public static IServiceCollection InjectMessageHandlers(this IServiceCollection s
3737

3838
services.AddTransient<IRequestHandler<PatchJobRequest, PatchJobResponse>, PatchJobHandler>();
3939
services.AddTransient<IRequestHandler<PostJobRequest, PostJobResponse>, PostJobHandler>();
40-
services.AddTransient<PatchJobHandler>();
4140
services.AddTransient<IRequestHandler<RemoveGMMRequest, RemoveGMMResponse>, RemoveGMMHandler>();
4241

4342
return services;

Service/GroupMembershipManagement/Hosts/WebApi/WebApi/Controllers/v1/Jobs/JobsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public JobsController(
3030
_postJobRequestHandler = postJobRequestHandler ?? throw new ArgumentNullException(nameof(postJobRequestHandler));
3131
}
3232

33-
[Authorize(Roles = Models.Roles.JOB_CREATOR + "," + Models.Roles.JOB_TENANT_READER)]
33+
[Authorize(Roles = Models.Roles.JOB_CREATOR + "," + Models.Roles.JOB_TENANT_READER + "," + Models.Roles.JOB_TENANT_WRITER)]
3434
[HttpGet()]
3535
public async Task<ActionResult<IEnumerable<SyncJob>>> GetJobsAsync(ODataQueryOptions<SyncJobModel> queryOptions)
3636
{

Service/GroupMembershipManagement/Models/SyncStatus.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public enum SyncStatus
3030
New = 22,
3131
DeveloperPaused = 23,
3232
PendingReview = 24,
33-
SubmissionRejected = 25,
34-
Removed = 26
33+
SubmissionRejected = 25
3534
}
3635
}

Service/GroupMembershipManagement/Repositories.Contracts/IDatabaseSyncJobsRepository.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public interface IDatabaseSyncJobsRepository
2323
Task UpdateSyncJobFromNotificationAsync(SyncJob job, SyncStatus status);
2424
Task UpdateSyncJobsAsync(IEnumerable<SyncJob> jobs, SyncStatus? status = null);
2525
Task DeleteSyncJobsAsync(IEnumerable<SyncJob> jobs);
26+
Task DeleteSyncJobAsync(SyncJob job);
2627
Task BatchUpdateSyncJobsAsync(List<SyncJob> jobs);
2728
}
2829
}

0 commit comments

Comments
 (0)