private void SendNewJobStep(PolicyAgentRequest request)
            {
                foreach (JobStepResponse jobStepResponse in request.JobResponse.JobStepResponses)
                {
                    Guid guid = jobStepResponse.JobId.ToGuid();
                    var  id   = guid;

                    MockTenantJob tenantJob = (MockTenantJob)GetTenantJob(id);

                    tenantJob.JobStep = TenantJobHelper.CreateNewJobStepInfo(1, new List <string> {
                        "Role_IN_2", "Role_IN_3"
                    });

                    // update job after it does its job, so that IS gets it again when it polls for it.
                    UpdateTenantJob(tenantJob);
                }
            }
        protected void SendImpactEnd(PolicyAgentRequest request)
        {
            foreach (JobStepResponse jobStepResponse in request.JobResponse.JobStepResponses)
            {
                Guid guid = jobStepResponse.JobId.ToGuid();
                var  id   = guid;

                MockTenantJob tenantJob = (MockTenantJob)GetTenantJob(id);

                TakeSomeActionOnJob(tenantJob);

                ((MockJobStepInfo)tenantJob.JobStep).ImpactStep            = ImpactStepEnum.ImpactEnd;
                ((MockJobStepInfo)tenantJob.JobStep).AcknowledgementStatus = AcknowledgementStatusEnum.WaitingForAcknowledgement;

                // update job after it does its job, so that IS gets it again when it polls for it.
                UpdateTenantJob(tenantJob);
            }
        }
Esempio n. 3
0
        public static ITenantJob CreateNewTenantJob(
            ImpactActionEnum impactAction = ImpactActionEnum.TenantUpdate,
            uint ud = 0,
            List <string> roleInstances = null,
            string context = null)
        {
            var impactedResources = new AffectedResourceImpact
            {
                ListOfImpactTypes = new List <ImpactTypeEnum> {
                    ImpactTypeEnum.Reboot
                }
            };

            if (roleInstances == null)
            {
                roleInstances = new List <string> {
                    "Role_IN_0", "Role_IN_1"
                };
            }

            var tenantJob = new MockTenantJob(Guid.NewGuid())
            {
                JobStep      = CreateNewJobStepInfo(ud, roleInstances),
                ImpactDetail = new MockImpactInfo {
                    ImpactAction = impactAction, ImpactedResources = impactedResources
                },
                JobStatus = JobStatusEnum.Executing,
            };

            if (context != null)
            {
                // the explicit null check is to signify that the context should not be added for jobs like platformupdate etc.
                tenantJob.ContextStringGivenByTenant = context;
            }

            tenantJob.RoleInstancesToBeImpacted =
                tenantJob.JobStep.CurrentlyImpactedRoleInstances.Select(e => e.RoleInstanceName).ToList();

            return(tenantJob);
        }
Esempio n. 4
0
        public void BasicTest()
        {
            var job = new MockTenantJob();

            job.JobStatus = (JobStatusEnum)999;
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Pending;
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            configStore.UpdateKey(
                configSection.Name,
                "Azure.JobClassifier.JobStatusCategory.Pending",
                "Inactive");
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Alerted;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Cancelled;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Completed;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Failed;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Suspended;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            job.JobStatus = JobStatusEnum.Executing;
            // Unknown because JobStep is null
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            var jobStep = new MockJobStepInfo();

            job.JobStep = jobStep;

            jobStep.ImpactStep = ImpactStepEnum.Default;
            // Unknown because of impact step
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            jobStep.ImpactStep = (ImpactStepEnum)999;
            // Unknown because of impact step
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            jobStep.ImpactStep = ImpactStepEnum.ImpactStart;

            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.WaitingForAcknowledgement;
            Assert.AreEqual(JobPhase.ImpactStartWaitingForAck, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Acknowledged;
            Assert.AreEqual(JobPhase.ImpactStartAcked, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Timedout;
            Assert.AreEqual(JobPhase.ImpactStartAcked, jobClassifier.GetJobPhase(job));

            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Alerted;
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            configStore.UpdateKey(
                configSection.Name,
                "Azure.JobClassifier.ImpactStartAcknowledgementStatusAlerted",
                "Inactive");
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            jobStep.AcknowledgementStatus = (AcknowledgementStatusEnum)999;
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            jobStep.ImpactStep = ImpactStepEnum.ImpactEnd;

            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.WaitingForAcknowledgement;
            Assert.AreEqual(JobPhase.ImpactEndWaitingForAck, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Acknowledged;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Timedout;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.Alerted;
            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));
            jobStep.AcknowledgementStatus = (AcknowledgementStatusEnum)999;
            Assert.AreEqual(JobPhase.Unknown, jobClassifier.GetJobPhase(job));

            // Compare versions

            configStore.ClearKeys();

            job.JobStatus                 = JobStatusEnum.Failed;
            jobStep.ImpactStep            = ImpactStepEnum.ImpactEnd;
            jobStep.AcknowledgementStatus = AcknowledgementStatusEnum.WaitingForAcknowledgement;

            Assert.AreEqual(JobPhase.Inactive, jobClassifier.GetJobPhase(job));

            configStore.UpdateKey(
                configSection.Name,
                "Azure.JobClassifier.Version",
                "1");

            Assert.AreEqual(JobPhase.ImpactEndWaitingForAck, jobClassifier.GetJobPhase(job));
        }