Skip to content

Commit 445430c

Browse files
Implement status summary polling from worker
1 parent 4974638 commit 445430c

File tree

6 files changed

+45
-8
lines changed

6 files changed

+45
-8
lines changed

src/Certify.Core/Management/CertifyManager/CertifyManager.ManagedCertificates.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public async Task<ManagedCertificateSearchResult> GetManagedCertificateResults(M
158158
summary.Error = ms.Count(c => c.Health == ManagedCertificateHealth.Error);
159159
summary.Warning = ms.Count(c => c.Health == ManagedCertificateHealth.Warning);
160160
summary.AwaitingUser = ms.Count(c => c.Health == ManagedCertificateHealth.AwaitingUser);
161-
summary.NoCertificate = ms.Count(c => c.CertificatePath == null);
161+
summary.NoCertificate = ms.Count(c => c.DateStart == null);
162162

163163
// count items with invalid config (e.g. multiple primary domains)
164164
summary.InvalidConfig = ms.Count(c => c.DomainOptions.Count(d => d.IsPrimaryDomain) > 1);

src/Certify.Server/Certify.Server.Hub.Api/Controllers/internal/HubController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public async Task<IActionResult> GetHubManagedItems(string? instanceId, string?
8787
DateRenewed = i.DateRenewed,
8888
DateExpiry = i.DateExpiry,
8989
Comments = i.Comments ?? "",
90-
Status = i.LastRenewalStatus?.ToString() ?? "",
90+
Status = i.Health.ToString(),
9191
DateRetrieved = i.DateRetrieved,
9292
HasCertificate = !string.IsNullOrEmpty(i.CertificatePath)
9393
};

src/Certify.Server/Certify.Server.Hub.Api/Controllers/v1/CertificateController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public async Task<IActionResult> GetManagedCertificates(string? keyword, int? pa
204204
DateRenewed = i.DateRenewed,
205205
DateExpiry = i.DateExpiry,
206206
Comments = i.Comments ?? "",
207-
Status = i.LastRenewalStatus?.ToString() ?? "",
207+
Status = i.Health.ToString(),
208208
HasCertificate = !string.IsNullOrEmpty(i.CertificatePath)
209209
}).OrderBy(a => a.Title);
210210

src/Certify.Server/Certify.Server.Hub.Api/Services/ManagementAPI.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,22 @@ private async Task SendCommandWithNoResult(string instanceId, InstanceCommandReq
146146
return await PerformInstanceCommandTaskWithResult<ManagedCertificate?>(instanceId, args, ManagementHubCommands.GetManagedItem);
147147
}
148148

149+
/// <summary>
150+
/// Issue request for updated status summary from this instance
151+
/// </summary>
152+
/// <param name="instanceId"></param>
153+
/// <param name="currentAuthContext"></param>
154+
/// <returns></returns>
155+
public async Task RefreshManagedCertificateSummary(string instanceId, AuthContext? currentAuthContext)
156+
{
157+
var args = new KeyValuePair<string, string>[] {
158+
new("instanceId", instanceId)
159+
};
160+
161+
var result = await PerformInstanceCommandTaskWithResult<StatusSummary?>(instanceId, args, ManagementHubCommands.GetStatusSummary);
162+
_mgmtStateProvider.UpdateInstanceStatusSummary(instanceId, result);
163+
}
164+
149165
/// <summary>
150166
/// Exports a managed certificate from the target instance in the specified format.
151167
/// </summary>

src/Certify.Server/Certify.Server.Hub.Api/Services/ManagementWorker.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ public class ManagementWorker : IHostedService, IDisposable
1313
private Timer? _timer = null;
1414
IHubContext<InstanceManagementHub> _hubContext;
1515
IInstanceManagementStateProvider _stateProvider;
16+
17+
private ManagementAPI _mgmtAPI;
18+
1619
private int _updateFrequency = 10;
1720
private string _serviceName = "[Management Worker]";
1821

@@ -22,11 +25,12 @@ public class ManagementWorker : IHostedService, IDisposable
2225
/// <param name="logger"></param>
2326
/// <param name="hubContext"></param>
2427
/// <param name="stateProvider"></param>
25-
public ManagementWorker(ILogger<ManagementWorker> logger, IHubContext<InstanceManagementHub> hubContext, IInstanceManagementStateProvider stateProvider)
28+
public ManagementWorker(ILogger<ManagementWorker> logger, IHubContext<InstanceManagementHub> hubContext, IInstanceManagementStateProvider stateProvider, ManagementAPI mgmtAPI)
2629
{
2730
_logger = logger;
2831
_hubContext = hubContext;
2932
_stateProvider = stateProvider;
33+
_mgmtAPI = mgmtAPI;
3034
}
3135

3236
/// <summary>
@@ -69,6 +73,11 @@ private void DoWork(object? state)
6973
{
7074
var instances = _stateProvider.GetConnectedInstances();
7175
_logger.LogInformation("{svc} connected instances: {count}", _serviceName, instances.Count());
76+
77+
foreach (var instance in instances)
78+
{
79+
_mgmtAPI.RefreshManagedCertificateSummary(instance.InstanceId, null);
80+
}
7281
}
7382

7483
/// <summary>

src/Certify.Server/Certify.Server.HubService/Services/DirectInstanceManagementHub.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
11
using Certify.Management;
22
using Certify.Models.Hub;
33
using Certify.Models.Reporting;
4+
using Certify.Server.Hub.Api.Services;
5+
using Certify.Server.Hub.Api.SignalR;
46
using Certify.Server.Hub.Api.SignalR.ManagementHub;
7+
using Microsoft.AspNetCore.SignalR;
58

69
namespace Certify.Server.HubService.Services
710
{
11+
12+
/// <summary>
13+
/// Instance mgmt hub which talks directly to the in process backend certify core service, skipping HTTP API layer and signalr
14+
/// </summary>
815
public class DirectInstanceManagementHub : IInstanceManagementHub
916
{
1017
private IInstanceManagementStateProvider _stateProvider;
1118
private ILogger<DirectInstanceManagementHub> _logger;
1219
private ICertifyManager _certifyManager;
13-
public DirectInstanceManagementHub(ILogger<DirectInstanceManagementHub> logger, IInstanceManagementStateProvider stateProvider, ICertifyManager certifyManager)
20+
private IHubContext<UserInterfaceStatusHub> _uiStatusHub;
21+
private ManagementAPI _mgmtAPI;
22+
public DirectInstanceManagementHub(ILogger<DirectInstanceManagementHub> logger, IInstanceManagementStateProvider stateProvider, ICertifyManager certifyManager, IHubContext<UserInterfaceStatusHub> uiStatusHub, Server.Hub.Api.Services.ManagementAPI mgmtAPI)
1423
{
1524
_stateProvider = stateProvider;
1625
_logger = logger;
1726
_certifyManager = certifyManager;
27+
_uiStatusHub = uiStatusHub;
28+
_mgmtAPI = mgmtAPI;
29+
1830
}
1931

2032
/// <summary>
@@ -114,16 +126,16 @@ public Task ReceiveCommandResult(InstanceCommandResult result)
114126
// item was not requested, queue for processing
115127
if (result.CommandType == ManagementHubCommands.NotificationUpdatedManagedItem)
116128
{
117-
//_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, System.Text.Json.JsonSerializer.Deserialize<Models.ManagedCertificate>(result.Value));
129+
_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendManagedCertificateUpdateMsg, System.Text.Json.JsonSerializer.Deserialize<Models.ManagedCertificate>(result.Value));
118130
}
119131
else if (result.CommandType == ManagementHubCommands.NotificationManagedItemRequestProgress)
120132
{
121-
//_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendProgressStateMsg, System.Text.Json.JsonSerializer.Deserialize<Models.RequestProgressState>(result.Value));
133+
_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendProgressStateMsg, System.Text.Json.JsonSerializer.Deserialize<Models.RequestProgressState>(result.Value));
122134
}
123135
else if (result.CommandType == ManagementHubCommands.NotificationRemovedManagedItem)
124136
{
125137
// deleted :TODO
126-
//_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendMsg, $"Deleted item {result.Value}");
138+
_uiStatusHub.Clients.All.SendAsync(Providers.StatusHubMessages.SendMsg, $"Deleted item {result.Value}");
127139
}
128140
}
129141
}

0 commit comments

Comments
 (0)