Search in sources :

Example 16 with JobBuilder

use of io.fabric8.kubernetes.api.model.batch.v1.JobBuilder in project strimzi by strimzi.

the class BridgeClients method producerStrimziBridge.

public Job producerStrimziBridge() {
    Map<String, String> producerLabels = new HashMap<>();
    producerLabels.put("app", this.getProducerName());
    producerLabels.put(Constants.KAFKA_CLIENTS_LABEL_KEY, Constants.KAFKA_BRIDGE_CLIENTS_LABEL_VALUE);
    PodSpecBuilder podSpecBuilder = new PodSpecBuilder();
    if (Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET != null && !Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET.isEmpty()) {
        List<LocalObjectReference> imagePullSecrets = Collections.singletonList(new LocalObjectReference(Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET));
        podSpecBuilder.withImagePullSecrets(imagePullSecrets);
    }
    return new JobBuilder().withNewMetadata().withNamespace(this.getNamespaceName()).withLabels(producerLabels).withName(this.getProducerName()).endMetadata().withNewSpec().withBackoffLimit(0).withNewTemplate().withNewMetadata().withLabels(producerLabels).endMetadata().withNewSpecLike(podSpecBuilder.build()).withRestartPolicy("OnFailure").addNewContainer().withName(this.getProducerName()).withImagePullPolicy(Constants.IF_NOT_PRESENT_IMAGE_PULL_POLICY).withImage(Environment.TEST_HTTP_PRODUCER_IMAGE).addNewEnv().withName("HOSTNAME").withValue(this.getBootstrapAddress()).endEnv().addNewEnv().withName("PORT").withValue(Integer.toString(port)).endEnv().addNewEnv().withName("TOPIC").withValue(this.getTopicName()).endEnv().addNewEnv().withName("DELAY_MS").withValue(String.valueOf(this.getDelayMs())).endEnv().addNewEnv().withName("MESSAGE_COUNT").withValue(Integer.toString(this.getMessageCount())).endEnv().endContainer().endSpec().endTemplate().endSpec().build();
}
Also used : PodSpecBuilder(io.fabric8.kubernetes.api.model.PodSpecBuilder) HashMap(java.util.HashMap) LocalObjectReference(io.fabric8.kubernetes.api.model.LocalObjectReference) JobBuilder(io.fabric8.kubernetes.api.model.batch.v1.JobBuilder)

Example 17 with JobBuilder

use of io.fabric8.kubernetes.api.model.batch.v1.JobBuilder in project strimzi by strimzi.

the class KafkaClients method defaultConsumerStrimzi.

public JobBuilder defaultConsumerStrimzi() {
    if (consumerName == null || consumerName.isEmpty()) {
        throw new InvalidParameterException("Consumer name is not set.");
    }
    Map<String, String> consumerLabels = new HashMap<>();
    consumerLabels.put("app", consumerName);
    consumerLabels.put(Constants.KAFKA_CLIENTS_LABEL_KEY, Constants.KAFKA_CLIENTS_LABEL_VALUE);
    PodSpecBuilder podSpecBuilder = new PodSpecBuilder();
    if (Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET != null && !Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET.isEmpty()) {
        List<LocalObjectReference> imagePullSecrets = Collections.singletonList(new LocalObjectReference(Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET));
        podSpecBuilder.withImagePullSecrets(imagePullSecrets);
    }
    return new JobBuilder().withNewMetadata().withNamespace(this.getNamespaceName()).withLabels(consumerLabels).withName(consumerName).endMetadata().withNewSpec().withBackoffLimit(0).withNewTemplate().withNewMetadata().withLabels(consumerLabels).withNamespace(this.getNamespaceName()).withName(consumerName).endMetadata().withNewSpecLike(podSpecBuilder.build()).withRestartPolicy("Never").withContainers().addNewContainer().withName(consumerName).withImagePullPolicy(Constants.IF_NOT_PRESENT_IMAGE_PULL_POLICY).withImage(Environment.TEST_CONSUMER_IMAGE).addNewEnv().withName("BOOTSTRAP_SERVERS").withValue(this.getBootstrapAddress()).endEnv().addNewEnv().withName("TOPIC").withValue(this.getTopicName()).endEnv().addNewEnv().withName("DELAY_MS").withValue(String.valueOf(delayMs)).endEnv().addNewEnv().withName("LOG_LEVEL").withValue("DEBUG").endEnv().addNewEnv().withName("MESSAGE_COUNT").withValue(String.valueOf(messageCount)).endEnv().addNewEnv().withName("GROUP_ID").withValue(consumerGroup).endEnv().addNewEnv().withName("ADDITIONAL_CONFIG").withValue(this.getAdditionalConfig()).endEnv().endContainer().endSpec().endTemplate().endSpec();
}
Also used : PodSpecBuilder(io.fabric8.kubernetes.api.model.PodSpecBuilder) InvalidParameterException(java.security.InvalidParameterException) HashMap(java.util.HashMap) LocalObjectReference(io.fabric8.kubernetes.api.model.LocalObjectReference) JobBuilder(io.fabric8.kubernetes.api.model.batch.v1.JobBuilder)

Example 18 with JobBuilder

use of io.fabric8.kubernetes.api.model.batch.v1.JobBuilder in project strimzi by strimzi.

the class MirrorMaker2IsolatedST method testMirrorMaker2CorrectlyMirrorsHeaders.

@ParallelNamespaceTest
void testMirrorMaker2CorrectlyMirrorsHeaders(ExtensionContext extensionContext) {
    final String namespaceName = StUtils.getNamespaceBasedOnRbac(INFRA_NAMESPACE, extensionContext);
    String clusterName = mapWithClusterNames.get(extensionContext.getDisplayName());
    String kafkaClusterSourceName = clusterName + "-source";
    String kafkaClusterTargetName = clusterName + "-target";
    String sourceProducerName = clusterName + "-source-producer";
    String targetConsumerName = clusterName + "-target-consumer";
    String sourceExampleTopic = clusterName + "-source-example-topic";
    String targetExampleTopic = kafkaClusterSourceName + "." + sourceExampleTopic;
    // Deploy source kafka
    resourceManager.createResource(extensionContext, KafkaTemplates.kafkaEphemeral(kafkaClusterSourceName, 1, 1).build());
    // Deploy target kafka
    resourceManager.createResource(extensionContext, KafkaTemplates.kafkaEphemeral(kafkaClusterTargetName, 1, 1).build());
    // Deploy Topic for example clients
    resourceManager.createResource(extensionContext, KafkaTopicTemplates.topic(kafkaClusterSourceName, sourceExampleTopic).build());
    resourceManager.createResource(extensionContext, KafkaMirrorMaker2Templates.kafkaMirrorMaker2(clusterName, kafkaClusterTargetName, kafkaClusterSourceName, 1, false).build());
    // deploying example clients for checking if mm2 will mirror messages with headers
    KafkaClients targetKafkaClientsJob = new KafkaClientsBuilder().withConsumerName(targetConsumerName).withBootstrapAddress(KafkaResources.plainBootstrapAddress(kafkaClusterTargetName)).withTopicName(targetExampleTopic).withMessageCount(MESSAGE_COUNT).withDelayMs(1000).build();
    resourceManager.createResource(extensionContext, targetKafkaClientsJob.consumerStrimzi());
    KafkaClients sourceKafkaClientsJob = new KafkaClientsBuilder().withProducerName(sourceProducerName).withBootstrapAddress(KafkaResources.plainBootstrapAddress(kafkaClusterSourceName)).withTopicName(sourceExampleTopic).withMessageCount(MESSAGE_COUNT).withDelayMs(1000).build();
    resourceManager.createResource(extensionContext, new JobBuilder(sourceKafkaClientsJob.producerStrimzi()).editSpec().editTemplate().editSpec().editContainer(0).addNewEnv().withName("HEADERS").withValue("header_key_one=header_value_one, header_key_two=header_value_two").endEnv().endContainer().endSpec().endTemplate().endSpec().build());
    ClientUtils.waitTillContinuousClientsFinish(sourceProducerName, targetConsumerName, namespaceName, MESSAGE_COUNT);
    LOGGER.info("Checking log of {} job if the headers are correct", targetConsumerName);
    String header1 = "key: header_key_one, value: header_value_one";
    String header2 = "key: header_key_two, value: header_value_two";
    String log = StUtils.getLogFromPodByTime(namespaceName, kubeClient(namespaceName).listPodsByPrefixInName(targetConsumerName).get(0).getMetadata().getName(), "", MESSAGE_COUNT + "s");
    assertThat(log, containsString(header1));
    assertThat(log, containsString(header2));
}
Also used : KafkaClientsBuilder(io.strimzi.systemtest.kafkaclients.internalClients.KafkaClientsBuilder) KafkaClients(io.strimzi.systemtest.kafkaclients.internalClients.KafkaClients) JobBuilder(io.fabric8.kubernetes.api.model.batch.v1.JobBuilder) Matchers.containsString(org.hamcrest.Matchers.containsString) ParallelNamespaceTest(io.strimzi.systemtest.annotations.ParallelNamespaceTest)

Example 19 with JobBuilder

use of io.fabric8.kubernetes.api.model.batch.v1.JobBuilder in project strimzi-kafka-operator by strimzi.

the class MirrorMaker2IsolatedST method testMirrorMaker2CorrectlyMirrorsHeaders.

@ParallelNamespaceTest
void testMirrorMaker2CorrectlyMirrorsHeaders(ExtensionContext extensionContext) {
    final String namespaceName = StUtils.getNamespaceBasedOnRbac(INFRA_NAMESPACE, extensionContext);
    String clusterName = mapWithClusterNames.get(extensionContext.getDisplayName());
    String kafkaClusterSourceName = clusterName + "-source";
    String kafkaClusterTargetName = clusterName + "-target";
    String sourceProducerName = clusterName + "-source-producer";
    String targetConsumerName = clusterName + "-target-consumer";
    String sourceExampleTopic = clusterName + "-source-example-topic";
    String targetExampleTopic = kafkaClusterSourceName + "." + sourceExampleTopic;
    // Deploy source kafka
    resourceManager.createResource(extensionContext, KafkaTemplates.kafkaEphemeral(kafkaClusterSourceName, 1, 1).build());
    // Deploy target kafka
    resourceManager.createResource(extensionContext, KafkaTemplates.kafkaEphemeral(kafkaClusterTargetName, 1, 1).build());
    // Deploy Topic for example clients
    resourceManager.createResource(extensionContext, KafkaTopicTemplates.topic(kafkaClusterSourceName, sourceExampleTopic).build());
    resourceManager.createResource(extensionContext, KafkaMirrorMaker2Templates.kafkaMirrorMaker2(clusterName, kafkaClusterTargetName, kafkaClusterSourceName, 1, false).build());
    // deploying example clients for checking if mm2 will mirror messages with headers
    KafkaClients targetKafkaClientsJob = new KafkaClientsBuilder().withConsumerName(targetConsumerName).withBootstrapAddress(KafkaResources.plainBootstrapAddress(kafkaClusterTargetName)).withTopicName(targetExampleTopic).withMessageCount(MESSAGE_COUNT).withDelayMs(1000).build();
    resourceManager.createResource(extensionContext, targetKafkaClientsJob.consumerStrimzi());
    KafkaClients sourceKafkaClientsJob = new KafkaClientsBuilder().withProducerName(sourceProducerName).withBootstrapAddress(KafkaResources.plainBootstrapAddress(kafkaClusterSourceName)).withTopicName(sourceExampleTopic).withMessageCount(MESSAGE_COUNT).withDelayMs(1000).build();
    resourceManager.createResource(extensionContext, new JobBuilder(sourceKafkaClientsJob.producerStrimzi()).editSpec().editTemplate().editSpec().editContainer(0).addNewEnv().withName("HEADERS").withValue("header_key_one=header_value_one, header_key_two=header_value_two").endEnv().endContainer().endSpec().endTemplate().endSpec().build());
    ClientUtils.waitTillContinuousClientsFinish(sourceProducerName, targetConsumerName, namespaceName, MESSAGE_COUNT);
    LOGGER.info("Checking log of {} job if the headers are correct", targetConsumerName);
    String header1 = "key: header_key_one, value: header_value_one";
    String header2 = "key: header_key_two, value: header_value_two";
    String log = StUtils.getLogFromPodByTime(namespaceName, kubeClient(namespaceName).listPodsByPrefixInName(targetConsumerName).get(0).getMetadata().getName(), "", MESSAGE_COUNT + "s");
    assertThat(log, containsString(header1));
    assertThat(log, containsString(header2));
}
Also used : KafkaClientsBuilder(io.strimzi.systemtest.kafkaclients.internalClients.KafkaClientsBuilder) KafkaClients(io.strimzi.systemtest.kafkaclients.internalClients.KafkaClients) JobBuilder(io.fabric8.kubernetes.api.model.batch.v1.JobBuilder) Matchers.containsString(org.hamcrest.Matchers.containsString) ParallelNamespaceTest(io.strimzi.systemtest.annotations.ParallelNamespaceTest)

Example 20 with JobBuilder

use of io.fabric8.kubernetes.api.model.batch.v1.JobBuilder in project strimzi-kafka-operator by strimzi.

the class KafkaTracingClients method kafkaStreamsWithTracing.

public Job kafkaStreamsWithTracing() {
    String kafkaStreamsName = "hello-world-streams";
    Map<String, String> kafkaStreamLabels = new HashMap<>();
    kafkaStreamLabels.put("app", kafkaStreamsName);
    PodSpecBuilder podSpecBuilder = new PodSpecBuilder();
    if (Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET != null && !Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET.isEmpty()) {
        List<LocalObjectReference> imagePullSecrets = Collections.singletonList(new LocalObjectReference(Environment.SYSTEM_TEST_STRIMZI_IMAGE_PULL_SECRET));
        podSpecBuilder.withImagePullSecrets(imagePullSecrets);
    }
    return new JobBuilder().withNewMetadata().withNamespace(ResourceManager.kubeClient().getNamespace()).withLabels(kafkaStreamLabels).withName(kafkaStreamsName).endMetadata().withNewSpec().withBackoffLimit(0).withNewTemplate().withNewMetadata().withLabels(kafkaStreamLabels).endMetadata().withNewSpecLike(podSpecBuilder.build()).withRestartPolicy("Never").withContainers().addNewContainer().withName(kafkaStreamsName).withImage(Environment.TEST_STREAMS_IMAGE).addNewEnv().withName("BOOTSTRAP_SERVERS").withValue(this.getBootstrapAddress()).endEnv().addNewEnv().withName("APPLICATION_ID").withValue(kafkaStreamsName).endEnv().addNewEnv().withName("SOURCE_TOPIC").withValue(this.getTopicName()).endEnv().addNewEnv().withName("TARGET_TOPIC").withValue(streamsTopicTargetName).endEnv().addNewEnv().withName("LOG_LEVEL").withValue("DEBUG").endEnv().addNewEnv().withName("JAEGER_SERVICE_NAME").withValue(jaegerServiceStreamsName).endEnv().addNewEnv().withName("JAEGER_AGENT_HOST").withValue(jaegerServerAgentName).endEnv().addNewEnv().withName("JAEGER_SAMPLER_TYPE").withValue(JAEGER_SAMPLER_TYPE).endEnv().addNewEnv().withName("JAEGER_SAMPLER_PARAM").withValue(JAEGER_SAMPLER_PARAM).endEnv().endContainer().endSpec().endTemplate().endSpec().build();
}
Also used : PodSpecBuilder(io.fabric8.kubernetes.api.model.PodSpecBuilder) HashMap(java.util.HashMap) LocalObjectReference(io.fabric8.kubernetes.api.model.LocalObjectReference) JobBuilder(io.fabric8.kubernetes.api.model.batch.v1.JobBuilder)

Aggregations

JobBuilder (io.fabric8.kubernetes.api.model.batch.v1.JobBuilder)27 HashMap (java.util.HashMap)13 LocalObjectReference (io.fabric8.kubernetes.api.model.LocalObjectReference)12 PodSpecBuilder (io.fabric8.kubernetes.api.model.PodSpecBuilder)12 Test (org.junit.jupiter.api.Test)9 Job (io.fabric8.kubernetes.api.model.batch.v1.Job)7 InvalidParameterException (java.security.InvalidParameterException)4 ContainerBuilder (io.fabric8.kubernetes.api.model.ContainerBuilder)3 Pod (io.fabric8.kubernetes.api.model.Pod)3 PodBuilder (io.fabric8.kubernetes.api.model.PodBuilder)3 Container (io.fabric8.kubernetes.api.model.Container)2 LabelSelector (io.fabric8.kubernetes.api.model.LabelSelector)2 PodList (io.fabric8.kubernetes.api.model.PodList)2 PodTemplate (io.fabric8.kubernetes.api.model.PodTemplate)2 PodTemplateBuilder (io.fabric8.kubernetes.api.model.PodTemplateBuilder)2 ReplicationController (io.fabric8.kubernetes.api.model.ReplicationController)2 ReplicationControllerBuilder (io.fabric8.kubernetes.api.model.ReplicationControllerBuilder)2 Volume (io.fabric8.kubernetes.api.model.Volume)2 DaemonSet (io.fabric8.kubernetes.api.model.apps.DaemonSet)2 DaemonSetBuilder (io.fabric8.kubernetes.api.model.apps.DaemonSetBuilder)2