public static IOfferRemoteOperations StartConDepNode(this IOfferRemoteOperations remote) { var op = new StartConDepNodeOperation(); OperationExecutor.Execute((RemoteBuilder)remote, op); return(remote); }
public override void Execute(ServerConfig server, IReportStatus status, ConDepSettings settings, CancellationToken token) { var canPingServer = CanPingServer(server); var startNodeOperation = new StartConDepNodeOperation(); Logger.Verbose(string.Format("Can {0}use ping for validation", canPingServer ? "" : "NOT ")); Logger.WithLogSection("Restarting", () => { Logger.Info(string.Format("Executing restart command on server {0}", server.Name)); var powershellExecutor = new PowerShellExecutor(); powershellExecutor.Execute(server, string.Format("cmd /c \"shutdown /r /t {0}\"", _delayInSeconds)); if (canPingServer) { Logger.Verbose("Waiting for ping to fail"); Logger.Info("Waiting for server to stop responding"); WaitForPing(WaitForStatus.Failure, server); Logger.Info("Server stopped responding"); Logger.Verbose("Waiting for ping to Succeed"); Logger.Info("Waiting for server to respond again"); WaitForPing(WaitForStatus.Success, server); Logger.Info("Server started to respond"); } else { Logger.Verbose("Waiting for WinRM to fail"); Logger.Info("Waiting for server to stop responding"); WaitForWinRm(WaitForStatus.Failure, server); Logger.Info("Server stopped responding"); } Logger.Verbose("Waiting for WinRM to succeed"); Logger.Info("Waiting for server to respond to PowerShell commands"); WaitForWinRm(WaitForStatus.Success, server); Logger.Info("Serve successfully responds to PowerShell commands"); Logger.Info("Computer successfully restarted"); Logger.WithLogSection("Starting ConDepNode", () => startNodeOperation.Execute(server, status, settings, token)); }); }