@Override public BatchAPIGroupDSL batch() { return delegate.batch(); }
private void deleteJob(String id) { FilterWatchListDeletable<Job, JobList, Boolean, Watch, Watcher<Job>> jobsToDelete = client.batch().jobs() .withLabel(SPRING_APP_KEY, id); if (jobsToDelete != null && jobsToDelete.list().getItems() != null) { logger.debug(String.format("Deleting Job for task: %s", id)); boolean jobDeleted = jobsToDelete.delete(); logger.debug(String.format("Job deleted for: %s - %b", id, jobDeleted)); } }
cronJob1 = client.batch().cronjobs().inNamespace(namespace).create(cronJob1); log("Successfully created cronjob with name ", cronJob1.getMetadata().getName());
protected void doListJobByLabel(Exchange exchange, String operation) { Map<String, String> labels = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_LABELS, Map.class); if (ObjectHelper.isEmpty(labels)) { LOG.error("Get Job by labels require specify a labels set"); throw new IllegalArgumentException("Get Job by labels require specify a labels set"); } FilterWatchListMultiDeletable<Job, JobList, Boolean, Watch, Watcher<Job>> jobs = getEndpoint() .getKubernetesClient().batch().jobs(); for (Map.Entry<String, String> entry : labels.entrySet()) { jobs.withLabel(entry.getKey(), entry.getValue()); } JobList jobList = jobs.list(); MessageHelper.copyHeaders(exchange.getIn(), exchange.getOut(), true); exchange.getOut().setBody(jobList.getItems()); }
protected void doGetJob(Exchange exchange, String operation) throws Exception { Job job = null; String jobName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_NAME, String.class); String namespaceName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, String.class); if (ObjectHelper.isEmpty(jobName)) { LOG.error("Get a specific job require specify a job name"); throw new IllegalArgumentException("Get a specific job require specify a job name"); } if (ObjectHelper.isEmpty(namespaceName)) { LOG.error("Get a specific job require specify a namespace name"); throw new IllegalArgumentException("Get a specific job require specify a namespace name"); } job = getEndpoint().getKubernetesClient().batch().jobs().inNamespace(namespaceName).withName(jobName).get(); MessageHelper.copyHeaders(exchange.getIn(), exchange.getOut(), true); exchange.getOut().setBody(job); }
protected void doDeleteJob(Exchange exchange, String operation) throws Exception { String jobName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_NAME, String.class); String namespaceName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, String.class); if (ObjectHelper.isEmpty(jobName)) { LOG.error("Delete a specific job require specify a job name"); throw new IllegalArgumentException("Delete a specific job require specify a job name"); } if (ObjectHelper.isEmpty(namespaceName)) { LOG.error("Delete a specific job require specify a namespace name"); throw new IllegalArgumentException("Delete a specific job require specify a namespace name"); } getEndpoint().getKubernetesClient().batch().jobs().inNamespace(namespaceName).withName(jobName).delete(); MessageHelper.copyHeaders(exchange.getIn(), exchange.getOut(), true); } }
protected void doList(Exchange exchange, String operation) throws Exception { JobList jobList = getEndpoint().getKubernetesClient().batch().jobs().list(); MessageHelper.copyHeaders(exchange.getIn(), exchange.getOut(), true); exchange.getOut().setBody(jobList.getItems()); }
protected void doCreateJob(Exchange exchange, String operation) throws Exception { Job job = null; String jobName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_NAME, String.class); String namespaceName = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, String.class); JobSpec jobSpec = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_SPEC, JobSpec.class); if (ObjectHelper.isEmpty(jobName)) { LOG.error("Create a specific job require specify a job name"); throw new IllegalArgumentException("Create a specific job require specify a job name"); } if (ObjectHelper.isEmpty(namespaceName)) { LOG.error("Create a specific job require specify a namespace name"); throw new IllegalArgumentException("Create a specific job require specify a namespace name"); } if (ObjectHelper.isEmpty(jobSpec)) { LOG.error("Create a specific job require specify a hpa spec bean"); throw new IllegalArgumentException("Create a specific job require specify a hpa spec bean"); } Map<String, String> labels = exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_JOB_LABELS, Map.class); Job jobCreating = new JobBuilder().withNewMetadata().withName(jobName).withLabels(labels).endMetadata().withSpec(jobSpec).build(); job = getEndpoint().getKubernetesClient().batch().jobs().inNamespace(namespaceName).create(jobCreating); MessageHelper.copyHeaders(exchange.getIn(), exchange.getOut(), true); exchange.getOut().setBody(job); }
private Job getJob(String jobName) { List<Job> jobs = client.batch().jobs().withLabel(SPRING_APP_KEY, jobName).list().getItems(); for (Job job : jobs) { if (jobName.equals(job.getMetadata().getName())) { return job; } } return null; }
private List<String> getIdsForTaskName(String taskName) { List<String> ids = new ArrayList<>(); try { KubernetesResourceList<?> resourceList; if(properties.isCreateJob()){ resourceList = client.batch().jobs().withLabel("task-name", taskName).list(); } else { resourceList = client.pods().withLabel("task-name", taskName).list(); } for (HasMetadata hasMetadata : resourceList.getItems()) { ids.add(hasMetadata.getMetadata().getName()); } } catch (KubernetesClientException kce) { logger.warn(String.format("Failed to retrieve pods for task: %s", taskName), kce); } return ids; }
log("Get jobs in namespace", client.batch().jobs().inNamespace("thisisatest").list()); } catch (APIGroupNotAvailableException e) { log("Skipping jobs example - extensions API group not available");
private void launchJob(String appId, PodSpec podSpec, Map<String, String> podLabelMap, Map<String, String> idMap, Map<String, String> annotations) { ObjectMeta objectMeta = new ObjectMetaBuilder().withLabels(podLabelMap).addToLabels(idMap).build(); PodTemplateSpec podTemplateSpec = new PodTemplateSpec(objectMeta, podSpec); JobSpec jobSpec = new JobSpecBuilder() .withTemplate(podTemplateSpec) .build(); client.batch().jobs() .createNew() .withNewMetadata() .withName(appId) .withLabels(Collections.singletonMap("task-name", podLabelMap.get("task-name"))) .addToLabels(idMap) .withAnnotations(annotations) .endMetadata() .withSpec(jobSpec) .done(); }