public async Task OchestrateSubscriptionCleanUp([OrchestrationTrigger] IDurableOrchestrationContext context) { var logger = context.CreateReplaySafeLogger(_logger); if (context is null) { throw new ArgumentNullException(nameof(context)); } logger.LogDebug("Getting resource groups"); var resourceGroupNames = await context.CallActivityAsync <IEnumerable <string> >(nameof(GetResourceGroupNames), null).ConfigureAwait(true); var deletedResourceGroupNames = new List <string>(); foreach (var name in resourceGroupNames) { logger.LogDebug("Calling delete function on {resourceGroupName}", name); if (await context.CallActivityAsync <bool>(nameof(DeleteIfNotLocked), name).ConfigureAwait(true)) { deletedResourceGroupNames.Add(name); } } var slackContext = new SlackReportingContext { DeletedResourceGroups = deletedResourceGroupNames }; await context.CallActivityAsync(nameof(ReportToSlack), slackContext).ConfigureAwait(true); }
public async Task ReportToSlack([ActivityTrigger] SlackReportingContext slackReportingContext) { if (slackReportingContext is null) { throw new ArgumentNullException(nameof(slackReportingContext)); } var context = new MessageUtil.MessageContext { DeletedResourceGroups = slackReportingContext.DeletedResourceGroups, WasSimulated = _cleanupConfiguration.Simulate }; var message = MessageUtil.CreateDeleteInformationMessage(_cleanupConfiguration.SlackChannel, context); await _slackClient.PostMessage(message).ConfigureAwait(false); }