Example #1
0
        public static SCOJobInstance[] GetRunbookJobInstances(String runbookPath, String runbookName)
        {
            OrchestratorContext context = GetOrchestratorContext();

            ArrayList jInstanceArrayList = new ArrayList();

            SCOJobInstance[] jInstances;

            var runbook = (from rb in context.Runbooks
                           where rb.Path == runbookPath &&
                           rb.Name == runbookName
                           select rb).FirstOrDefault();

            if (runbook == null)
            {
                var msg = string.Format(CultureInfo.InvariantCulture, "Runbook Not Found:  ", runbookPath);
                throw new Exception(msg);
            }

            var jobs = (from jb in context.Jobs
                        where jb.RunbookId == runbook.Id
                        select jb);

            if (jobs == null)
            {
                if (runbook == null)
                {
                    var msg = string.Format(CultureInfo.InvariantCulture, "Jobs not found for Runbook:  ", runbookPath);
                    throw new Exception(msg);
                }
            }
            foreach (Job j in jobs)
            {
                jInstanceArrayList.Add(GetJobDetails(j.Id));
            }

            jInstances = new SCOJobInstance[jInstanceArrayList.Count];
            jInstanceArrayList.CopyTo(jInstances);
            return(jInstances);
        }
Example #2
0
        public static SCOJobInstance StopRunbookJob(Guid JobId)
        {
            OrchestratorContext context = GetOrchestratorContext();

            var jobId = JobId;

            var job = (from j in context.Jobs
                       where j.Id == jobId
                       select j).FirstOrDefault();

            if (job == null)
            {
                var msg = string.Format(CultureInfo.InvariantCulture, "Job Not Found: ", jobId);
                throw new Exception(msg);
            }

            List <SCORunbookInstanceParameter> jobOutput = new List <SCORunbookInstanceParameter>();
            List <SCORunbookInstanceParameter> jobInput  = new List <SCORunbookInstanceParameter>();

            if (job.Status.Equals("Completed", StringComparison.OrdinalIgnoreCase))
            {
                // Get the return data
                var instances = context.RunbookInstances.Where(ri => ri.JobId == jobId);

                // For the non-monitor runbook job, there should be only one instance.
                foreach (var instance in instances)
                {
                    if (!instance.Status.Equals("Success", StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }

                    var outParameters = context.RunbookInstanceParameters.Where(
                        rip => rip.RunbookInstanceId == instance.Id && rip.Direction.Equals("Out", StringComparison.OrdinalIgnoreCase));

                    foreach (var parameter in outParameters)
                    {
                        SCORunbookInstanceParameter newParam = new SCORunbookInstanceParameter();
                        newParam.Name  = parameter.Name;
                        newParam.Value = parameter.Value;

                        jobOutput.Add(newParam);
                    }

                    var inParameters = context.RunbookInstanceParameters.Where(
                        rip => rip.RunbookInstanceId == instance.Id && rip.Direction.Equals("In", StringComparison.OrdinalIgnoreCase));

                    foreach (var parameter in inParameters)
                    {
                        SCORunbookInstanceParameter newParam = new SCORunbookInstanceParameter();
                        newParam.Name  = parameter.Name;
                        newParam.Value = parameter.Value;

                        jobInput.Add(newParam);
                    }
                }
            }
            else
            {
                // Get the return data
                var instances = context.RunbookInstances.Where(ri => ri.JobId == jobId);

                foreach (var instance in instances)
                {
                    var inParameters = context.RunbookInstanceParameters.Where(
                        rip => rip.RunbookInstanceId == instance.Id && rip.Direction.Equals("In", StringComparison.OrdinalIgnoreCase));

                    foreach (var parameter in inParameters)
                    {
                        SCORunbookInstanceParameter newParam = new SCORunbookInstanceParameter();
                        newParam.Name  = parameter.Name;
                        newParam.Value = parameter.Value;

                        jobInput.Add(newParam);
                    }
                }

                // Set <Status> to "Canceled" (this is what stops the Job)
                job.Status = "Canceled";
                context.UpdateObject(job);
                context.SaveChanges();
            }

            SCOJobInstance jInstance = new SCOJobInstance()
            {
                Job = new SCOJob(job), InputParameters = jobInput.ToArray(), OutputParameters = jobOutput.ToArray()
            };

            return(jInstance);
        }