public String getRunType() { if (isRunOnAllAgents()) return RUN_ON_ALL_AGENTS; if (isRunMultipleInstanceType()) return RUN_MULTIPLE_INSTANCE; return RUN_SINGLE_INSTANCE; }
private JobTypeConfig jobTypeConfig() { if (runOnAllAgents) { return new RunOnAllAgentsJobTypeConfig(); } else if (isRunMultipleInstanceType()) { return new RunMultipleInstanceJobTypeConfig(); } else { return new SingleJobTypeConfig(); } }
public JobInstances createJobInstance(CaseInsensitiveString stageName, JobConfig jobConfig, SchedulingContext context, Clock clock, JobType.JobNameGenerator jobNameGenerator) { JobInstances instances = new JobInstances(); createJobType(jobConfig.isRunOnAllAgents(), jobConfig.isRunMultipleInstanceType()).createJobInstances(instances, context, jobConfig, CaseInsensitiveString.str(stageName), jobNameGenerator, clock, this); return instances; }
@Test public void shouldResetJobRunTypeCorrectly() { HashMap map1 = new HashMap(); map1.put(JobConfig.RUN_TYPE, JobConfig.RUN_MULTIPLE_INSTANCE); map1.put(JobConfig.RUN_INSTANCE_COUNT, "10"); JobConfig jobConfig = new JobConfig(); jobConfig.setConfigAttributes(map1); assertThat(jobConfig.getRunInstanceCountValue(), is(10)); assertThat(jobConfig.isRunMultipleInstanceType(), is(true)); assertThat(jobConfig.isRunOnAllAgents(), is(false)); // should not reset value when correct key not present HashMap map2 = new HashMap(); jobConfig.setConfigAttributes(map2); assertThat(jobConfig.getRunInstanceCountValue(), is(10)); assertThat(jobConfig.isRunMultipleInstanceType(), is(true)); assertThat(jobConfig.isRunOnAllAgents(), is(false)); // reset value for same job config HashMap map3 = new HashMap(); map3.put(JobConfig.RUN_TYPE, JobConfig.RUN_SINGLE_INSTANCE); jobConfig.setConfigAttributes(map3); assertThat(jobConfig.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig.isRunOnAllAgents(), is(false)); }
assertThat(jobConfig1.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig1.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig2.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig2.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig3.isRunMultipleInstanceType(), is(true)); assertThat(jobConfig3.getRunInstanceCountValue(), is(10)); assertThat(jobConfig3.isRunOnAllAgents(), is(false)); assertThat(jobConfig4.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig4.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig4.isRunOnAllAgents(), is(false));
if (isRunOnAllAgents() && isRunMultipleInstanceType()) { errors.add(RUN_TYPE, "Job cannot be 'run on all agents' type and 'run multiple instance' type together.");
private JobInstances createJobInstances(StageConfig stageConfig, SchedulingContext context, Clock clock) { JobInstances instances = new JobInstances(); for (JobConfig jobConfig : stageConfig.getJobs()) { JobType.JobNameGenerator nameGenerator = null; if (jobConfig.isRunOnAllAgents()) { nameGenerator = new RunOnAllAgents.CounterBasedJobNameGenerator(CaseInsensitiveString.str(jobConfig.name())); } else if (jobConfig.isRunMultipleInstanceType()) { nameGenerator = new RunMultipleInstance.CounterBasedJobNameGenerator(CaseInsensitiveString.str(jobConfig.name())); } JobInstances configInstances = createJobInstance(stageConfig.name(), jobConfig, context, clock, nameGenerator); instances.addAll(configInstances); } return instances; }
public void createRerunInstances(JobInstance oldJob, JobInstances jobInstances, SchedulingContext context, StageConfig stageConfig, final Clock clock, InstanceFactory instanceFactory) { String jobName = oldJob.getName(); JobConfig jobConfig = stageConfig.jobConfigByInstanceName(jobName, true); if (jobConfig == null) { throw new CannotRerunJobException(jobName, "Configuration for job doesn't exist."); } if (jobConfig.isRunMultipleInstanceType()) { String runType = "'run multiple instance'"; throw new CannotRerunJobException(jobName, "Run configuration for job has been changed to " + runType + "."); } RunOnAllAgents.CounterBasedJobNameGenerator nameGenerator = new RunOnAllAgents.CounterBasedJobNameGenerator(CaseInsensitiveString.str(jobConfig.name())); JobInstances instances = instanceFactory.createJobInstance(stageConfig.name(), jobConfig, context, clock, nameGenerator); for (JobInstance instance : instances) { instance.setRerun(true); } jobInstances.addAll(instances); } }
public void createRerunInstances(JobInstance oldJob, JobInstances jobInstances, SchedulingContext context, StageConfig stageConfig, final Clock clock, InstanceFactory instanceFactory) { context = context.permittedAgent(oldJob.getAgentUuid()); String configName = translateToConfigName(oldJob.getName()); JobConfig jobConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString(configName)); if (jobConfig == null) { throw new CannotRerunJobException(configName, "Configuration for job doesn't exist."); } if (jobConfig.isRunMultipleInstanceType()) { String runType = "'run multiple instance'"; throw new CannotRerunJobException(configName, "Run configuration for job has been changed to " + runType + "."); } String newJobName = jobConfig.isRunOnAllAgents() ? oldJob.getName() : CaseInsensitiveString.str(jobConfig.name()); JobInstances instances = instanceFactory.createJobInstance(stageConfig.name(), jobConfig, context, clock, new IdentityNameGenerator(newJobName)); for (JobInstance instance : instances) { instance.setAgentUuid(oldJob.getAgentUuid());//will always have one job instance.setRerun(true); if (jobInstances.hasJobNamed(newJobName)) { throw new IllegalArgumentException(String.format("Cannot schedule multiple instances of job named '%s'.", newJobName)); } } jobInstances.addAll(instances); }
public void createRerunInstances(JobInstance oldJob, JobInstances jobInstances, SchedulingContext context, StageConfig stageConfig, final Clock clock, InstanceFactory instanceFactory) { context = context.rerunContext(); String configName = translateToConfigName(oldJob.getName()); JobConfig jobConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString(configName)); if (jobConfig == null) { throw new CannotRerunJobException(configName, "Configuration for job doesn't exist."); } if (!jobConfig.isRunMultipleInstanceType()) { String runType = jobConfig.isRunOnAllAgents() ? "'run on all agents'" : "'simple'"; throw new CannotRerunJobException(configName, "Run configuration for job has been changed to " + runType + "."); } String newJobName = oldJob.getName(); JobInstances instances = instanceFactory.createJobInstance(stageConfig.name(), jobConfig, context, clock, new IdentityNameGenerator(newJobName)); for (JobInstance instance : instances) { instance.setRerun(true); } jobInstances.addAll(instances); }