private void StartOrConnectToDeployment(Deployment deployment) { Log.Print(LogLevel.Info, $"Deployment {deployment.Name}, Status {deployment.Status}."); var request = DeploymentModifier.GetGetDeploymentRequest(deployment.Id, workerConfig.ProjectName); while (deployment.Status == Deployment.Types.Status.Starting || deployment.Status == Deployment.Types.Status.Stopping) { // Wait before checking the deployment status again. Task.Delay(TaskDelay).Wait(); deployment = DeploymentModifier.GetDeployment(request); } switch (deployment.Status) { case Deployment.Types.Status.Running: ConnectToDeployment(deployment); break; case Deployment.Types.Status.Stopped: StartDeployment(deployment.Name); break; case Deployment.Types.Status.Unknown: case Deployment.Types.Status.Error: Log.Print(LogLevel.Warn, $"The deployment {deployment.Name} is in an unrecoverable state ({deployment.Status}). Trying to restart it.", serviceConnection); DeploymentModifier.StopDeployment(deployment); Task.Delay(TaskDelay).Wait(); StartOrConnectToDeployment(deployment); break; } }
private void UpdateDeploymentStatus(Improbable.Session.Status status) { DeploymentModifier.UpdateDeploymentTag(request, Tags.Status, status.ToString().ToLower()); if (status == Improbable.Session.Status.STOPPED) { var deployment = DeploymentModifier.GetDeployment(request); DeploymentModifier.StopDeployment(deployment); } }