public void Start() { IsReady = false; try { _runbookNameCache.Clear(); Runbooks.Clear(); Credentials.Clear(); Schedules.Clear(); Variables.Clear(); Modules.Clear(); Connections.Clear(); Tags.Clear(); Service.Load(); foreach (var rb in Runbooks) { _runbookNameCache.Add((rb.Tag as RunbookModelProxy).RunbookName); } Execute.OnUIThread(() => _statusManager.SetText("")); } catch (NotSupportedException) { // Ignore for now... } }
public void AddToRunbooks(RunbookModelProxy runbook) { if (_runbookNameCache.Contains(runbook.RunbookName)) { return; } try { Execute.OnUIThread(() => { Runbooks.Add(new ResourceContainer(runbook.RunbookName, runbook, IconsDescription.Runbook)); if (!_runbookNameCache.Contains(runbook.RunbookName)) { _runbookNameCache.Add(runbook.RunbookName); } }); } catch (TaskCanceledException) { } }
public void TestRunbook() { #if !DEBUG try { #endif Connect(); View.Save(); var runbook = ActiveRunbook == null ? null : api.Runbooks.Where(x => x.RunbookID == ActiveRunbook.Id).First(); var path = View.ActiveFile; RunbookVersion runbookVersion; if (runbook == null) { runbookVersion = new RunbookVersion(); runbookVersion.TenantID = new Guid("00000000-0000-0000-0000-000000000000"); runbookVersion.IsDraft = true; api.AddToRunbookVersions(runbookVersion); } else { runbookVersion = api.RunbookVersions.Where(x => x.RunbookVersionID == runbook.DraftRunbookVersionID && x.IsDraft).FirstOrDefault(); } var baseStream = new StreamReader(path, Encoding.UTF8).BaseStream; ((DataServiceContext)api).SetSaveStream(runbookVersion, baseStream, true, "application/octet-stream", string.Empty); var response = api.SaveChanges().FirstOrDefault() as ChangeOperationResponse; if (runbook == null && response != null) { api.Execute <RunbookVersion>(((EntityDescriptor)response.Descriptor).EditLink).Count(); runbook = api.Runbooks.Where(x => x.RunbookID == runbookVersion.RunbookID).First(); RefreshRunbooks(); ActiveRunbook = Runbooks.First(x => x.Id == runbook.RunbookID); activeRunbooks[path] = runbook.RunbookID; } var parameters = RunbookParameters == null ? new List <NameValuePair>() : RunbookParameters.Where(x => !string.IsNullOrEmpty(x.Value)).Select(x => new NameValuePair { Name = x.Name, Value = SerializeValue(x) }).ToList(); var result = runbook.TestRunbook(api, parameters); Job job; short?errors = 0; var exception = ""; while (!(job = api.Jobs.Where(x => x.JobID == result).First()).EndTime.HasValue) { if (job.JobStatus == "Suspended") { errors = job.ErrorCount; exception = job.JobException; job.Stop(api); } Thread.Sleep(1000); } if (job.JobStatus != "Stopped") { errors = job.ErrorCount; exception = job.JobException; } var output = QueryHelpers.GetJobOutput(api, job); var message = string.Format("#### Started: {0} - Finished: {1} - Status: {2} - Errors: {5} ####\r\nError: {4}\r\nOutput: {3}\r\n########\r\n", job.StartTime, job.EndTime, job.JobStatus, output, exception, errors); AppendOutput(message); #if !DEBUG } catch (Exception ex) { MessageBox.Show(GetErrorMessage(ex), "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } #endif }