Search in sources :

Example 26 with Filter

use of io.fabric8.common.util.Filter in project vertx-openshift-it by cescoffier.

the class OpenShiftTestAssistant method deployApplication.

public String deployApplication() throws IOException {
    applicationName = System.getProperty("app.name");
    List<? extends HasMetadata> entities = deploy("application", new File("target/classes/META-INF/fabric8/openshift.yml"));
    Optional<String> first = entities.stream().filter(hm -> hm instanceof DeploymentConfig).map(hm -> (DeploymentConfig) hm).map(dc -> dc.getMetadata().getName()).findFirst();
    if (applicationName == null && first.isPresent()) {
        applicationName = first.get();
    }
    Route route = client.adapt(OpenShiftClient.class).routes().inNamespace(project).withName(applicationName).get();
    assertThat(route).isNotNull();
    RestAssured.baseURI = "http://" + Objects.requireNonNull(route).getSpec().getHost();
    System.out.println("Route url: " + RestAssured.baseURI);
    return applicationName;
}
Also used : KubernetesClientException(io.fabric8.kubernetes.client.KubernetesClientException) Awaitility.await(org.awaitility.Awaitility.await) Predicate(java.util.function.Predicate) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Pod(io.fabric8.kubernetes.api.model.Pod) DeploymentConfig(io.fabric8.openshift.api.model.DeploymentConfig) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) OpenShiftClient(io.fabric8.openshift.client.OpenShiftClient) Collectors(java.util.stream.Collectors) HasMetadata(io.fabric8.kubernetes.api.model.HasMetadata) File(java.io.File) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Route(io.fabric8.openshift.api.model.Route) Map(java.util.Map) Optional(java.util.Optional) RestAssured(io.restassured.RestAssured) Comparator(java.util.Comparator) DefaultKubernetesClient(io.fabric8.kubernetes.client.DefaultKubernetesClient) DeploymentConfig(io.fabric8.openshift.api.model.DeploymentConfig) File(java.io.File) Route(io.fabric8.openshift.api.model.Route)

Example 27 with Filter

use of io.fabric8.common.util.Filter in project vertx-openshift-it by cescoffier.

the class ConfigurationIT method initializeDirectoryConfig.

private static void initializeDirectoryConfig() throws URISyntaxException {
    String configPodName, pathToJar;
    Optional<Pod> maybePod = client.pods().inNamespace(deploymentAssistant.project()).list().getItems().stream().filter(pod -> pod.getMetadata().getName().startsWith(configServiceApp) && !pod.getMetadata().getName().endsWith("build") && !pod.getMetadata().getName().endsWith("deploy")).findFirst();
    if (maybePod.isPresent()) {
        configPodName = maybePod.get().getMetadata().getName();
    } else {
        System.out.println("No pod for configuration service available at the moment");
        return;
    }
    pathToJar = "/deployments/" + new File(ConfigurableHttpVerticle.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getName();
    OC.execute("exec", configPodName, "--", "unzip", pathToJar, "'configuration/*'", "-d", "/deployments");
}
Also used : BeforeClass(org.junit.BeforeClass) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) URISyntaxException(java.net.URISyntaxException) OC(io.vertx.it.openshift.utils.OC) JsonPath(io.restassured.path.json.JsonPath) Route(io.fabric8.openshift.api.model.Route) AbstractTestClass(io.vertx.it.openshift.utils.AbstractTestClass) Map(java.util.Map) RestAssured.get(io.restassured.RestAssured.get) Awaitility.await(org.awaitility.Awaitility.await) AfterClass(org.junit.AfterClass) ImmutableMap(com.google.common.collect.ImmutableMap) Pod(io.fabric8.kubernetes.api.model.Pod) DeploymentConfig(io.fabric8.openshift.api.model.DeploymentConfig) Test(org.junit.Test) IOException(java.io.IOException) DoneableConfigMap(io.fabric8.kubernetes.api.model.DoneableConfigMap) Collectors(java.util.stream.Collectors) HasMetadata(io.fabric8.kubernetes.api.model.HasMetadata) File(java.io.File) Ensure.ensureThat(io.vertx.it.openshift.utils.Ensure.ensureThat) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Optional(java.util.Optional) RestAssured(io.restassured.RestAssured) Pod(io.fabric8.kubernetes.api.model.Pod) File(java.io.File)

Example 28 with Filter

use of io.fabric8.common.util.Filter in project zalenium by zalando.

the class KubernetesContainerClient method registerNode.

@Override
public ContainerClientRegistration registerNode(String zaleniumContainerName, URL remoteHost) {
    String podIpAddress = remoteHost.getHost();
    // The only way to lookup a pod name by IP address is by looking at all pods in the namespace it seems.
    PodList list = client.pods().withLabels(createdByZaleniumMap).list();
    String containerId = null;
    Pod currentPod = null;
    for (Pod pod : list.getItems()) {
        if (podIpAddress.equals(pod.getStatus().getPodIP())) {
            containerId = pod.getMetadata().getName();
            currentPod = pod;
            break;
        }
    }
    if (containerId == null) {
        throw new IllegalStateException("Unable to locate pod by ip address, registration will fail");
    }
    ContainerClientRegistration registration = new ContainerClientRegistration();
    List<EnvVar> podEnvironmentVariables = currentPod.getSpec().getContainers().get(0).getEnv();
    Optional<EnvVar> noVncPort = podEnvironmentVariables.stream().filter(env -> "NOVNC_PORT".equals(env.getName())).findFirst();
    if (noVncPort.isPresent()) {
        Integer noVncPortInt = Integer.decode(noVncPort.get().getValue());
        registration.setNoVncPort(noVncPortInt);
    } else {
        logger.warn(String.format("%s Couldn't find NOVNC_PORT, live preview will not work.", containerId));
    }
    registration.setIpAddress(currentPod.getStatus().getPodIP());
    registration.setContainerId(containerId);
    return registration;
}
Also used : Quantity(io.fabric8.kubernetes.api.model.Quantity) VolumeMount(io.fabric8.kubernetes.api.model.VolumeMount) Arrays(java.util.Arrays) StringUtils(org.apache.commons.lang.StringUtils) DoneablePod(io.fabric8.kubernetes.api.model.DoneablePod) EnvVar(io.fabric8.kubernetes.api.model.EnvVar) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Environment(de.zalando.ep.zalenium.util.Environment) URL(java.net.URL) ContainerClientRegistration(de.zalando.ep.zalenium.container.ContainerClientRegistration) LoggerFactory(org.slf4j.LoggerFactory) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) Function(java.util.function.Function) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) InetAddress(java.net.InetAddress) HostAlias(io.fabric8.kubernetes.api.model.HostAlias) Map(java.util.Map) Response(okhttp3.Response) ExecListener(io.fabric8.kubernetes.client.dsl.ExecListener) ContainerClient(de.zalando.ep.zalenium.container.ContainerClient) Volume(io.fabric8.kubernetes.api.model.Volume) Logger(org.slf4j.Logger) Pod(io.fabric8.kubernetes.api.model.Pod) ExecWatch(io.fabric8.kubernetes.client.dsl.ExecWatch) UnknownHostException(java.net.UnknownHostException) Collectors(java.util.stream.Collectors) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) PodList(io.fabric8.kubernetes.api.model.PodList) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Optional(java.util.Optional) ContainerCreationStatus(de.zalando.ep.zalenium.container.ContainerCreationStatus) InputStream(java.io.InputStream) PodList(io.fabric8.kubernetes.api.model.PodList) ContainerClientRegistration(de.zalando.ep.zalenium.container.ContainerClientRegistration) DoneablePod(io.fabric8.kubernetes.api.model.DoneablePod) Pod(io.fabric8.kubernetes.api.model.Pod) EnvVar(io.fabric8.kubernetes.api.model.EnvVar)

Example 29 with Filter

use of io.fabric8.common.util.Filter in project syndesis by syndesisio.

the class OpenShiftServiceImpl method scale.

@Override
public void scale(String name, Map<String, String> labels, int desiredReplicas, long amount, TimeUnit timeUnit) throws InterruptedException {
    String sName = openshiftName(name);
    getDeploymentsByLabel(labels).stream().filter(d -> d.getMetadata().getName().equals(sName)).map(d -> new DeploymentConfigBuilder(d).editSpec().withReplicas(desiredReplicas).endSpec().build()).findAny().ifPresent(d -> openShiftClient.deploymentConfigs().createOrReplace(d));
}
Also used : KubernetesClientException(io.fabric8.kubernetes.client.KubernetesClientException) Quantity(io.fabric8.kubernetes.api.model.Quantity) EnvVar(io.fabric8.kubernetes.api.model.EnvVar) RequestConfigBuilder(io.fabric8.kubernetes.client.RequestConfigBuilder) Logger(org.slf4j.Logger) LoggerFactory(org.slf4j.LoggerFactory) NamespacedOpenShiftClient(io.fabric8.openshift.client.NamespacedOpenShiftClient) TimeoutException(java.util.concurrent.TimeoutException) DeploymentConfig(io.fabric8.openshift.api.model.DeploymentConfig) IOException(java.io.IOException) OpenShiftClient(io.fabric8.openshift.client.OpenShiftClient) Names(io.syndesis.common.util.Names) User(io.fabric8.openshift.api.model.User) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) DeploymentConfigBuilder(io.fabric8.openshift.api.model.DeploymentConfigBuilder) SyndesisServerException(io.syndesis.common.util.SyndesisServerException) Map(java.util.Map) DeploymentConfigStatus(io.fabric8.openshift.api.model.DeploymentConfigStatus) Build(io.fabric8.openshift.api.model.Build) InputStream(java.io.InputStream) DeploymentConfigBuilder(io.fabric8.openshift.api.model.DeploymentConfigBuilder)

Example 30 with Filter

use of io.fabric8.common.util.Filter in project syndesis by syndesisio.

the class MetricsCollector method run.

@Override
public void run() {
    LOGGER.debug("Collecting metrics for active integration pods.");
    try {
        List<Pod> integrationPodList = kubernetes.pods().withLabel("integration").list().getItems();
        Set<String> livePods = new HashSet<>();
        for (Pod pod : integrationPodList) {
            livePods.add(pod.getMetadata().getName());
        }
        integrationPodList.stream().filter(p -> Readiness.isReady(p)).forEach(p -> executor.execute(new PodMetricsReader(kubernetes, p.getMetadata().getName(), p.getMetadata().getAnnotations().get("syndesis.io/integration-name"), p.getMetadata().getLabels().get("syndesis.io/integration-id"), p.getMetadata().getLabels().get("syndesis.io/deployment-version"), rmh)));
        Set<String> activeIntegrationIds = dataManager.fetchIds(Integration.class);
        for (String integrationId : activeIntegrationIds) {
            LOGGER.debug("Computing metrics for IntegrationId: {}", integrationId);
            Map<String, RawMetrics> rawMetrics = rmh.getRawMetrics(integrationId);
            IntegrationMetricsSummary imSummary = imh.compute(integrationId, rawMetrics, livePods);
            imh.persist(imSummary);
            rmh.curate(integrationId, rawMetrics, livePods);
        }
        rmh.curate(activeIntegrationIds);
        imh.curate(activeIntegrationIds);
    } catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") Exception ex) {
        LOGGER.error("Error while iterating integration pods.", ex);
    }
}
Also used : LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) HashSet(java.util.HashSet) Service(org.springframework.stereotype.Service) Map(java.util.Map) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) DataManager(io.syndesis.server.dao.manager.DataManager) Integration(io.syndesis.common.model.integration.Integration) ConditionalOnProperty(org.springframework.boot.autoconfigure.condition.ConditionalOnProperty) ExecutorService(java.util.concurrent.ExecutorService) Logger(org.slf4j.Logger) CustomizableThreadFactory(org.springframework.scheduling.concurrent.CustomizableThreadFactory) Set(java.util.Set) Pod(io.fabric8.kubernetes.api.model.Pod) IOException(java.io.IOException) JsonDB(io.syndesis.server.jsondb.JsonDB) Executors(java.util.concurrent.Executors) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Closeable(java.io.Closeable) PostConstruct(javax.annotation.PostConstruct) KubernetesClient(io.fabric8.kubernetes.client.KubernetesClient) Readiness(io.fabric8.kubernetes.client.internal.readiness.Readiness) Collections(java.util.Collections) IntegrationMetricsSummary(io.syndesis.common.model.metrics.IntegrationMetricsSummary) Pod(io.fabric8.kubernetes.api.model.Pod) IntegrationMetricsSummary(io.syndesis.common.model.metrics.IntegrationMetricsSummary) IOException(java.io.IOException) HashSet(java.util.HashSet)

Aggregations

List (java.util.List)18 Map (java.util.Map)18 Collectors (java.util.stream.Collectors)18 IOException (java.io.IOException)16 Pod (io.fabric8.kubernetes.api.model.Pod)12 ArrayList (java.util.ArrayList)12 File (java.io.File)11 HashMap (java.util.HashMap)11 Optional (java.util.Optional)11 TimeUnit (java.util.concurrent.TimeUnit)10 Logger (org.slf4j.Logger)10 LoggerFactory (org.slf4j.LoggerFactory)10 InputStream (java.io.InputStream)8 DeploymentConfig (io.fabric8.openshift.api.model.DeploymentConfig)7 Test (org.junit.Test)7 Volume (io.fabric8.kubernetes.api.model.Volume)6 Arrays (java.util.Arrays)6 PodList (io.fabric8.kubernetes.api.model.PodList)5 VolumeMount (io.fabric8.kubernetes.api.model.VolumeMount)5 KubernetesClient (io.fabric8.kubernetes.client.KubernetesClient)5