public virtual async Task <string> runAction(IDurableOrchestrationClient starter, ILogger log) { var entLookup = Environment.GetEnvironmentVariable("LCU-ENTERPRISE-LOOKUP"); try { var listInstanceQuery = new OrchestrationStatusQueryCondition() { PageSize = 1000, RuntimeStatus = new[] { OrchestrationRuntimeStatus.Running, OrchestrationRuntimeStatus.Pending } }; var instances = await starter.ListInstancesAsync(listInstanceQuery, new System.Threading.CancellationToken()); var running = new HashSet <string>(instances.DurableOrchestrationState.Select(instance => instance.InstanceId)); var terminateTasks = running.Select(instanceId => { return(starter.TerminateAsync(instanceId, "Cleanup")); }); await Task.WhenAll(terminateTasks); while (running.Count > 0) { var results = await Task.WhenAll(instances.DurableOrchestrationState.Select(instance => starter.GetStatusAsync(instance.InstanceId))); foreach (var status in results) { // Remove any terminated or completed instances from the hashset if (status != null && status.RuntimeStatus != OrchestrationRuntimeStatus.Pending && status.RuntimeStatus != OrchestrationRuntimeStatus.Running) { running.Remove(status.InstanceId); } } await Task.Delay(TimeSpan.FromMilliseconds(1000)); } var instanceId = await starter.StartAction("RenewCertificatesOrchestration", new StateDetails() { EnterpriseLookup = entLookup }, new ExecuteActionRequest() { Arguments = new { EnterpriseLookup = entLookup }.JSONConvert <MetadataModel>() }, log); return(instanceId); } catch (Exception ex) { return(null); } }
public virtual async Task <IActionResult> Run([HttpTrigger] HttpRequest req, ILogger log, [DurableClient] IDurableOrchestrationClient starter, [SignalR(HubName = UserManagementState.HUB_NAME)] IAsyncCollector <SignalRMessage> signalRMessages, [Blob("state-api/{headers.lcu-ent-api-key}/{headers.lcu-hub-name}/{headers.x-ms-client-principal-id}/{headers.lcu-state-key}", FileAccess.ReadWrite)] CloudBlockBlob stateBlob) { await initializeBoot(req, log, signalRMessages, stateBlob); return(await starter.StartAction("BootOrganizationOrchestration", req, log)); }
public virtual async Task <string> runAction(IDurableOrchestrationClient starter, ILogger log) { var entLookup = Environment.GetEnvironmentVariable("LCU-ENTERPRISE-LOOKUP"); try { var instanceId = await starter.StartAction("ValidatePointQueryLimitsOrchestration", new StateDetails() { EnterpriseLookup = entLookup }, new ExecuteActionRequest() { Arguments = new { EnterpriseLookup = entLookup }.JSONConvert <MetadataModel>() }, log); return(instanceId); } catch (Exception ex) { return(null); } }