Search in sources :

Example 6 with Job

use of io.fabric8.kubernetes.api.model.batch.Job in project fabric8 by jboss-fuse.

the class PipelineConfigurationParseTest method testLoadMutateAndLoadPipelineConfiguration.

@Test
public void testLoadMutateAndLoadPipelineConfiguration() throws Exception {
    ConfigMap configMap = loadTestConfigMap();
    PipelineConfiguration pipelineConfiguration = PipelineConfiguration.getPipelineConfiguration(configMap);
    pipelineConfiguration.setCdBranchPatterns(Arrays.asList("cd-1", "cd-2"));
    pipelineConfiguration.setCiBranchPatterns(Arrays.asList("ci-1", "ci-2"));
    pipelineConfiguration.setJobNameToKindMap(new HashMap<>());
    pipelineConfiguration.setJobNamesCD("job-cd");
    pipelineConfiguration.setJobNamesCI("job-ci");
    HashMap<String, List<String>> cdGitHostAndOrganisationToBranchPatterns = new HashMap<>();
    cdGitHostAndOrganisationToBranchPatterns.put("github.com/acme", Arrays.asList("release1"));
    cdGitHostAndOrganisationToBranchPatterns.put("github.com/another", Arrays.asList("release2"));
    pipelineConfiguration.setCdGitHostAndOrganisationToBranchPatterns(cdGitHostAndOrganisationToBranchPatterns);
    // reload the modified configuration
    configMap = pipelineConfiguration.createConfigMap();
    pipelineConfiguration = PipelineConfiguration.getPipelineConfiguration(configMap);
    assertThat(pipelineConfiguration.getCdBranchPatterns()).describedAs("getCdBranchPatterns()").contains("cd-1").contains("cd-2");
    assertThat(pipelineConfiguration.getCiBranchPatterns()).describedAs("getCiBranchPatterns()").contains("ci-1").contains("ci-2");
    assertThat(pipelineConfiguration.getJobNameToKindMap()).describedAs("getJobNameToKindMap()").containsEntry("job-cd", PipelineKind.CD).containsEntry("job-ci", PipelineKind.CI);
    assertThat(pipelineConfiguration.getCdGitHostAndOrganisationToBranchPatterns()).describedAs("getCdGitHostAndOrganisationToBranchPatterns()").containsEntry("github.com/acme", Arrays.asList("release1")).containsEntry("github.com/another", Arrays.asList("release2"));
}
Also used : ConfigMap(io.fabric8.kubernetes.api.model.ConfigMap) HashMap(java.util.HashMap) List(java.util.List) Test(org.junit.Test)

Example 7 with Job

use of io.fabric8.kubernetes.api.model.batch.Job in project kubernetes by ballerinax.

the class Sample11Test method validateJob.

@Test
public void validateJob() {
    Assert.assertNotNull(job);
    Assert.assertEquals("hello-world-job-job", job.getMetadata().getName());
    Assert.assertEquals(job.getSpec().getTemplate().getSpec().getContainers().size(), 1);
    Container container = job.getSpec().getTemplate().getSpec().getContainers().get(0);
    Assert.assertEquals(container.getImage(), DOCKER_IMAGE);
    Assert.assertEquals(container.getImagePullPolicy(), KubernetesConstants.ImagePullPolicy.IfNotPresent.name());
    Assert.assertEquals(job.getSpec().getTemplate().getSpec().getRestartPolicy(), KubernetesConstants.RestartPolicy.Never.name());
}
Also used : Container(io.fabric8.kubernetes.api.model.Container) Test(org.testng.annotations.Test)

Example 8 with Job

use of io.fabric8.kubernetes.api.model.batch.Job in project kubernetes by ballerinax.

the class NoAnnotationsTest method mainWithNoAnnotationTest.

@Test(timeOut = 90000)
public void mainWithNoAnnotationTest() throws IOException, InterruptedException, DockerTestException, KubernetesPluginException {
    Assert.assertEquals(KubernetesTestUtils.compileBallerinaFile(BAL_DIRECTORY, "no_annotations_main.bal"), 0);
    File yamlFile = KUBERNETES_TARGET_PATH.resolve("no_annotations_main.yaml").toFile();
    Assert.assertTrue(yamlFile.exists());
    KubernetesClient client = new DefaultKubernetesClient();
    List<HasMetadata> k8sItems = client.load(new FileInputStream(yamlFile)).get();
    for (HasMetadata data : k8sItems) {
        if ("Job".equals(data.getKind())) {
            Job job = (Job) data;
            Assert.assertEquals(job.getMetadata().getName(), "no-annotations-main-job");
            Assert.assertEquals(job.getSpec().getTemplate().getSpec().getContainers().size(), 1);
            Container container = job.getSpec().getTemplate().getSpec().getContainers().get(0);
            Assert.assertEquals(container.getImage(), "no_annotations_main:latest");
            Assert.assertEquals(container.getImagePullPolicy(), KubernetesConstants.ImagePullPolicy.IfNotPresent.name());
            Assert.assertEquals(job.getSpec().getTemplate().getSpec().getRestartPolicy(), KubernetesConstants.RestartPolicy.Never.name());
        }
    }
    validateDockerfile();
    KubernetesUtils.deleteDirectory(KUBERNETES_TARGET_PATH);
    KubernetesUtils.deleteDirectory(DOCKER_TARGET_PATH);
    KubernetesTestUtils.deleteDockerImage("no_annotations_main:latest");
}
Also used : KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) HasMetadata(io.fabric8.kubernetes.api.model.HasMetadata) Container(io.fabric8.kubernetes.api.model.Container) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) Job(io.fabric8.kubernetes.api.model.batch.Job) File(java.io.File) FileInputStream(java.io.FileInputStream) Test(org.testng.annotations.Test)

Example 9 with Job

use of io.fabric8.kubernetes.api.model.batch.Job in project kubernetes by ballerinax.

the class KubernetesJobGeneratorTests method assertGeneratedYAML.

private void assertGeneratedYAML(File yamlFile) throws IOException {
    Job job = Utils.loadYaml(yamlFile);
    Assert.assertEquals(jobName, job.getMetadata().getName());
    Assert.assertEquals(1, job.getSpec().getTemplate().getSpec().getContainers().size());
    Container container = job.getSpec().getTemplate().getSpec().getContainers().get(0);
    Assert.assertEquals(imageName, container.getImage());
    Assert.assertEquals(imagePullPolicy, container.getImagePullPolicy());
    Assert.assertEquals(1, container.getEnv().size());
}
Also used : Container(io.fabric8.kubernetes.api.model.Container) Job(io.fabric8.kubernetes.api.model.batch.Job)

Example 10 with Job

use of io.fabric8.kubernetes.api.model.batch.Job in project fabric8-maven-plugin by fabric8io.

the class DefaultControllerEnricher method addMissingResources.

@Override
public void addMissingResources(KubernetesListBuilder builder) {
    final String name = getConfig(Config.name, MavenUtil.createDefaultResourceName(getProject()));
    final ResourceConfig config = new ResourceConfig.Builder().controllerName(name).imagePullPolicy(getConfig(Config.pullPolicy)).withReplicas(Configs.asInt(getConfig(Config.replicaCount))).build();
    final List<ImageConfiguration> images = getImages();
    // Check if at least a replica set is added. If not add a default one
    if (!KubernetesResourceUtil.checkForKind(builder, POD_CONTROLLER_KINDS)) {
        // At least one image must be present, otherwise the resulting config will be invalid
        if (!Lists.isNullOrEmpty(images)) {
            String type = getConfig(Config.type);
            if ("deployment".equalsIgnoreCase(type)) {
                log.info("Adding a default Deployment");
                builder.addToDeploymentItems(deployHandler.getDeployment(config, images));
            } else if ("statefulSet".equalsIgnoreCase(type)) {
                log.info("Adding a default StatefulSet");
                builder.addToStatefulSetItems(statefulSetHandler.getStatefulSet(config, images));
            } else if ("daemonSet".equalsIgnoreCase(type)) {
                log.info("Adding a default DaemonSet");
                builder.addToDaemonSetItems(daemonSetHandler.getDaemonSet(config, images));
            } else if ("replicaSet".equalsIgnoreCase(type)) {
                log.info("Adding a default ReplicaSet");
                builder.addToReplicaSetItems(rsHandler.getReplicaSet(config, images));
            } else if ("replicationController".equalsIgnoreCase(type)) {
                log.info("Adding a default ReplicationController");
                builder.addToReplicationControllerItems(rcHandler.getReplicationController(config, images));
            } else if ("job".equalsIgnoreCase(type)) {
                log.info("Adding a default Job");
                builder.addToJobItems(jobHandler.getJob(config, images));
            }
        }
    } else if (KubernetesResourceUtil.checkForKind(builder, "StatefulSet")) {
        final StatefulSetSpec spec = statefulSetHandler.getStatefulSet(config, images).getSpec();
        if (spec != null) {
            builder.accept(new TypedVisitor<StatefulSetBuilder>() {

                @Override
                public void visit(StatefulSetBuilder statefulSetBuilder) {
                    statefulSetBuilder.editOrNewSpec().editOrNewTemplate().editOrNewSpec().endSpec().endTemplate().endSpec();
                    mergeStatefulSetSpec(statefulSetBuilder, spec);
                }
            });
            if (spec.getTemplate() != null && spec.getTemplate().getSpec() != null) {
                final PodSpec podSpec = spec.getTemplate().getSpec();
                builder.accept(new TypedVisitor<PodSpecBuilder>() {

                    @Override
                    public void visit(PodSpecBuilder builder) {
                        KubernetesResourceUtil.mergePodSpec(builder, podSpec, name);
                    }
                });
            }
        }
    } else {
        final DeploymentSpec spec = deployHandler.getDeployment(config, images).getSpec();
        if (spec != null) {
            builder.accept(new TypedVisitor<DeploymentBuilder>() {

                @Override
                public void visit(DeploymentBuilder deploymentBuilder) {
                    deploymentBuilder.editOrNewSpec().editOrNewTemplate().editOrNewSpec().endSpec().endTemplate().endSpec();
                    mergeDeploymentSpec(deploymentBuilder, spec);
                }
            });
            if (spec.getTemplate() != null && spec.getTemplate().getSpec() != null) {
                final PodSpec podSpec = spec.getTemplate().getSpec();
                builder.accept(new TypedVisitor<PodSpecBuilder>() {

                    @Override
                    public void visit(PodSpecBuilder builder) {
                        KubernetesResourceUtil.mergePodSpec(builder, podSpec, name);
                    }
                });
            }
        }
    }
}
Also used : TypedVisitor(io.fabric8.kubernetes.api.builder.TypedVisitor) PodSpecBuilder(io.fabric8.kubernetes.api.model.PodSpecBuilder) StatefulSetSpec(io.fabric8.kubernetes.api.model.extensions.StatefulSetSpec) DeploymentSpec(io.fabric8.kubernetes.api.model.extensions.DeploymentSpec) PodSpec(io.fabric8.kubernetes.api.model.PodSpec) ImageConfiguration(io.fabric8.maven.docker.config.ImageConfiguration) StatefulSetBuilder(io.fabric8.kubernetes.api.model.extensions.StatefulSetBuilder) PodSpecBuilder(io.fabric8.kubernetes.api.model.PodSpecBuilder) KubernetesListBuilder(io.fabric8.kubernetes.api.model.KubernetesListBuilder) DeploymentBuilder(io.fabric8.kubernetes.api.model.extensions.DeploymentBuilder) ResourceConfig(io.fabric8.maven.core.config.ResourceConfig) StatefulSetBuilder(io.fabric8.kubernetes.api.model.extensions.StatefulSetBuilder) DeploymentBuilder(io.fabric8.kubernetes.api.model.extensions.DeploymentBuilder)

Aggregations

IOException (java.io.IOException)8 DefaultKubernetesClient (io.fabric8.kubernetes.client.DefaultKubernetesClient)6 KubernetesClient (io.fabric8.kubernetes.client.KubernetesClient)6 Block (io.fabric8.utils.Block)6 URISyntaxException (java.net.URISyntaxException)6 Container (io.fabric8.kubernetes.api.model.Container)5 Job (io.fabric8.kubernetes.api.model.batch.Job)4 File (java.io.File)4 HashMap (java.util.HashMap)4 List (java.util.List)4 Test (org.junit.Test)4 Test (org.testng.annotations.Test)4 ConfigMap (io.fabric8.kubernetes.api.model.ConfigMap)3 HasMetadata (io.fabric8.kubernetes.api.model.HasMetadata)3 Job (io.fabric8.kubernetes.api.model.Job)3 InspectImageResponse (com.github.dockerjava.api.command.InspectImageResponse)2 JobWithDetails (com.offbytwo.jenkins.model.JobWithDetails)2 Controller (io.fabric8.kubernetes.api.Controller)2 LocalObjectReference (io.fabric8.kubernetes.api.model.LocalObjectReference)2 ObjectMeta (io.fabric8.kubernetes.api.model.ObjectMeta)2