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

Commit 29bd10e

Browse files
committed
pr-fix: update w custom exn handling strategy
1 parent 3156f49 commit 29bd10e

File tree

2 files changed

+55
-32
lines changed

2 files changed

+55
-32
lines changed

src/Arcus.BackgroundJobs.AzureActiveDirectory/ClientSecretExpirationJob.cs

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -70,36 +70,52 @@ public ClientSecretExpirationJob(
7070
/// </returns>
7171
public async Task ExecuteAsync(CancellationToken stoppingToken)
7272
{
73-
_logger.LogTrace("Executing {Name}", nameof(ClientSecretExpirationJob));
74-
var graphServiceClient = new GraphServiceClient(new DefaultAzureCredential());
75-
_logger.LogTrace("Token retrieved, getting a list of applications with expired or about to expire secrets.");
76-
77-
var clientSecretExpirationInfoProvider = new ClientSecretExpirationInfoProvider(graphServiceClient, _logger);
78-
IEnumerable<AzureApplication> applications =
79-
await clientSecretExpirationInfoProvider.GetApplicationsWithPotentialExpiredSecrets(_options.UserOptions.ExpirationThreshold);
80-
81-
foreach (AzureApplication application in applications)
73+
try
8274
{
83-
var telemetryContext = new Dictionary<string, object>();
84-
telemetryContext.Add("KeyId", application.KeyId);
85-
telemetryContext.Add("ApplicationName", application.Name);
86-
telemetryContext.Add("RemainingValidDays", application.RemainingValidDays);
75+
_logger.LogTrace("Executing {Name}", nameof(ClientSecretExpirationJob));
76+
var graphServiceClient = new GraphServiceClient(new DefaultAzureCredential());
77+
_logger.LogTrace("Token retrieved, getting a list of applications with expired or about to expire secrets");
8778

88-
var eventType = ClientSecretExpirationEventType.ClientSecretAboutToExpire;
89-
if (application.RemainingValidDays < 0)
90-
{
91-
eventType = ClientSecretExpirationEventType.ClientSecretExpired;
92-
_logger.LogEvent($"The secret {application.KeyId} for Azure Active Directory application {application.Name} has expired.", telemetryContext);
93-
}
94-
else
79+
var clientSecretExpirationInfoProvider = new ClientSecretExpirationInfoProvider(graphServiceClient, _logger);
80+
IEnumerable<AzureApplication> applications =
81+
await clientSecretExpirationInfoProvider.GetApplicationsWithPotentialExpiredSecrets(_options.UserOptions.ExpirationThreshold);
82+
83+
foreach (AzureApplication application in applications)
9584
{
96-
_logger.LogEvent($"The secret {application.KeyId} for Azure Active Directory application {application.Name} will expire within {application.RemainingValidDays} days.", telemetryContext);
85+
ClientSecretExpirationEventType eventType = DetermineExpirationEventType(application);
86+
87+
CloudEvent @event = _options.UserOptions.CreateEvent(application, eventType, _options.UserOptions.EventUri);
88+
await _eventGridPublisher.PublishAsync(@event);
9789
}
90+
_logger.LogTrace("Executing {Name} finished", nameof(ClientSecretExpirationJob));
91+
}
92+
catch (Exception exception)
93+
{
94+
_logger.LogCritical(exception, "Could not correctly publish Azure EventGrid events for potential expired client secrets in the Azure Active Directory due to an exception");
95+
}
96+
}
97+
98+
private ClientSecretExpirationEventType DetermineExpirationEventType(AzureApplication application)
99+
{
100+
var telemetryContext = new Dictionary<string, object>
101+
{
102+
{ "KeyId", application.KeyId },
103+
{ "ApplicationName", application.Name },
104+
{ "RemainingValidDays", application.RemainingValidDays }
105+
};
98106

99-
CloudEvent @event = _options.UserOptions.CreateEvent(application, eventType, _options.UserOptions.EventUri);
100-
await _eventGridPublisher.PublishAsync(@event);
107+
var eventType = ClientSecretExpirationEventType.ClientSecretAboutToExpire;
108+
if (application.RemainingValidDays < 0)
109+
{
110+
eventType = ClientSecretExpirationEventType.ClientSecretExpired;
111+
_logger.LogEvent($"The secret {application.KeyId} for Azure Active Directory application {application.Name} has expired.", telemetryContext);
112+
}
113+
else
114+
{
115+
_logger.LogEvent($"The secret {application.KeyId} for Azure Active Directory application {application.Name} will expire within {application.RemainingValidDays} days.", telemetryContext);
101116
}
102-
_logger.LogTrace("Executing {Name} finished", nameof(ClientSecretExpirationJob));
117+
118+
return eventType;
103119
}
104120
}
105121
}

src/Arcus.BackgroundJobs.Databricks/DatabricksJobMetricsJob.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,24 @@ public DatabricksJobMetricsJob(
6565
/// </returns>
6666
public async Task ExecuteAsync(CancellationToken stoppingToken)
6767
{
68-
using (DatabricksClient client = await _options.CreateDatabricksClientAsync(_secretProvider))
69-
using (var databricksInfoProvider = new DatabricksInfoProvider(client, _logger))
68+
try
7069
{
71-
(DateTimeOffset start, DateTimeOffset end) = _options.DetermineNextTimeWindow();
70+
using (DatabricksClient client = await _options.CreateDatabricksClientAsync(_secretProvider))
71+
using (var databricksInfoProvider = new DatabricksInfoProvider(client, _logger))
72+
{
73+
(DateTimeOffset start, DateTimeOffset end) = _options.DetermineNextTimeWindow();
7274

73-
_logger.LogInformation(
74-
"Job monitor for Databricks is starting at {TriggerTime} for time windows {WindowStart} - {WindowEnd}",
75-
DateTimeOffset.UtcNow, start, end);
75+
_logger.LogInformation(
76+
"Job monitor for Databricks is starting at {TriggerTime} for time windows {WindowStart} - {WindowEnd}",
77+
DateTimeOffset.UtcNow, start, end);
7678

77-
string metricName = _options.UserOptions.MetricName;
78-
await databricksInfoProvider.MeasureJobOutcomesAsync(metricName, start, end);
79+
string metricName = _options.UserOptions.MetricName;
80+
await databricksInfoProvider.MeasureJobOutcomesAsync(metricName, start, end);
81+
}
82+
}
83+
catch (Exception exception)
84+
{
85+
_logger.LogCritical(exception, "Could not measure the finished Databricks jobs due to an exception");
7986
}
8087
}
8188
}

0 commit comments

Comments
 (0)