public String getRunType() { if (isRunOnAllAgents()) return RUN_ON_ALL_AGENTS; if (isRunMultipleInstanceType()) return RUN_MULTIPLE_INSTANCE; return RUN_SINGLE_INSTANCE; }
private static void addRunInstanceCount(OutputWriter outputWriter, JobConfig jobConfig) { if (jobConfig.isRunOnAllAgents()) { outputWriter.add("run_instance_count", "all"); } else if (jobConfig.getRunInstanceCount() != null && !jobConfig.getRunInstanceCount().isEmpty()) { outputWriter.add("run_instance_count", jobConfig.getRunInstanceCountValue()); } else { outputWriter.add("run_instance_count", (String) null); } }
private static void addRunInstanceCount(OutputWriter outputWriter, JobConfig jobConfig) { if (jobConfig.isRunOnAllAgents()) { outputWriter.add("run_instance_count", "all"); } else if (jobConfig.getRunInstanceCount() != null && !jobConfig.getRunInstanceCount().isEmpty()) { outputWriter.add("run_instance_count", jobConfig.getRunInstanceCountValue()); } else { outputWriter.add("run_instance_count", (String) null); } }
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.isRunOnAllAgents(), is(false)); assertThat(jobConfig1.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig1.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig2.isRunOnAllAgents(), is(true)); assertThat(jobConfig2.isRunMultipleInstanceType(), is(false)); assertThat(jobConfig2.getRunInstanceCount(), is(nullValue())); assertThat(jobConfig3.isRunOnAllAgents(), is(false)); 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."); if (isRunOnAllAgents() && !isBlank(elasticProfileId)) { errors.add(RUN_TYPE, "Job cannot be set to 'run on all agents' when assigned to an elastic agent");
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) { 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); }
CRJob jobToCRJob(JobConfig jobConfig) { CRJob job = new CRJob(); job.setName(jobConfig.name().toString()); job.setResources(jobConfig.resourceConfigs().resourceNames()); job.setElasticProfileId(jobConfig.getElasticProfileId()); for (EnvironmentVariableConfig var: jobConfig.getVariables()) { job.addEnvironmentVariable(environmentVariableConfigToCREnvironmentVariable(var)); } for (ArtifactPropertyConfig prop: jobConfig.getProperties()) { job.addProperty(new CRPropertyGenerator(prop.getName(), prop.getSrc(), prop.getXpath())); } for(Tab tab: jobConfig.getTabs()) { job.addTab(new CRTab(tab.getName(), tab.getPath())); } for (ArtifactConfig artifactConfig: jobConfig.artifactConfigs()) { job.addArtifact(artifactConfigToCRArtifact(artifactConfig)); } if (jobConfig.isRunOnAllAgents()) { job.setRunOnAllAgents(jobConfig.isRunOnAllAgents()); } else { job.setRunInstanceCount(jobConfig.getRunInstanceCountValue()); } for (Task task: jobConfig.tasks()) { job.addTask(taskToCRTask(task)); } if (jobConfig.getTimeout() != null) { job.setTimeout(Integer.valueOf(jobConfig.getTimeout())); } return job; }