public static void HostStateChanged(this ILogger logger, ScriptHostState previousHostState, ScriptHostState newHostState) { var newState = newHostState.ToString(); var previousState = previousHostState.ToString(); _hostStateChanged(logger, previousState, newState, null); }
private async Task AwaitHostStateAsync(ScriptHostState state) { await TestHelpers.Await(async() => { var response = await GetHostStatusAsync(); var hostStatus = response.Content.ReadAsAsync <HostStatus>(); return(string.Compare(hostStatus.Result.State, state.ToString(), StringComparison.OrdinalIgnoreCase) == 0); }); }
public async Task <IActionResult> Resume([FromServices] IScriptHostManager scriptHostManager) { try { await _resumeSemaphore.WaitAsync(); ScriptHostState currentState = scriptHostManager.State; _logger.LogDebug($"Received request to resume a draining host - host status: {currentState.ToString()}"); if (currentState != ScriptHostState.Running || !Utility.TryGetHostService(scriptHostManager, out IDrainModeManager drainModeManager)) { _logger.LogDebug("The host is not in a state where we can resume."); return(StatusCode(StatusCodes.Status409Conflict)); } _logger.LogDebug($"Drain mode enabled: {drainModeManager.IsDrainModeEnabled}"); if (drainModeManager.IsDrainModeEnabled) { _logger.LogDebug("Starting a new host"); await scriptHostManager.RestartHostAsync(); } var status = new ResumeStatus { State = scriptHostManager.State }; return(Ok(status)); } finally { _resumeSemaphore.Release(); } }