コード例 #1
0
        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...
            }
        }
コード例 #2
0
        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) { }
        }
コード例 #3
0
        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
        }