import com.hashicorp.nomad.apimodel.EphemeralDisk import com.hashicorp.nomad.apimodel.Job import com.hashicorp.nomad.apimodel.Resources import com.hashicorp.nomad.apimodel.RestartPolicy import com.hashicorp.nomad.apimodel.Task import com.hashicorp.nomad.apimodel.TaskGroup import com.hashicorp.nomad.javasdk.NomadApiClient import com.hashicorp.nomad.javasdk.NomadApiConfiguration import org.apache.commons.lang.RandomStringUtils import org.slf4j.Logger import org.slf4j.LoggerFactory import java.util.UUID import java.util.concurrent.TimeUnit private val logger: Logger = LoggerFactory.getLogger("nomad-test") fun main(args: Array) { val config: NomadApiConfiguration = NomadApiConfiguration.Builder().setAddress("").build() val nomadClient = NomadApiClient(config) val jobOperation = nomadClient.jobsApi val job = makeJob() (0..1000).forEach { jobOperation.register(job) if(it % 100 == 0) { logger.info("Running {} of 1000", it) } } } fun makeJob(): Job { val job = Job() // Bad things start happening if the job ID ends up longer than 32 characters so let's just truncate it. job.id = UUID.randomUUID().toString() val tag = RandomStringUtils.randomAlphanumeric(10) job.name = "test_job_$tag" job.datacenters = listOf("dc1") job.type = "batch" val group = TaskGroup() group.name = "sample-job" group.count = 1 group.restartPolicy = RestartPolicy() group.restartPolicy.attempts = 10 group.restartPolicy.mode = "delay" group.restartPolicy.interval = TimeUnit.MINUTES.toNanos(5) group.restartPolicy.delay = TimeUnit.SECONDS.toNanos(25) group.ephemeralDisk = EphemeralDisk() group.ephemeralDisk.sizeMb = 300 val task = Task() task.name = "PCX" task.driver = "exec" task.config = mapOf( Pair("command", "sleep"), Pair("args", listOf("1")) ) task.resources = Resources() task.resources.cpu = 1000 task.resources.memoryMb = 256 group.tasks = listOf(task) job.taskGroups = listOf(group) return job }