public String Post([FromBody] NewSessionInfo input) { SessionController sessionController = new SessionController(); List <Diagnoser> diagnosers = new List <Diagnoser>(sessionController.GetAllDiagnosers().Where(p => input.Diagnosers.Contains(p.Name))); String SessionId = ""; if (input.RunLive) { TimeSpan ts; if (!TimeSpan.TryParse(input.TimeSpan, out ts)) { ts = TimeSpan.FromMinutes(5); } if (input.CollectLogsOnly) { SessionId = sessionController.CollectLiveDataLogs(ts, diagnosers, null, input.Description).SessionId.ToString(); } else { SessionId = sessionController.TroubleshootLiveData(ts, diagnosers, null, input.Description).SessionId.ToString(); } } else { DateTime startTime = DateTime.Parse(input.StartTime); DateTime endTime = DateTime.Parse(input.EndTime); if (input.CollectLogsOnly) { SessionId = sessionController.CollectLogs(startTime, endTime, diagnosers, null, input.Description).SessionId.ToString(); } else { SessionId = sessionController.Troubleshoot(startTime, endTime, diagnosers, null, input.Description).SessionId.ToString(); } } return(SessionId); }
public HttpResponseMessage Post([FromBody] NewSessionInfo input) { //Simulate Delay //System.Threading.Thread.Sleep(20000); //Simulate Failure //return ""; String SessionId = String.Empty; string InstancesSubmitted = ""; try { SessionController sessionController = new SessionController(); sessionController.StartSessionRunner(); List <Diagnoser> diagnosers = new List <Diagnoser>(sessionController.GetAllDiagnosers().Where(p => input.Diagnosers.Contains(p.Name))); List <Instance> instances = new List <Instance>(); instances = input.Instances.Any() ? new List <Instance>(sessionController.GetAllRunningSiteInstances().Where(p => input.Instances.Contains(p.Name))) : new List <Instance>(sessionController.GetAllRunningSiteInstances()); InstancesSubmitted = string.Join(",", instances.Select(x => x.Name)); TimeSpan ts; if (!TimeSpan.TryParse(input.TimeSpan, out ts)) { ts = TimeSpan.FromMinutes(5); } if (input.RunLive) { if (input.CollectLogsOnly) { SessionId = sessionController.CollectLiveDataLogs(ts, diagnosers, false, instances, input.Description, input.BlobSasUri).SessionId.ToString(); } else { SessionId = sessionController.TroubleshootLiveData(ts, diagnosers, false, instances, input.Description, input.BlobSasUri).SessionId.ToString(); } } else { if (string.IsNullOrEmpty(input.StartTime)) { throw new ArgumentNullException("When RunLive is false or not specified, StartTime must be provided"); } DateTime startTime = DateTime.Parse(input.StartTime); //startTime = DateTime.SpecifyKind(startTime, DateTimeKind.Utc); if (startTime > DateTime.UtcNow) { DateTime endTime = startTime + ts; if (input.CollectLogsOnly) { SessionId = sessionController.CollectLogs(startTime, endTime, diagnosers, false, null, input.Description, input.BlobSasUri).SessionId.ToString(); } else { SessionId = sessionController.Troubleshoot(startTime, endTime, diagnosers, false, null, input.Description, input.BlobSasUri).SessionId.ToString(); } } else { if (input.CollectLogsOnly) { SessionId = sessionController.CollectLiveDataLogs(ts, diagnosers, false, instances, input.Description, input.BlobSasUri).SessionId.ToString(); } else { SessionId = sessionController.TroubleshootLiveData(ts, diagnosers, false, instances, input.Description, input.BlobSasUri).SessionId.ToString(); } } } } catch (Exception ex) { //log to Kusto and re-throw (it will be taken care in support API) Logger.LogErrorEvent("Encountered exception while submitting session", ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, $"Encountered exception {ex.Message} while submitting session")); } return(Request.CreateResponse(HttpStatusCode.OK, SessionId)); }