下面列出了怎么用io.fabric8.kubernetes.api.model.batch.CronJobBuilder的API类实例代码及写法,或者点击链接到github查看源代码。
protected CronJob createCronJob(ScheduleRequest scheduleRequest) {
Map<String, String> labels = Collections.singletonMap(SPRING_CRONJOB_ID_KEY,
scheduleRequest.getDefinition().getName());
Map<String, String> schedulerProperties = scheduleRequest.getSchedulerProperties();
String schedule = schedulerProperties.get(SchedulerPropertyKeys.CRON_EXPRESSION);
Assert.hasText(schedule, "The property: " + SchedulerPropertyKeys.CRON_EXPRESSION + " must be defined");
PodSpec podSpec = createPodSpec(scheduleRequest);
String taskServiceAccountName = this.deploymentPropertiesResolver.getTaskServiceAccountName(scheduleRequest.getSchedulerProperties());
if (StringUtils.hasText(taskServiceAccountName)) {
podSpec.setServiceAccountName(taskServiceAccountName);
}
CronJob cronJob = new CronJobBuilder().withNewMetadata().withName(scheduleRequest.getScheduleName())
.withLabels(labels).endMetadata().withNewSpec().withSchedule(schedule).withNewJobTemplate()
.withNewSpec().withNewTemplate().withSpec(podSpec).endTemplate().endSpec()
.endJobTemplate().endSpec().build();
setImagePullSecret(scheduleRequest, cronJob);
return this.client.batch().cronjobs().create(cronJob);
}
private CronJob getCronJob(JobModel jobModel) {
return new CronJobBuilder()
.withNewMetadata()
.withName(jobModel.getName())
.endMetadata()
.withNewSpec()
.withNewJobTemplate()
.withNewSpec()
.withActiveDeadlineSeconds((long) jobModel.getActiveDeadlineSeconds())
.endSpec()
.endJobTemplate()
.withSchedule(jobModel.getSchedule())
.endSpec()
.build();
}
@Test
public void testCrud() {
KubernetesClient client = server.getClient();
CronJob cronJob1 = new CronJobBuilder().withNewMetadata()
.withName("cronJob1")
.withResourceVersion("1")
.addToLabels("foo", "bar")
.endMetadata()
.withNewSpec()
.withSchedule("1 2-14 * * 0-1,5-6")
.withNewJobTemplate()
.withNewSpec()
.withNewTemplate()
.withNewSpec()
.addNewImagePullSecret()
.withName("gcr-secret")
.endImagePullSecret()
.addNewContainer()
.withName("devopsish-netlify-cronjob")
.withImage("gcr.io/chrisshort-net/devopsish-netlify-cron:latest")
.addNewEnv()
.withName("URL")
.withNewValueFrom()
.withNewSecretKeyRef()
.withName("devops-build-hook")
.withKey("url")
.endSecretKeyRef()
.endValueFrom()
.endEnv()
.endContainer()
.endSpec()
.endTemplate()
.endSpec()
.endJobTemplate()
.endSpec()
.build();
CronJob cronJob2 = new CronJobBuilder().withNewMetadata()
.withName("cronJob2")
.withResourceVersion("1")
.endMetadata()
.withNewSpec()
.withSchedule("*/1 * * * *")
.withNewJobTemplate()
.withNewSpec()
.withNewTemplate()
.withNewSpec()
.addNewContainer()
.withName("app")
.withImage("bitnami/kubecfg:0.5.0")
.addNewEnv()
.withName("TOKEN")
.withNewValueFrom()
.withNewSecretKeyRef()
.withName("default-token-rtw2m")
.withKey("token")
.endSecretKeyRef()
.endValueFrom()
.endEnv()
.endContainer()
.endSpec()
.endTemplate()
.endSpec()
.endJobTemplate()
.endSpec()
.build();
client.batch().cronjobs().inNamespace("ns1").create(cronJob1);
client.batch().cronjobs().inNamespace("ns2").create(cronJob2);
CronJobList cronJobList = client.batch().cronjobs().list();
assertNotNull(cronJobList);
assertEquals(0, cronJobList.getItems().size());
cronJobList = client.batch().cronjobs().inAnyNamespace().list();
assertNotNull(cronJobList);
assertEquals(2, cronJobList.getItems().size());
cronJobList = client.batch().cronjobs().inNamespace("ns1").list();
assertNotNull(cronJobList);
assertEquals(1, cronJobList.getItems().size());
cronJobList = client.batch().cronjobs().inNamespace("ns2").list();
assertNotNull(cronJobList);
assertEquals(1, cronJobList.getItems().size());
cronJobList = client.batch().cronjobs().inNamespace("ns1").withLabels(Collections.singletonMap("foo", "bar")).list();
assertNotNull(cronJobList);
assertEquals(1, cronJobList.getItems().size());
boolean bDeleted = client.batch().cronjobs().inNamespace("ns1").withName("cronJob1").delete();
cronJobList = client.batch().cronjobs().inNamespace("ns1").list();
assertTrue(bDeleted);
assertEquals(0, cronJobList.getItems().size());
cronJob2 = client.batch().cronjobs().inNamespace("ns2").withName("cronJob2").edit().editSpec().withSchedule("*/1 * * * *").and().done();
assertNotNull(cronJob2);
assertEquals("*/1 * * * *", cronJob2.getSpec().getSchedule());
}
@Before
public void init() {
currentNamespace = session.getNamespace();
cronJob1 = new CronJobBuilder().withApiVersion("batch/v1beta1").withNewMetadata()
.withName("cronjob1")
.endMetadata()
.withNewSpec()
.withSchedule("*/1 * * * *")
.withNewJobTemplate()
.withNewSpec()
.withNewTemplate()
.withNewSpec()
.addNewContainer()
.withName("hello")
.withImage("busybox")
.withArgs("/bin/sh", "-c", "date; echo Hello from Kubernetes")
.endContainer()
.withRestartPolicy("OnFailure")
.endSpec()
.endTemplate()
.endSpec()
.endJobTemplate()
.endSpec()
.build();
cronJob2 = new CronJobBuilder().withApiVersion("batch/v1beta1").withNewMetadata()
.withName("cronjob2")
.endMetadata()
.withNewSpec()
.withSchedule("*/1 * * * *")
.withNewJobTemplate()
.withNewSpec()
.withNewTemplate()
.withNewSpec()
.addNewContainer()
.withName("pi")
.withImage("perl")
.withCommand("perl")
.withArgs(Arrays.asList("-Mbignum=bpi", "-wle", "print bpi(2000)"))
.endContainer()
.withRestartPolicy("OnFailure")
.endSpec()
.endTemplate()
.endSpec()
.endJobTemplate()
.endSpec()
.build();
client.batch().cronjobs().inNamespace(currentNamespace).create(cronJob1);
client.batch().cronjobs().inNamespace(currentNamespace).create(cronJob2);
}