From 4c020b419160a4f35b8919cfc491e5a0e6557a21 Mon Sep 17 00:00:00 2001 From: manusa Date: Tue, 22 Dec 2020 18:15:13 +0100 Subject: [PATCH] doc: Updated and cleaned up Kubernetes + OpenShift examples --- .../io/fabric8/kubernetes/client/Config.java | 11 +- .../client/internal/VersionUsageUtils.java | 4 +- .../kubernetes/examples/BindingExample.java | 61 ++++++--- .../kubernetes/examples/CRDLoadExample.java | 32 ++--- .../kubernetes/examples/ConfigMapExample.java | 13 +- .../kubernetes/examples/CreatePod.java | 15 +-- .../examples/CredentialsExample.java | 33 ++--- .../CustomResourceInformerExample.java | 40 ++++-- .../kubernetes/examples/DeleteExamples.java | 41 ++---- .../examples/DeploymentExamples.java | 54 +++----- .../kubernetes/examples/EndpointsExample.java | 59 ++++----- .../kubernetes/examples/ExecExample.java | 39 +++--- .../examples/ExecExampleWithTerminalSize.java | 51 ++++---- .../kubernetes/examples/ExecLoopExample.java | 118 ++++++++--------- .../kubernetes/examples/ExecPipesExample.java | 5 +- .../examples/ExecuteCommandOnPodExample.java | 4 +- .../kubernetes/examples/FullExample.java | 5 +- .../HorizontalPodAutoscalerV1Example.java | 56 ++++++++ ...orizontalPodAutoscalerV2beta2Example.java} | 6 +- .../kubernetes/examples/JobExample.java | 14 +- .../examples/KubernetesVersionExample.java | 40 +++--- .../examples/LeaderElectionExamples.java | 1 + .../ListCustomResourceDefinitions.java | 5 +- .../kubernetes/examples/ListExamples.java | 31 ++--- .../examples/ListStorageClassExample.java | 30 ++--- .../LoadMultipleDocumentsFromFileExample.java | 13 +- .../examples/NamespaceQuotaExample.java | 51 ++++---- .../examples/NetworkPolicyExample.java | 13 +- .../PersistentVolumeClaimExample.java | 50 +++---- .../examples/PersistentVolumeExample.java | 33 ++--- .../examples/PodDisruptionBudgetExample.java | 31 ++--- .../kubernetes/examples/PodLogExample.java | 22 ++-- .../examples/PodPresetExamples.java | 37 ++---- .../examples/PodPriorityExample.java | 31 ++--- .../examples/PodSecurityPolicyExample.java | 2 +- .../examples/PortForwardExample.java | 51 ++++---- .../examples/RawCustomResourceExample.java | 56 ++++---- .../kubernetes/examples/ReplaceExamples.java | 46 +++---- .../kubernetes/examples/ServiceExample.java | 36 ++--- ...xample.java => SharedInformerExample.java} | 10 +- .../examples/StorageClassExamples.java | 89 +++++-------- .../kubernetes/examples/TopExample.java | 44 +++++-- .../examples/WaitUntilReadyExample.java | 64 +++++---- .../kubernetes/examples/WatchExample.java | 79 ++++++----- .../openshift/examples/AdaptClient.java | 14 +- .../examples/BuildConfigExamples.java | 99 +++++++------- .../examples/DeploymentConfigExamples.java | 67 +++++----- .../examples/ImageStreamExample.java | 69 ++++------ .../examples/ImageStreamTagExample.java | 56 +++----- .../openshift/examples/ListBuildConfigs.java | 17 ++- .../examples/ListDeploymentConfigs.java | 29 +++-- .../openshift/examples/ListImageStreams.java | 19 +-- .../openshift/examples/LoadExample.java | 123 +++++++++--------- .../openshift/examples/LoginExample.java | 4 +- .../examples/NewProjectExamples.java | 30 ++--- .../examples/OpenShiftVersionExample.java | 48 +++---- .../SecurityContextConstraintExample.java | 26 ++-- .../openshift/examples/TemplateExample.java | 17 ++- .../openshift/examples/WatchBuildConfigs.java | 27 ++-- .../dsl/internal/ProjectOperationsImpl.java | 1 - .../ProjectRequestsOperationImpl.java | 4 +- 61 files changed, 1017 insertions(+), 1159 deletions(-) create mode 100644 kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV1Example.java rename kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/{HorizontalPodAutoscalerExample.java => HorizontalPodAutoscalerV2beta2Example.java} (93%) rename kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/{InformerExample.java => SharedInformerExample.java} (90%) diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/Config.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/Config.java index 312ea648689..edf674cf136 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/Config.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/Config.java @@ -25,7 +25,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashMap; @@ -415,7 +414,7 @@ public static void configFromSysPropsOrEnvVars(Config config) { if (configuredMaxConcurrentRequests != null) { config.setMaxConcurrentRequests(Integer.parseInt(configuredMaxConcurrentRequests)); } - + String configuredMaxConcurrentReqeustsPerHost = Utils.getSystemPropertyOrEnvVar(KUBERNETES_MAX_CONCURRENT_REQUESTS_PER_HOST, String.valueOf(config.getMaxConcurrentRequestsPerHost())); if (configuredMaxConcurrentReqeustsPerHost != null) { config.setMaxConcurrentRequestsPerHost(Integer.parseInt(configuredMaxConcurrentReqeustsPerHost)); @@ -1244,9 +1243,9 @@ public Boolean getAutoConfigure() { /** * Returns all the {@link NamedContext}s that exist in the kube config - * + * * @return all the contexts - * + * * @see NamedContext */ public List getContexts() { @@ -1259,9 +1258,9 @@ public void setContexts(List contexts) { /** * Returns the current context that's defined in the kube config. Returns {@code null} if there's none - * + * * @return the current context - * + * * @see NamedContext */ public NamedContext getCurrentContext() { diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/internal/VersionUsageUtils.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/internal/VersionUsageUtils.java index 173019035cb..4afc77655aa 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/internal/VersionUsageUtils.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/internal/VersionUsageUtils.java @@ -22,13 +22,13 @@ import java.util.concurrent.ConcurrentHashMap; /** - * Utility class to monitor alhpa/beta version usage and log. + * Utility class to monitor alpha/beta version usage and log. */ public final class VersionUsageUtils { private static final Logger LOG = LoggerFactory.getLogger(VersionUsageUtils.class); - private static ConcurrentHashMap UNSTABLE_TYPES = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap UNSTABLE_TYPES = new ConcurrentHashMap<>(); private static final boolean LOG_EACH_USAGE = false; diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/BindingExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/BindingExample.java index 5123d8e373c..b9dda78d169 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/BindingExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/BindingExample.java @@ -15,35 +15,56 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.Binding; import io.fabric8.kubernetes.api.model.BindingBuilder; -import io.fabric8.kubernetes.api.model.KubernetesResourceList; +import io.fabric8.kubernetes.api.model.Node; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; +import io.fabric8.kubernetes.api.model.PodBuilder; +import io.fabric8.kubernetes.api.model.PodSpecBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.io.IOException; +import java.util.UUID; public class BindingExample { - private static Logger logger = LoggerFactory.getLogger(WaitUntilReadyExample.class); - public static void main(String args[]) throws IOException, InterruptedException { + @SuppressWarnings("java:S106") + public static void main(String[] args) { + final String podName = "binding-example-" + UUID.randomUUID().toString(); try (final KubernetesClient client = new DefaultKubernetesClient()) { - Binding binding = new BindingBuilder() - .withNewMetadata().withName("testpod").endMetadata() - .withNewTarget().withKind("Node").withApiVersion("v1").withName("minikube").endTarget() - .build(); + final String namespace; + if (client.getConfiguration().getNamespace() != null) { + namespace = client.getConfiguration().getNamespace(); + } else if (client.getNamespace() != null) { + namespace = client.getNamespace(); + } else { + namespace = client.namespaces().list().getItems().stream().findFirst() + .orElseThrow(() -> new IllegalStateException("No namespace available")).getMetadata().getName(); + } - client.bindings().inNamespace("default").create(binding); + client.pods().inNamespace(namespace).create(new PodBuilder() + .withMetadata(new ObjectMetaBuilder() + .withName(podName) + .build()) + .withSpec(new PodSpecBuilder() + .withSchedulerName("random-scheduler-name-which-does-not-exist") + .addNewContainer() + .withName(podName) + .withImage("nginx:latest") + .endContainer() + .build()) + .build() + ); + final Node firstNode = client.nodes().list().getItems().stream().findFirst() + .orElseThrow(() -> new IllegalStateException("No nodes available")); + client.bindings().inNamespace(namespace).create(new BindingBuilder() + .withNewMetadata().withName(podName).endMetadata() + .withNewTarget() + .withKind(firstNode.getKind()) + .withApiVersion(firstNode.getApiVersion()) + .withName(firstNode.getMetadata().getName()).endTarget() + .build()); + System.out.printf("Successfully bound Pod %s to Node %s%n", + podName, firstNode.getMetadata().getName()); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CRDLoadExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CRDLoadExample.java index 5017d8e1edf..a053ba32eaa 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CRDLoadExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CRDLoadExample.java @@ -22,34 +22,26 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; - public class CRDLoadExample { - private static Logger logger = LoggerFactory.getLogger(CRDLoadExample.class); - public static void main(String args[]) throws IOException { + private static final Logger logger = LoggerFactory.getLogger(CRDLoadExample.class); + + public static void main(String[] args) { try (final KubernetesClient client = new DefaultKubernetesClient()) { // List all Custom resources. - log("Listing all current Custom Resource Definitions :"); - CustomResourceDefinitionList crdList = client.customResourceDefinitions().list(); - crdList.getItems().forEach(crd -> log(crd.getMetadata().getName())); + logger.info("Listing all current Custom Resource Definitions :"); + CustomResourceDefinitionList crdList = client.apiextensions().v1beta1().customResourceDefinitions().list(); + crdList.getItems().forEach(crd -> logger.info(crd.getMetadata().getName())); // Creating a custom resource from yaml - CustomResourceDefinition aCustomResourceDefinition = client.customResourceDefinitions().load(CRDLoadExample.class.getResourceAsStream("/crd.yml")).get(); - log("Creating CRD..."); - client.customResourceDefinitions().create(aCustomResourceDefinition); + CustomResourceDefinition aCustomResourceDefinition = client.apiextensions().v1beta1().customResourceDefinitions() + .load(CRDLoadExample.class.getResourceAsStream("/crd.yml")).get(); + logger.info("Creating CRD..."); + client.apiextensions().v1beta1().customResourceDefinitions().create(aCustomResourceDefinition); - log("Updated Custom Resource Definitions: "); - client.customResourceDefinitions().list().getItems().forEach(crd -> log(crd.getMetadata().getName())); + logger.info("Updated Custom Resource Definitions: "); + client.apiextensions().v1beta1().customResourceDefinitions().list().getItems().forEach(crd -> logger.info(crd.getMetadata().getName())); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ConfigMapExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ConfigMapExample.java index 3e384032c29..5b2232d831d 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ConfigMapExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ConfigMapExample.java @@ -30,7 +30,7 @@ public class ConfigMapExample { private static final Logger logger = LoggerFactory.getLogger(ConfigMapExample.class); - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { Config config = new ConfigBuilder().build(); KubernetesClient client = new DefaultKubernetesClient(config); @@ -56,19 +56,10 @@ public static void main(String[] args) throws InterruptedException { addToData("bar", "beer"). build()); - log("Upserted ConfigMap at " + configMap.getMetadata().getSelfLink() + " data " + configMap.getData()); + logger.info("Upserted ConfigMap at {} data {}", configMap.getMetadata().getSelfLink(), configMap.getData()); } finally { client.close(); } } - - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CreatePod.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CreatePod.java index f7c21fcb68a..d04cfe325a0 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CreatePod.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CreatePod.java @@ -22,7 +22,6 @@ import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; import io.fabric8.kubernetes.client.dsl.PodResource; import org.slf4j.Logger; @@ -38,7 +37,7 @@ public class CreatePod { public static void main(String[] args) { if (args.length == 0) { - System.out.println("Usage: podJsonFileName "); + logger.warn("Usage: podJsonFileName "); return; } String fileName = args[0]; @@ -49,7 +48,7 @@ public static void main(String[] args) { File file = new File(fileName); if (!file.exists() || !file.isFile()) { - System.err.println("File does not exist: " + fileName); + logger.warn("File does not exist: {}", fileName); return; } @@ -65,21 +64,19 @@ public static void main(String[] args) { List resources = client.load(new FileInputStream(fileName)).get(); if (resources.isEmpty()) { - System.err.println("No resources loaded from file: " +fileName); + logger.error("No resources loaded from file: {}", fileName); return; } HasMetadata resource = resources.get(0); if (resource instanceof Pod){ Pod pod = (Pod) resource; - System.out.println("Creating pod in namespace " + namespace); + logger.info("Creating pod in namespace {}", namespace); NonNamespaceOperation> pods = client.pods().inNamespace(namespace); Pod result = pods.create(pod); - System.out.println("Created pod " + result.getMetadata().getName()); + logger.info("Created pod {}", result.getMetadata().getName()); } else { - System.err.println("Loaded resource is not a Pod! " + resource); + logger.error("Loaded resource is not a Pod! {}", resource); } - } catch (KubernetesClientException e) { - logger.error(e.getMessage(), e); } catch (Exception e) { logger.error(e.getMessage(), e); } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CredentialsExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CredentialsExample.java index 446f0e6df0a..bd49e7bb90c 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CredentialsExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CredentialsExample.java @@ -18,9 +18,7 @@ import io.fabric8.kubernetes.client.AutoAdaptableKubernetesClient; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; -import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.openshift.client.OpenShiftClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,27 +26,24 @@ public class CredentialsExample { private static final Logger logger = LoggerFactory.getLogger(CredentialsExample.class); - public static void main(String[] args) throws InterruptedException { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; - } - - Config config = new ConfigBuilder().withMasterUrl(master) + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + } + Config config = configBuilder .withTrustCerts(true) - .withUsername("admin") - .withPassword("admin") - .withNamespace("default") + .withUsername("developer") + .withPassword("developer") + .withNamespace("myproject") .build(); try (final KubernetesClient client = new AutoAdaptableKubernetesClient(config)) { - log("Received pods", client.pods().list()); + logger.info("Received pods {}", client.pods().list()); } catch (Exception e) { - e.printStackTrace(); logger.error(e.getMessage(), e); - Throwable[] suppressed = e.getSuppressed(); if (suppressed != null) { for (Throwable t : suppressed) { @@ -57,12 +52,4 @@ public static void main(String[] args) throws InterruptedException { } } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CustomResourceInformerExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CustomResourceInformerExample.java index f8deb343d0e..953a8f3eeb4 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CustomResourceInformerExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/CustomResourceInformerExample.java @@ -15,6 +15,9 @@ */ package io.fabric8.kubernetes.examples; +import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinition; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext; @@ -34,37 +37,36 @@ public class CustomResourceInformerExample { public static void main(String[] args) { try (KubernetesClient client = new DefaultKubernetesClient()) { - CustomResourceDefinitionContext crdContext = new CustomResourceDefinitionContext.Builder() - .withVersion("v1") - .withScope("Namespaced") - .withGroup("demo.fabric8.io") - .withPlural("dummies") - .build(); - + final CustomResourceDefinition crd = CustomResourceDefinitionContext + .v1beta1CRDFromCustomResourceType(Dummy.class).build(); + client.apiextensions().v1beta1().customResourceDefinitions().createOrReplace(crd); + final CustomResourceDefinitionContext crdContext = CustomResourceDefinitionContext.fromCustomResourceType(Dummy.class); SharedInformerFactory sharedInformerFactory = client.informers(); - SharedIndexInformer podInformer = sharedInformerFactory.sharedIndexInformerForCustomResource(crdContext, Dummy.class, DummyList.class, 1 * 60 * 1000); + SharedIndexInformer podInformer = sharedInformerFactory + .sharedIndexInformerForCustomResource(crdContext, Dummy.class, DummyList.class, 60 * 1000L); logger.info("Informer factory initialized."); podInformer.addEventHandler( new ResourceEventHandler() { @Override public void onAdd(Dummy pod) { - System.out.printf("%s dummy added\n", pod.getMetadata().getName()); + logger.info("{} dummy added", pod.getMetadata().getName()); } @Override public void onUpdate(Dummy oldPod, Dummy newPod) { - System.out.printf("%s dummy updated\n", oldPod.getMetadata().getName()); + logger.info("{} dummy updated", oldPod.getMetadata().getName()); } @Override public void onDelete(Dummy pod, boolean deletedFinalStateUnknown) { - System.out.printf("%s dummy deleted \n", pod.getMetadata().getName()); + logger.info("{} dummy deleted", pod.getMetadata().getName()); } } ); - sharedInformerFactory.addSharedInformerEventListener(exception -> logger.error("Exception occurred, but caught")); + sharedInformerFactory.addSharedInformerEventListener(ex -> + logger.error("Exception occurred, but caught: {}", ex.getMessage())); logger.info("Starting all registered informers"); sharedInformerFactory.startAllRegisteredInformers(); @@ -82,8 +84,20 @@ public void onDelete(Dummy pod, boolean deletedFinalStateUnknown) { } }); + final Dummy toCreate = new Dummy(); + toCreate.getMetadata().setName("dummy"); + if (client.getConfiguration().getNamespace() != null) { + toCreate.getMetadata().setNamespace(client.getConfiguration().getNamespace()); + } else if (client.getNamespace() != null) { + toCreate.getMetadata().setNamespace(client.getNamespace()); + } else { + toCreate.getMetadata().setNamespace(client.namespaces().list().getItems().stream().findFirst() + .map(HasMetadata::getMetadata).map(ObjectMeta::getNamespace).orElse("default")); + } + + client.customResources(crdContext, Dummy.class, DummyList.class).createOrReplace(toCreate); // Wait for some time now - TimeUnit.MINUTES.sleep(60); + TimeUnit.MINUTES.sleep(5); } catch (InterruptedException interruptedException) { Thread.currentThread().interrupt(); logger.info("interrupted: {}", interruptedException.getMessage()); diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeleteExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeleteExamples.java index fc6d92dc6c1..6b529f71352 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeleteExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeleteExamples.java @@ -16,8 +16,6 @@ package io.fabric8.kubernetes.examples; import io.fabric8.kubernetes.api.model.NamespaceBuilder; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; @@ -28,33 +26,22 @@ public class DeleteExamples { private static final Logger logger = LoggerFactory.getLogger(DeleteExamples.class); - public static void main(String[] args) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; - } + private static final String NAMESPACE = "this-is-a-test"; - Config config = new ConfigBuilder().withMasterUrl(master).build(); - KubernetesClient client = new DefaultKubernetesClient(config); - try { - log("Create namespace:", client.namespaces().create(new NamespaceBuilder().withNewMetadata().withName("thisisatest").endMetadata().build())); - log("Deleted namespace:", client.namespaces().withName("test").delete()); - log("Deleted testPod:", client.pods().inNamespace("thisisatest").withName("testpod").delete()); - log("Deleted pod by label:", client.pods().withLabel("this", "works").delete()); - } catch (KubernetesClientException e) { - logger.error(e.getMessage(), e); - } finally { - client.namespaces().withName("thisisatest").delete(); - client.close(); + public static void main(String[] args) { + try(KubernetesClient client = new DefaultKubernetesClient()) { + try { + logger.info("Create namespace: {}", client.namespaces().create( + new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).endMetadata().build())); + logger.info("Deleted namespace: {}", client.namespaces().withName(NAMESPACE).delete()); + logger.info("Deleted testPod: {}", client.pods().inNamespace(NAMESPACE).withName("test-pod").delete()); + logger.info("Deleted pod by label: {}", client.pods().withLabel("this", "works").delete()); + } catch (KubernetesClientException e) { + logger.error(e.getMessage(), e); + } finally { + client.namespaces().withName(NAMESPACE).delete(); + } } } - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } - } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeploymentExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeploymentExamples.java index 5e5103450fc..7b62dda9982 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeploymentExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/DeploymentExamples.java @@ -16,37 +16,33 @@ package io.fabric8.kubernetes.examples; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.ServiceAccountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class DeploymentExamples { + private static final Logger logger = LoggerFactory.getLogger(DeploymentExamples.class); - public static void main(String[] args) throws InterruptedException { - Config config = new ConfigBuilder().build(); - KubernetesClient client = new DefaultKubernetesClient(config); + private static final String NAMESPACE = "this-is-a-test"; - try { + public static void main(String[] args) { + try (KubernetesClient client = new DefaultKubernetesClient()) { // Create a namespace for all our stuff - Namespace ns = new NamespaceBuilder().withNewMetadata().withName("thisisatest").addToLabels("this", "rocks").endMetadata().build(); - log("Created namespace", client.namespaces().createOrReplace(ns)); + Namespace ns = new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).addToLabels("this", "rocks").endMetadata().build(); + logger.info("Created namespace: {}", client.namespaces().createOrReplace(ns)); ServiceAccount fabric8 = new ServiceAccountBuilder().withNewMetadata().withName("fabric8").endMetadata().build(); - client.serviceAccounts().inNamespace("thisisatest").createOrReplace(fabric8); - for (int i = 0; i < 2; i++) { - System.err.println("Iteration:" + (i+1)); + client.serviceAccounts().inNamespace(NAMESPACE).createOrReplace(fabric8); + try { Deployment deployment = new DeploymentBuilder() .withNewMetadata() .withName("nginx") @@ -73,30 +69,18 @@ public static void main(String[] args) throws InterruptedException { .endSpec() .build(); + deployment = client.apps().deployments().inNamespace(NAMESPACE).create(deployment); + logger.info("Created deployment: {}", deployment); - deployment = client.apps().deployments().inNamespace("thisisatest").create(deployment); - log("Created deployment", deployment); - - System.err.println("Scaling up:" + deployment.getMetadata().getName()); - client.apps().deployments().inNamespace("thisisatest").withName("nginx").scale(2, true); - log("Created replica sets:", client.apps().replicaSets().inNamespace("thisisatest").list().getItems()); - System.err.println("Deleting:" + deployment.getMetadata().getName()); + logger.info("Scaling up: {}", deployment.getMetadata().getName()); + client.apps().deployments().inNamespace(NAMESPACE).withName("nginx").scale(2, true); + logger.info("Created replica sets: {}", client.apps().replicaSets().inNamespace(NAMESPACE).list().getItems()); + logger.info("Deleting: {}", deployment.getMetadata().getName()); client.resource(deployment).delete(); + } finally { + client.namespaces().withName(NAMESPACE).delete(); } - log("Done."); - - }finally { - client.namespaces().withName("thisisatest").delete(); - client.close(); + logger.info("Done."); } } - - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/EndpointsExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/EndpointsExample.java index 71df30ce2b9..7726e55d5ee 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/EndpointsExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/EndpointsExample.java @@ -18,63 +18,52 @@ import io.fabric8.kubernetes.api.model.Endpoints; import io.fabric8.kubernetes.api.model.EndpointsBuilder; +import io.fabric8.kubernetes.api.model.Namespace; +import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class EndpointsExample { + private static final Logger logger = LoggerFactory.getLogger(EndpointsExample.class); - public static void main(String[] args) { - String master = "https://localhost:8443"; + private static final String NAMESPACE = "endpoints-example"; - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + public static void main(String[] args) { + try (KubernetesClient client = new DefaultKubernetesClient()) { + Namespace ns = new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).addToLabels("this", "rocks").endMetadata().build(); + logger.info("Created namespace: {}", client.namespaces().createOrReplace(ns)); try { - String namespace = "default"; - log("namespace", namespace); - Deployment deployment = client.apps().deployments().inNamespace(namespace).load(EndpointsExample.class.getResourceAsStream("/endpoints-deployment.yml")).get(); - log("Deployment created"); - client.apps().deployments().inNamespace(namespace).create(deployment); + logger.info("Namespace: {}", ns); + Deployment deployment = client.apps().deployments().inNamespace(NAMESPACE).load(EndpointsExample.class.getResourceAsStream("/endpoints-deployment.yml")).get(); + logger.info("Deployment created"); + client.apps().deployments().inNamespace(NAMESPACE).create(deployment); - Service service = client.services().inNamespace(namespace).load(EndpointsExample.class.getResourceAsStream("/endpoints-service.yml")).get(); - log("Service created"); - client.services().inNamespace(namespace).create(service); + Service service = client.services().inNamespace(NAMESPACE).load(EndpointsExample.class.getResourceAsStream("/endpoints-service.yml")).get(); + logger.info("Service created"); + client.services().inNamespace(NAMESPACE).create(service); Endpoints endpoints = new EndpointsBuilder() - .withNewMetadata().withName("external-web").withNamespace(namespace).endMetadata() + .withNewMetadata().withName("external-web").withNamespace(NAMESPACE).endMetadata() .withSubsets().addNewSubset().addNewAddress().withIp("10.10.50.53").endAddress() .addNewPort().withPort(80).withName("apache").endPort() .endSubset() .build(); - log("Endpoint created"); - client.endpoints().inNamespace(namespace).create(endpoints); - log("Endpoint url"); - endpoints = client.endpoints().inNamespace(namespace).withName("external-web").get(); - log("Endpoint Port", endpoints.getSubsets().get(0).getPorts().get(0).getName()); + logger.info("Endpoint created"); + client.endpoints().inNamespace(NAMESPACE).create(endpoints); + logger.info("Endpoint url"); + endpoints = client.endpoints().inNamespace(NAMESPACE).withName("external-web").get(); + logger.info("Endpoint Port {}", endpoints.getSubsets().get(0).getPorts().get(0).getName()); + } catch (Exception e) { + logger.error("Exception occurred: {}", e.getMessage(), e); } finally { - // clear resources - client.apps().deployments().inNamespace("default").withName("endpoints-deployment").delete(); - client.services().inNamespace("default").withName("endpoints-nginx").delete(); - client.endpoints().inNamespace("default").withName("external-web").delete(); + client.namespaces().withName(NAMESPACE).delete(); } - } catch (Exception e) { - log("Exception occurred: ", e.getMessage()); - e.printStackTrace(); } } - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } - } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExample.java index 8f6211ce086..a3f5428f3ef 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExample.java @@ -15,47 +15,46 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.ExecListener; import io.fabric8.kubernetes.client.dsl.ExecWatch; import okhttp3.Response; +@SuppressWarnings("java:S106") public class ExecExample { public static void main(String[] args) throws InterruptedException { if (args.length < 1) { - System.out.println("Usage: podName [master] [namespace]"); + System.out.println("Usage: podName [namespace]"); return; } String podName = args[0]; String namespace = "default"; - String master = "https://localhost:8443/"; if (args.length > 1) { - master = args[1]; - } - if (args.length > 2) { - namespace = args[2]; - } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config); - ExecWatch watch = client.pods().inNamespace(namespace).withName(podName) - .readingInput(System.in) - .writingOutput(System.out) - .writingError(System.err) - .withTTY() - .usingListener(new SimpleListener()) - .exec()){ + namespace = args[1]; + } - Thread.sleep(10 * 1000); + try ( + KubernetesClient client = new DefaultKubernetesClient(); + ExecWatch watch = newExecWatch(client, namespace, podName) + ) { + Thread.sleep(10 * 1000L); } } + private static ExecWatch newExecWatch(KubernetesClient client, String namespace, String podName) { + return client.pods().inNamespace(namespace).withName(podName) + .readingInput(System.in) + .writingOutput(System.out) + .writingError(System.err) + .withTTY() + .usingListener(new SimpleListener()) + .exec("sh", "-c", "echo 'Hello world!'"); + } + private static class SimpleListener implements ExecListener { @Override diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExampleWithTerminalSize.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExampleWithTerminalSize.java index 26cf231add4..d03dfea95f5 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExampleWithTerminalSize.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecExampleWithTerminalSize.java @@ -15,56 +15,55 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.ExecListener; import io.fabric8.kubernetes.client.dsl.ExecWatch; import okhttp3.Response; +@SuppressWarnings("java:S106") public class ExecExampleWithTerminalSize { public static void main(String[] args) throws InterruptedException { if (args.length < 1) { - System.out.println("Usage: podName [master] [namespace] [columns] [lines]\n" + + System.out.println("Usage: podName [namespace] [columns] [lines]\n" + "Use env variable COLUMNS & LINES to initialize terminal size."); return; } String podName = args[0]; String namespace = "default"; - String master = "https://localhost:8443/"; String columns = "80"; String lines = "24"; if (args.length > 1) { - master = args[1]; - } - if (args.length > 2) { - namespace = args[2]; - if (args.length > 3) { - columns = args[3]; - if (args.length > 4) { - lines = args[4]; - } - } - } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config); - ExecWatch watch = client.pods().inNamespace(namespace).withName(podName) - .readingInput(System.in) - .writingOutput(System.out) - .writingError(System.err) - .withTTY() - .usingListener(new SimpleListener()) - .exec("env", "TERM=xterm", "COLUMNS=" + columns, "LINES=" + lines, "bash")){ + namespace = args[1]; + } + if (args.length > 2) { + columns = args[2]; + } + if (args.length > 3) { + lines = args[3]; + } - Thread.sleep(10 * 1000); + try ( + KubernetesClient client = new DefaultKubernetesClient(); + ExecWatch watch = newExecWatch(client, namespace, podName, columns, lines); + ) { + Thread.sleep(10 * 1000L); } } + private static ExecWatch newExecWatch(KubernetesClient client, String namespace, String podName, String columns, String lines) { + return client.pods().inNamespace(namespace).withName(podName) + .readingInput(System.in) + .writingOutput(System.out) + .writingError(System.err) + .withTTY() + .usingListener(new SimpleListener()) + .exec("env", "TERM=xterm", "COLUMNS=" + columns, "LINES=" + lines, "sh", "-c", "ls -la"); + } + private static class SimpleListener implements ExecListener { @Override diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecLoopExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecLoopExample.java index 30f624f13e2..7755f257358 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecLoopExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecLoopExample.java @@ -13,81 +13,73 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package io.fabric8.kubernetes.examples; - - import io.fabric8.kubernetes.client.Callback; - import io.fabric8.kubernetes.client.Config; - import io.fabric8.kubernetes.client.ConfigBuilder; - import io.fabric8.kubernetes.client.dsl.ExecListener; - import io.fabric8.kubernetes.client.dsl.ExecWatch; - import io.fabric8.kubernetes.client.utils.InputStreamPumper; - import io.fabric8.openshift.client.DefaultOpenShiftClient; - import io.fabric8.openshift.client.OpenShiftClient; - import okhttp3.Response; - - import java.io.IOException; - import java.util.concurrent.CountDownLatch; - import java.util.concurrent.Executors; - import java.util.concurrent.Future; - import java.util.concurrent.ScheduledExecutorService; - import java.util.concurrent.TimeUnit; +package io.fabric8.kubernetes.examples; + +import io.fabric8.kubernetes.client.Callback; +import io.fabric8.kubernetes.client.DefaultKubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.dsl.ExecListener; +import io.fabric8.kubernetes.client.dsl.ExecWatch; +import io.fabric8.kubernetes.client.utils.InputStreamPumper; +import okhttp3.Response; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * @author Angel Misevski (https://github.com/amisevsk). */ +@SuppressWarnings("java:S106") public class ExecLoopExample { - public static void main(String[] args) throws InterruptedException, IOException { - String master = "https://localhost:8443/"; - String podName = null; - - if (args.length >= 2) { - master = args[0]; - podName = args[1]; + public static void main(String[] args) throws InterruptedException { + if (args.length == 0) { + System.out.println("Usage: podName [namespace]"); + return; } - if (args.length == 1) { - podName = args[0]; - } - - Config config = new ConfigBuilder() - .withMasterUrl(master) - .build(); - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(20); - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { - for (int i = 0; i < 10; System.out.println("i=" + i), i++) { - ExecWatch watch = null; - InputStreamPumper pump = null; - final CountDownLatch latch = new CountDownLatch(1); - watch = client.pods().withName(podName).redirectingOutput().usingListener(new ExecListener() { - @Override - public void onOpen(Response response) { - } + final String podName = args[0]; + String namespace = "default"; - @Override - public void onFailure(Throwable t, Response response) { - latch.countDown(); - } - - @Override - public void onClose(int code, String reason) { - latch.countDown(); - } - }).exec("date"); - pump = new InputStreamPumper(watch.getOutput(), new SystemOutCallback()); - executorService.submit(pump); - Future outPumpFuture = executorService.submit(pump, "Done"); - executorService.scheduleAtFixedRate(new FutureChecker("Pump " + (i + 1), outPumpFuture), 0, 2, TimeUnit.SECONDS); + if (args.length > 1) { + namespace = args[1]; + } - latch.await(5, TimeUnit.SECONDS); - //We need to wait or the pumper (ws -> System.out) will not be able to print the message. - //Thread.sleep(1000); - watch.close(); - pump.close(); + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(20); + try (KubernetesClient client = new DefaultKubernetesClient()) { + for (int i = 0; i < 10; System.out.println("i=" + i), i++) { + ExecWatch watch = null; + InputStreamPumper pump = null; + final CountDownLatch latch = new CountDownLatch(1); + watch = client.pods().inNamespace(namespace).withName(podName).redirectingOutput().usingListener(new ExecListener() { + @Override + public void onOpen(Response response) { + } + + @Override + public void onFailure(Throwable t, Response response) { + latch.countDown(); + } + + @Override + public void onClose(int code, String reason) { + latch.countDown(); + } + }).exec("date"); + pump = new InputStreamPumper(watch.getOutput(), new SystemOutCallback()); + executorService.submit(pump); + Future outPumpFuture = executorService.submit(pump, "Done"); + executorService.scheduleAtFixedRate(new FutureChecker("Pump " + (i + 1), outPumpFuture), 0, 2, TimeUnit.SECONDS); + + latch.await(5, TimeUnit.SECONDS); + watch.close(); + pump.close(); - } } - + } executorService.shutdown(); System.out.println("Done."); } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecPipesExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecPipesExample.java index 63bbd9592c4..396799a03ab 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecPipesExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecPipesExample.java @@ -24,13 +24,12 @@ import io.fabric8.kubernetes.client.dsl.ExecWatch; import io.fabric8.kubernetes.client.utils.InputStreamPumper; -import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecPipesExample { - public static void main(String[] args) throws InterruptedException, IOException { + public static void main(String[] args) { String master = "https://localhost:8443/"; String podName = null; @@ -57,7 +56,7 @@ public static void main(String[] args) throws InterruptedException, IOException executorService.submit(pump); watch.getInput().write("ls -al\n".getBytes()); - Thread.sleep(5 * 1000); + Thread.sleep(5 * 1000L); } catch (Exception e) { throw KubernetesClientException.launderThrowable(e); } finally { diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecuteCommandOnPodExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecuteCommandOnPodExample.java index 54b3dfcebde..9329d953237 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecuteCommandOnPodExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ExecuteCommandOnPodExample.java @@ -32,6 +32,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; +@SuppressWarnings("java:S106") public class ExecuteCommandOnPodExample implements AutoCloseable { private final OkHttpClient okHttpClient; @@ -53,7 +54,8 @@ public void close() { @SneakyThrows public String execCommandOnPod(String podName, String namespace, String... cmd) { Pod pod = client.pods().inNamespace(namespace).withName(podName).get(); - System.out.printf("Running command: [%s] on pod [%s] in namespace [%s]%n", Arrays.toString(cmd), pod.getMetadata().getName()); + System.out.printf("Running command: [%s] on pod [%s] in namespace [%s]%n", + Arrays.toString(cmd), pod.getMetadata().getName(), namespace); CompletableFuture data = new CompletableFuture<>(); try (ExecWatch execWatch = execCmd(pod, data, cmd)) { diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java index 2f2c02f96e7..da330389028 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java @@ -39,7 +39,7 @@ public class FullExample { private static final Logger logger = LoggerFactory.getLogger(FullExample.class); - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { String master = "https://localhost:8443/"; if (args.length == 1) { master = args[0]; @@ -214,10 +214,7 @@ public void onClose(WatcherException e) { log("Deleted namespace"); } } catch (Exception e) { - e.printStackTrace(); logger.error(e.getMessage(), e); - - Throwable[] suppressed = e.getSuppressed(); if (suppressed != null) { for (Throwable t : suppressed) { diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV1Example.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV1Example.java new file mode 100644 index 00000000000..c4a9767d0d8 --- /dev/null +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV1Example.java @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2015 Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fabric8.kubernetes.examples; + +import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscaler; +import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscalerBuilder; +import io.fabric8.kubernetes.client.ConfigBuilder; +import io.fabric8.kubernetes.client.DefaultKubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HorizontalPodAutoscalerV1Example { + private static final Logger logger = LoggerFactory.getLogger(HorizontalPodAutoscalerV1Example.class); + + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + } + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + HorizontalPodAutoscaler horizontalPodAutoscaler = new HorizontalPodAutoscalerBuilder() + .withNewMetadata().withName("the-hpa").withNamespace("default").endMetadata() + .withNewSpec() + .withNewScaleTargetRef() + .withApiVersion("apps/v1") + .withKind("Deployment") + .withName("the-deployment") + .endScaleTargetRef() + .withMinReplicas(1) + .withMaxReplicas(10) + .withTargetCPUUtilizationPercentage(50) + .endSpec() + .build(); + + client.autoscaling().v1().horizontalPodAutoscalers().inNamespace("default").createOrReplace(horizontalPodAutoscaler); + } catch (KubernetesClientException e) { + logger.error(e.getMessage(), e); + } + } +} diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV2beta2Example.java similarity index 93% rename from kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerExample.java rename to kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV2beta2Example.java index 569776999c9..edaccd663b5 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/HorizontalPodAutoscalerV2beta2Example.java @@ -26,15 +26,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class HorizontalPodAutoscalerExample { - private static final Logger logger = LoggerFactory.getLogger(HorizontalPodAutoscalerExample.class); +public class HorizontalPodAutoscalerV2beta2Example { + private static final Logger logger = LoggerFactory.getLogger(HorizontalPodAutoscalerV2beta2Example.class); public static void main(String[] args) { final ConfigBuilder configBuilder = new ConfigBuilder(); if (args.length > 0) { configBuilder.withMasterUrl(args[0]); } - try (final KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { HorizontalPodAutoscaler horizontalPodAutoscaler = new HorizontalPodAutoscalerBuilder() .withNewMetadata().withName("the-hpa").withNamespace("default").endMetadata() .withNewSpec() diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/JobExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/JobExample.java index 8ba1e2e6613..eb343a0cb02 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/JobExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/JobExample.java @@ -32,13 +32,11 @@ public class JobExample { private static final Logger logger = LoggerFactory.getLogger(JobExample.class); public static void main(String[] args) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - final Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { final String namespace = "default"; final Job job = new JobBuilder() .withApiVersion("batch/v1") @@ -62,7 +60,7 @@ public static void main(String[] args) { .build(); logger.info("Creating job pi."); - client.batch().jobs().inNamespace(namespace).create(job); + client.batch().jobs().inNamespace(namespace).createOrReplace(job); // Get All pods created by the job PodList podList = client.pods().inNamespace(namespace).withLabel("job-name", job.getMetadata().getName()).list(); @@ -74,7 +72,7 @@ public static void main(String[] args) { String joblog = client.batch().jobs().inNamespace(namespace).withName("pi").getLog(); logger.info(joblog); - } catch (final KubernetesClientException e) { + } catch (KubernetesClientException e) { logger.error("Unable to create job", e); } catch (InterruptedException interruptedException) { logger.warn("Thread interrupted!"); diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/KubernetesVersionExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/KubernetesVersionExample.java index d31dcd5c630..9377b4ace03 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/KubernetesVersionExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/KubernetesVersionExample.java @@ -21,36 +21,26 @@ import org.slf4j.LoggerFactory; public class KubernetesVersionExample { - private static Logger logger = LoggerFactory.getLogger(KubernetesVersionExample.class); + private static final Logger logger = LoggerFactory.getLogger(KubernetesVersionExample.class); public static void main(String args[]) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try(final KubernetesClient client = new DefaultKubernetesClient(config)) { + try(KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { VersionInfo versionInfo = client.getVersion(); - log("Version details of this Kubernetes cluster :-"); - log("Major : ", versionInfo.getMajor()); - log("Minor : ", versionInfo.getMinor()); - log("GitVersion : ", versionInfo.getGitVersion()); - log("BuildDate : ", versionInfo.getBuildDate()); - log("GitTreeState : ", versionInfo.getGitTreeState()); - log("Platform : ", versionInfo.getPlatform()); - log("GitVersion : ", versionInfo.getGitVersion()); - log("GoVersion : ", versionInfo.getGoVersion()); - log("GitCommit : ", versionInfo.getGitCommit()); + logger.info("Version details of this Kubernetes cluster :-"); + logger.info("Major : {}", versionInfo.getMajor()); + logger.info("Minor : {}", versionInfo.getMinor()); + logger.info("GitVersion : {}", versionInfo.getGitVersion()); + logger.info("BuildDate : {}", versionInfo.getBuildDate()); + logger.info("GitTreeState : {}", versionInfo.getGitTreeState()); + logger.info("Platform : {}", versionInfo.getPlatform()); + logger.info("GitVersion : {}", versionInfo.getGitVersion()); + logger.info("GoVersion : {}", versionInfo.getGoVersion()); + logger.info("GitCommit : {}", versionInfo.getGitCommit()); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LeaderElectionExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LeaderElectionExamples.java index b15d69e4a32..d8cb904c828 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LeaderElectionExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LeaderElectionExamples.java @@ -38,6 +38,7 @@ import java.util.function.Function; import java.util.stream.Stream; +@SuppressWarnings("java:S106") public class LeaderElectionExamples { private static final String NAMESPACE = "default"; diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListCustomResourceDefinitions.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListCustomResourceDefinitions.java index 6adfd8765a4..dfbde99ec1c 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListCustomResourceDefinitions.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListCustomResourceDefinitions.java @@ -23,8 +23,7 @@ import java.util.List; -/** - */ +@SuppressWarnings("java:S106") public class ListCustomResourceDefinitions { public static void main(String[] args) { try(KubernetesClient client = new DefaultKubernetesClient()){ @@ -32,7 +31,7 @@ public static void main(String[] args) { System.out.println("WARNING this cluster does not support the API Group apiextensions.k8s.io"); return; } - CustomResourceDefinitionList list = client.customResourceDefinitions().list(); + CustomResourceDefinitionList list = client.apiextensions().v1beta1().customResourceDefinitions().list(); if (list == null) { System.out.println("ERROR no list returned!"); return; diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListExamples.java index bd70389eb98..4d06c115f46 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListExamples.java @@ -15,11 +15,8 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.ListOptions; import io.fabric8.kubernetes.api.model.ListOptionsBuilder; -import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodList; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -27,18 +24,20 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Optional; + +@SuppressWarnings("java:S106") public class ListExamples { private static final Logger logger = LoggerFactory.getLogger(ListExamples.class); public static void main(String[] args) { - String master = "https://192.168.42.20:8443/"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + final String namespace = Optional.ofNullable(client.getNamespace()).orElse("default"); System.out.println( client.namespaces().list() @@ -66,15 +65,17 @@ public static void main(String[] args) { * a previous query result with identical query parameters (except for the value of * continue) and the server may reject a continue value it does not recognize. */ - PodList podList = client.pods().inNamespace("myproject").list(5, null); - podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); }); + PodList podList = client.pods().inNamespace(namespace).list(new ListOptionsBuilder().withLimit(5L).build()); + podList.getItems().forEach(obj -> System.out.println(obj.getMetadata().getName())); - podList = client.pods().inNamespace("myproject").list(5, podList.getMetadata().getContinue()); - podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); }); + podList = client.pods().inNamespace(namespace) + .list(new ListOptionsBuilder().withLimit(5L).withContinue(podList.getMetadata().getContinue()).build()); + podList.getItems().forEach(obj -> System.out.println(obj.getMetadata().getName())); - Integer services = client.services().inNamespace("myproject").list(1, null).getItems().size(); + Integer services = client.services().inNamespace(namespace) + .list(new ListOptionsBuilder().withLimit(1L).build()).getItems().size(); - client.services().inNamespace("myproject").list(new ListOptionsBuilder().withLimit(1L).withContinue(null).build()); + client.services().inNamespace(namespace).list(new ListOptionsBuilder().withLimit(1L).withContinue(null).build()); System.out.println(services); } catch (KubernetesClientException e) { logger.error(e.getMessage(), e); diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListStorageClassExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListStorageClassExample.java index 9c48d7ff0a7..255b6dd22b5 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListStorageClassExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ListStorageClassExample.java @@ -15,33 +15,27 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.storage.StorageClassList; -import io.fabric8.kubernetes.client.*; -import org.slf4j.*; +import io.fabric8.kubernetes.client.ConfigBuilder; +import io.fabric8.kubernetes.client.DefaultKubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ListStorageClassExample { private static final Logger logger = LoggerFactory.getLogger(ListStorageClassExample.class); public static void main(String[] args) { - - String master = "http://localhost:8080/"; - - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - io.fabric8.kubernetes.client.Config config = new io.fabric8.kubernetes.client.ConfigBuilder().withMasterUrl(master).build(); - - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { - - StorageClassList storageClassList = client.storage().storageClasses().list(); - - logger.info(storageClassList.toString()); - + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + client.storage().storageClasses().list().getItems() + .forEach(sc -> logger.info("Storage class: {}", sc.getMetadata().getName())); } catch (KubernetesClientException e) { logger.error(e.getMessage(), e); } - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LoadMultipleDocumentsFromFileExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LoadMultipleDocumentsFromFileExample.java index fdab6e48687..97576c300d3 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LoadMultipleDocumentsFromFileExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/LoadMultipleDocumentsFromFileExample.java @@ -18,7 +18,6 @@ import io.fabric8.kubernetes.api.builder.Visitor; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -32,20 +31,20 @@ public class LoadMultipleDocumentsFromFileExample { private static final Logger logger = LoggerFactory.getLogger(LoadMultipleDocumentsFromFileExample.class); + @SuppressWarnings("java:S1604") public static void main(String[] args) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { List list = client.load(LoadMultipleDocumentsFromFileExample.class.getResourceAsStream("/multiple-document-template.yml")).get(); logger.info("Found in file: {} items.", list.size()); for (HasMetadata meta : list) { logger.info(display(meta)); } + //noinspection Convert2Lambda list = client.load(LoadMultipleDocumentsFromFileExample.class.getResourceAsStream("/multiple-document-template.yml")) .accept(new Visitor() { @Override diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NamespaceQuotaExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NamespaceQuotaExample.java index 6f8054d7782..220fdd0d5a8 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NamespaceQuotaExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NamespaceQuotaExample.java @@ -21,7 +21,6 @@ import io.fabric8.kubernetes.api.model.ResourceQuota; import io.fabric8.kubernetes.api.model.ResourceQuotaBuilder; import io.fabric8.kubernetes.client.APIGroupNotAvailableException; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -30,47 +29,53 @@ import org.slf4j.LoggerFactory; public class NamespaceQuotaExample { + private static final Logger logger = LoggerFactory.getLogger(NamespaceQuotaExample.class); - public static void main(String[] args) throws InterruptedException { - String master = "https://localhost:8443"; + private static final String NAMESPACE = "namepsace-test"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { - String namespace = "namespacetest"; + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + String namespace = NAMESPACE; if (args.length > 2) { namespace = args[2]; } try { // Creating namespace Namespace ns = new NamespaceBuilder().withNewMetadata().withName(namespace).addToLabels("hello", "world").endMetadata().build(); - log("Created namespace", client.namespaces().create(ns)); + logger.info("Created namespace: {}", client.namespaces().create(ns).getMetadata().getName()); // Get namespace by name - log("Get namespace by name", client.namespaces().withName(namespace).get()); + logger.info("Get namespace by name: {}", client.namespaces().withName(namespace).get()); // Get namespace by label - log("Get namespace by label", client.namespaces().withLabel("hello", "world").list()); + logger.info("Get namespace by label:"); + client.namespaces().withLabel("hello", "world").list().getItems().forEach(n -> logger.info(" - {}", n.getMetadata().getName())); - ResourceQuota quota = new ResourceQuotaBuilder().withNewMetadata().withName("quota-example").endMetadata().withNewSpec().addToHard("pods", new Quantity("5")).endSpec().build(); - log("Create resource quota", client.resourceQuotas().inNamespace(namespace).create(quota)); + final ResourceQuota quota = client.resourceQuotas().inNamespace(namespace).createOrReplace( + new ResourceQuotaBuilder() + .withNewMetadata().withName("quota-example").endMetadata() + .withNewSpec().addToHard("pods", new Quantity("5")).endSpec() + .build()); + logger.info("Create resource quota: {}", quota.getMetadata().getName()); try { - log("Get jobs in namespace", client.batch().jobs().inNamespace(namespace).list()); + logger.info("Listing jobs in namespace"); + client.batch().jobs().inNamespace(namespace).list().getItems() + .forEach(j -> logger.info(" - {}", j.getMetadata().getName())); } catch (APIGroupNotAvailableException e) { - log("Skipping jobs example - extensions API group not available"); + logger.warn("Skipping jobs example - extensions API group not available"); } } finally { // Delete namespace - log("Deleted namespace", client.namespaces().withName(namespace).delete()); + client.namespaces().withName(namespace).delete(); + logger.info("Deleted namespace: {}", namespace); } } catch (Exception e) { - e.printStackTrace(); logger.error(e.getMessage(), e); - Throwable[] suppressed = e.getSuppressed(); if (suppressed != null) { for (Throwable t : suppressed) { @@ -79,12 +84,4 @@ public static void main(String[] args) throws InterruptedException { } } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NetworkPolicyExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NetworkPolicyExample.java index 31cfa9c6a64..f18f17d3ab8 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NetworkPolicyExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/NetworkPolicyExample.java @@ -31,8 +31,10 @@ public class NetworkPolicyExample { private static final Logger logger = LoggerFactory.getLogger(NetworkPolicyExample.class); public static void main(String[] args) { - String namespace = "myproject"; - + String namespace = "default"; + if (args.length > 0) { + namespace = args[0]; + } try (KubernetesClient client = new DefaultKubernetesClient()) { NetworkPolicy networkPolicy = new NetworkPolicyBuilder() .withNewMetadata() @@ -50,8 +52,9 @@ public static void main(String[] args) { networkPolicy = client.network() .v1() .networkPolicies() - .create(networkPolicy); - logger.info("NetworkPolicy {} created via builders", networkPolicy.getMetadata().getName()); + .inNamespace(namespace) + .createOrReplace(networkPolicy); + logger.info("NetworkPolicy {}/{} created via builders", namespace, networkPolicy.getMetadata().getName()); // crate policy using YAML resource networkPolicy = client.network() @@ -60,7 +63,7 @@ public static void main(String[] args) { .inNamespace(namespace) .load(NetworkPolicyExample.class.getResourceAsStream("/network-policy.yml")) .createOrReplace(); - logger.info("NetworkPolicy {} created via YAML manifest", networkPolicy.getMetadata().getName()); + logger.info("NetworkPolicy {}/{} created via YAML manifest", namespace, networkPolicy.getMetadata().getName()); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeClaimExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeClaimExample.java index ee7cabc07cc..5b61f1a720a 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeClaimExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeClaimExample.java @@ -17,45 +17,42 @@ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.NodeSelectorRequirementBuilder; import io.fabric8.kubernetes.api.model.PersistentVolume; import io.fabric8.kubernetes.api.model.PersistentVolumeBuilder; import io.fabric8.kubernetes.api.model.PersistentVolumeClaim; import io.fabric8.kubernetes.api.model.PersistentVolumeClaimBuilder; -import io.fabric8.kubernetes.api.model.storage.StorageClass; +import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Quantity; +import io.fabric8.kubernetes.api.model.storage.StorageClass; import io.fabric8.kubernetes.client.ConfigBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Arrays; import java.util.Collections; public class PersistentVolumeClaimExample { private static final Logger logger = LoggerFactory.getLogger(PersistentVolumeClaimExample.class); public static void main(String[] args) { - String master = "https://localhost:8443"; String namespace = "default"; String storageClassName = "my-local-storage"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - log("Using master with url ", master); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { try { - StorageClass storageClass = client.storage().storageClasses().load(PersistentVolumeClaimExample.class.getResourceAsStream("/test-storage.yml")).get(); + StorageClass storageClass = client.storage().storageClasses() + .load(PersistentVolumeClaimExample.class.getResourceAsStream("/test-storage.yml")).get(); client.storage().storageClasses().create(storageClass); - log("Creating PersistentVolume object"); + logger.info("Creating PersistentVolume object"); PersistentVolume pv = new PersistentVolumeBuilder() .withNewMetadata().withName("test-local-pv").endMetadata() .withNewSpec() @@ -69,7 +66,7 @@ public static void main(String[] args) { .withNewNodeAffinity() .withNewRequired() .addNewNodeSelectorTerm() - .withMatchExpressions(Arrays.asList(new NodeSelectorRequirementBuilder() + .withMatchExpressions(Collections.singletonList(new NodeSelectorRequirementBuilder() .withKey("kubernetes.io/hostname") .withOperator("In") .withValues("my-node") @@ -83,9 +80,9 @@ public static void main(String[] args) { client.persistentVolumes().create(pv); - log("Successfully created PersistentVolume object"); + logger.info("Successfully created PersistentVolume object"); - log("Creating PersistentVolumeClaim object"); + logger.info("Creating PersistentVolumeClaim object"); PersistentVolumeClaim persistentVolumeClaim = new PersistentVolumeClaimBuilder() .withNewMetadata().withName("test-pv-claim").withNamespace(namespace).endMetadata() .withNewSpec() @@ -98,29 +95,20 @@ public static void main(String[] args) { .build(); client.persistentVolumeClaims().create(persistentVolumeClaim); - log("Successfully created PersistentVolumeClaim object"); + logger.info("Successfully created PersistentVolumeClaim object"); - log("Creating pod"); + logger.info("Creating pod"); Pod pod = client.pods().inNamespace(namespace).load(PersistentVolumeClaimExample.class.getResourceAsStream("/test-pv-pod.yml")).get(); client.pods().inNamespace(namespace).create(pod); - - log("Successfully created pod"); + logger.info("Successfully created pod"); } finally { client.persistentVolumeClaims().inNamespace(namespace).withName("test-pv-claim").delete(); - client.persistentVolumes().withName("test-local-pv").delete(); //fixed the name - client.pods().inNamespace("default").withName("test-pv-pod").delete(); // you forgot to remove the pod + client.persistentVolumes().withName("test-local-pv").delete(); + client.pods().inNamespace("default").withName("test-pv-pod").delete(); client.storage().storageClasses().withName(storageClassName).delete(); } } catch (KubernetesClientException e) { - log("Could not create resource", e.getMessage()); + logger.error("Could not create resource: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeExample.java index d403243c731..da6d8c2c35f 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PersistentVolumeExample.java @@ -20,7 +20,6 @@ import io.fabric8.kubernetes.api.model.PersistentVolume; import io.fabric8.kubernetes.api.model.PersistentVolumeBuilder; import io.fabric8.kubernetes.api.model.Quantity; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -28,22 +27,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Arrays; import java.util.Collections; public class PersistentVolumeExample { - private static final Logger logger = LoggerFactory.getLogger(PodDisruptionBudgetExample.class); + private static final Logger logger = LoggerFactory.getLogger(PersistentVolumeExample.class); - public static void main(String args[]) throws InterruptedException { - String master = "https://192.168.99.100:8443/"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - log("Using master with url ", master); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { - log("Creating persistent volume object"); + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + logger.info("Creating persistent volume object"); PersistentVolume pv = new PersistentVolumeBuilder() .withNewMetadata().withName("example-local-pv").endMetadata() .withNewSpec() @@ -57,7 +53,7 @@ public static void main(String args[]) throws InterruptedException { .withNewNodeAffinity() .withNewRequired() .addNewNodeSelectorTerm() - .withMatchExpressions(Arrays.asList(new NodeSelectorRequirementBuilder() + .withMatchExpressions(Collections.singletonList(new NodeSelectorRequirementBuilder() .withKey("kubernetes.io/hostname") .withOperator("In") .withValues("my-node") @@ -70,17 +66,10 @@ public static void main(String args[]) throws InterruptedException { .build(); client.persistentVolumes().create(pv); - log("Successfully created Persistent Volume object"); + logger.info("Successfully created Persistent Volume object"); } catch (KubernetesClientException e) { - log("Could not create resource", e.getMessage()); + logger.error("Could not create resource: {}", e.getMessage(), e); } } - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodDisruptionBudgetExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodDisruptionBudgetExample.java index 2e3f2e2dd69..989c27f8c25 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodDisruptionBudgetExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodDisruptionBudgetExample.java @@ -18,7 +18,6 @@ import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.policy.PodDisruptionBudget; import io.fabric8.kubernetes.api.model.policy.PodDisruptionBudgetBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -28,21 +27,17 @@ import java.util.Collections; - public class PodDisruptionBudgetExample { private static final Logger logger = LoggerFactory.getLogger(PodDisruptionBudgetExample.class); - public static void main(String args[]) throws InterruptedException { - String master = "https://192.168.99.100:8443/"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - log("Using master with url ", master); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { final String namespace = "default"; - PodDisruptionBudget podDisruptionBudget = new PodDisruptionBudgetBuilder() .withNewMetadata().withName("zk-pkb").endMetadata() .withNewSpec() @@ -53,19 +48,11 @@ public static void main(String args[]) throws InterruptedException { .endSpec() .build(); - log("Current namespace is", namespace); - client.policy().podDisruptionBudget().inNamespace(namespace).create(podDisruptionBudget); + logger.info("Current namespace is {}", namespace); + client.policy().podDisruptionBudget().inNamespace(namespace).createOrReplace(podDisruptionBudget); } catch (KubernetesClientException e) { - log("Could not create resource", e.getMessage()); + logger.error("Could not create resource: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodLogExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodLogExample.java index 9423f173f3f..3fd6fae4d12 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodLogExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodLogExample.java @@ -15,42 +15,38 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.dsl.LogWatch; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@SuppressWarnings("java:S106") public class PodLogExample { private static final Logger logger = LoggerFactory.getLogger(PodLogExample.class); public static void main(String[] args) { if (args.length < 1) { - System.out.println("Usage: podName [master] [namespace]"); + System.out.println("Usage: podName [namespace]"); return; } + String podName = args[0]; String namespace = "default"; - String master = "https://localhost:8443/"; if (args.length > 1) { - master = args[1]; - } - if (args.length > 2) { - namespace = args[2]; + namespace = args[1]; } System.out.println("Log of pod " + podName + " in " + namespace + " is:"); System.out.println("----------------------------------------------------------------"); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (KubernetesClient client = new DefaultKubernetesClient(config); - LogWatch watch = client.pods().inNamespace(namespace).withName(podName).tailingLines(10).watchLog(System.out)) { - Thread.sleep(5 * 1000); + try ( + KubernetesClient client = new DefaultKubernetesClient(); + LogWatch watch = client.pods().inNamespace(namespace).withName(podName).tailingLines(10).watchLog(System.out) + ) { + Thread.sleep(5 * 1000L); } catch (Exception e) { logger.error(e.getMessage(), e); } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPresetExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPresetExamples.java index 146766e6bf8..ec5ac1f9660 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPresetExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPresetExamples.java @@ -22,7 +22,6 @@ import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.settings.PodPreset; import io.fabric8.kubernetes.api.model.settings.PodPresetBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -32,21 +31,22 @@ import java.util.Collections; +// Tips for running with Minikube: https://github.com/fabric8io/kubernetes-client/pull/1286#issuecomment-447353662 public class PodPresetExamples { + private static final Logger logger = LoggerFactory.getLogger(PodPresetExamples.class); - public static void main(String args[]) { - String master = "https://192.168.42.193:8443/"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { String namespace = "default"; - log("namespace", namespace); + logger.info("Namespace: {}", namespace); Pod pod = client.pods().inNamespace(namespace).load(PodPresetExamples.class.getResourceAsStream("/pod-preset-example.yml")).get(); - log("Pod created"); + logger.info("Pod created"); client.pods().inNamespace(namespace).create(pod); PodPreset podPreset = new PodPresetBuilder() @@ -59,23 +59,14 @@ public static void main(String args[]) { .endSpec() .build(); - log("Creating Pod Preset : " + podPreset.getMetadata().getName()); + logger.info("Creating Pod Preset : {}", podPreset.getMetadata().getName()); client.settings().podPresets().inNamespace(namespace).create(podPreset); pod = client.pods().inNamespace(namespace).withName(pod.getMetadata().getName()).get(); - log("Updated pod: "); - log(SerializationUtils.dumpAsYaml(pod)); + logger.info("Updated pod: "); + logger.info(SerializationUtils.dumpAsYaml(pod)); } catch (Exception e) { - log("Exception occurred: ", e.getMessage()); - e.printStackTrace(); + logger.error("Exception occurred: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPriorityExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPriorityExample.java index e78f962562b..574f5da0eb6 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPriorityExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodPriorityExample.java @@ -19,7 +19,6 @@ import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.scheduling.PriorityClass; import io.fabric8.kubernetes.api.model.scheduling.PriorityClassBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -30,20 +29,19 @@ import java.util.Collections; public class PodPriorityExample { - private static final Logger logger = LoggerFactory.getLogger(PodDisruptionBudgetExample.class); - public static void main(String args[]) throws InterruptedException { - String master = "https://192.168.99.100:8443/"; - if (args.length == 1) { - master = args[0]; - } + private static final Logger logger = LoggerFactory.getLogger(PodPriorityExample.class); - log("Using master with url ", master); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); + } + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { PriorityClass priorityClass = new PriorityClassBuilder() .withNewMetadata().withName("high-priority").endMetadata() - .withValue(new Integer(100000)) + .withValue(100000) .withGlobalDefault(false) .withDescription("This priority class should be used for XYZ service pods only.") .build(); @@ -58,16 +56,7 @@ public static void main(String args[]) throws InterruptedException { .build() ); } catch (KubernetesClientException e) { - e.printStackTrace(); - log("Could not create resource", e.getMessage()); + logger.error("Could not create resource: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodSecurityPolicyExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodSecurityPolicyExample.java index e95010a4e7f..2e1f15f0a07 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodSecurityPolicyExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PodSecurityPolicyExample.java @@ -35,7 +35,7 @@ public class PodSecurityPolicyExample { private static final Logger logger = LoggerFactory.getLogger(PodSecurityPolicyExample.class); - public static void main(String args[]) { + public static void main(String[] args) { try (final KubernetesClient client = new DefaultKubernetesClient()) { final String localYamlToCreate = "/PodSecurityPolicy.yml"; logger.info("Creating PodSecurityPolicy from Yaml file: {}", localYamlToCreate); diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PortForwardExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PortForwardExample.java index f11818fe570..70af48c22c3 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PortForwardExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/PortForwardExample.java @@ -17,7 +17,6 @@ package io.fabric8.kubernetes.examples; import io.fabric8.kubernetes.api.model.Pod; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -25,47 +24,47 @@ import okhttp3.OkHttpClient; import okhttp3.Request; -import okhttp3.Response; +import okhttp3.ResponseBody; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; public class PortForwardExample { - private static final Logger logger = LoggerFactory.getLogger(PortForwardExample.class); - public static void main(String args[]) { - String master = "https://localhost:8443"; + private static final Logger logger = LoggerFactory.getLogger(PortForwardExample.class); - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); + } + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { String namespace = "default"; - log("namespace", namespace); - Pod pod = client.pods().inNamespace(namespace).load(PortForwardExample.class.getResourceAsStream("/portforward-example-pod.yml")).get(); + logger.info("Using namespace: {}", namespace); + Pod pod = client.pods().inNamespace(namespace) + .load(PortForwardExample.class.getResourceAsStream("/portforward-example-pod.yml")).get(); + final String podName = pod.getMetadata().getName(); client.pods().inNamespace(namespace).create(pod); - log("Pod created"); + logger.info("Pod {} created", podName); int containerPort = pod.getSpec().getContainers().get(0).getPorts().get(0).getContainerPort(); - client.pods().inNamespace(namespace).withName("testpod").waitUntilReady(10, TimeUnit.SECONDS); + client.pods().inNamespace(namespace).withName(podName).waitUntilReady(10, TimeUnit.SECONDS); LocalPortForward portForward = client.pods().inNamespace("default").withName("testpod").portForward(containerPort, 8080); - log("Port forwarded for 60 seconds at http://127.0.0.1:" + portForward.getLocalPort()); + logger.info("Port forwarded for 60 seconds at http://127.0.0.1:{}", portForward.getLocalPort()); - log("Checking forwarded port:-"); - Response response = new OkHttpClient().newCall(new Request.Builder().get().url("http://127.0.0.1:" + portForward.getLocalPort()).build()).execute(); - log(response.body().string()); - Thread.sleep(60 * 1000); + logger.info("Checking forwarded port:-"); + final ResponseBody responseBody = new OkHttpClient() + .newCall(new Request.Builder().get().url("http://127.0.0.1:" + portForward.getLocalPort()).build()).execute() + .body(); + logger.info("Response: \n{}", responseBody != null ? responseBody.string() : "[Empty Body]"); + Thread.sleep(60 * 1000L); + logger.info("Closing forwarded port"); + portForward.close(); } catch (Exception e) { - log("Exception occurred: ", e.getMessage()); - e.printStackTrace(); + logger.error("Exception occurred: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/RawCustomResourceExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/RawCustomResourceExample.java index 943b1bb27ab..4fd8fc81d71 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/RawCustomResourceExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/RawCustomResourceExample.java @@ -16,6 +16,7 @@ package io.fabric8.kubernetes.examples; import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinition; +import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; @@ -31,41 +32,42 @@ import java.util.concurrent.TimeUnit; public class RawCustomResourceExample { + private static final Logger logger = LoggerFactory.getLogger(RawCustomResourceExample.class); - public static void main(String args[]) throws Exception { + public static void main(String[] args) throws Exception { - final CountDownLatch closeLatch = new CountDownLatch(1); - try (final KubernetesClient client = new DefaultKubernetesClient()) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + configBuilder.withWatchReconnectInterval(500); + configBuilder.withWatchReconnectLimit(5); + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { String namespace = "default"; - CustomResourceDefinition prometheousRuleCrd = client.customResourceDefinitions().load(RawCustomResourceExample.class.getResourceAsStream("/prometheous-rule-crd.yml")).get(); - client.customResourceDefinitions().create(prometheousRuleCrd); - log("Successfully created prometheous custom resource definition"); + CustomResourceDefinition prometheousRuleCrd = client.apiextensions().v1beta1().customResourceDefinitions() + .load(RawCustomResourceExample.class.getResourceAsStream("/prometheous-rule-crd.yml")).get(); + client.apiextensions().v1beta1().customResourceDefinitions().createOrReplace(prometheousRuleCrd); + logger.info("Successfully created Prometheous custom resource definition"); // Creating Custom Resources Now: - CustomResourceDefinitionContext crdContext = new CustomResourceDefinitionContext.Builder() - .withGroup("monitoring.coreos.com") - .withPlural("prometheusrules") - .withScope("Namespaced") - .withVersion("v1") - .build(); + CustomResourceDefinitionContext crdContext = CustomResourceDefinitionContext.fromCrd(prometheousRuleCrd); - client.customResource(crdContext).create(namespace, RawCustomResourceExample.class.getResourceAsStream("/prometheous-rule-cr.yml")); - log("Created Custom Resource successfully too"); + client.customResource(crdContext) + .createOrReplace(namespace, RawCustomResourceExample.class.getResourceAsStream("/prometheous-rule-cr.yml")); + logger.info("Created Custom Resource successfully too"); // Listing all custom resources in given namespace: Map list = client.customResource(crdContext).list(namespace); List> items = (List>) list.get("items"); - log("Custom Resources :- "); + logger.info("Custom Resources :- "); for(Map customResource : items) { Map metadata = (Map) customResource.get("metadata"); - log(metadata.get("name").toString()); + final String name = metadata.get("name").toString(); + logger.info(name); } - // Watching custom resources now - log("Watching custom resources now"); + logger.info("Watching custom resources now"); + final CountDownLatch closeLatch = new CountDownLatch(1); client.customResource(crdContext).watch(namespace, new Watcher() { @Override public void eventReceived(Action action, String resource) { @@ -84,20 +86,12 @@ public void onClose(WatcherException e) { closeLatch.await(10, TimeUnit.MINUTES); // Cleanup - log("Deleting custom resources..."); - Map deleted = client.customResource(crdContext).delete(namespace, "prometheus-example-rules"); - client.customResourceDefinitions().withName("prometheusrules.monitoring.coreos.com").delete(); + logger.info("Deleting custom resources..."); + client.customResource(crdContext).delete(namespace, "prometheus-example-rules"); + client.apiextensions().v1beta1().customResourceDefinitions() + .withName(prometheousRuleCrd.getMetadata().getName()).delete(); } catch (KubernetesClientException e) { - e.printStackTrace(); - log("Could not create resource", e.getMessage()); + logger.error("Could not create resource: {}", e.getMessage(), e); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ReplaceExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ReplaceExamples.java index ef5013a4a84..4cb7030777b 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ReplaceExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ReplaceExamples.java @@ -15,14 +15,15 @@ */ package io.fabric8.kubernetes.examples; +import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; +import io.fabric8.kubernetes.client.utils.Serialization; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,20 +31,24 @@ public class ReplaceExamples { private static final Logger logger = LoggerFactory.getLogger(ReplaceExamples.class); + private static final String NAMESPACE = "this-is-a-test"; + public static void main(String[] args) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - try (KubernetesClient client = new DefaultKubernetesClient(config)) { + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { try { - log("Create namespace:", client.namespaces().create(new NamespaceBuilder().withNewMetadata().withName("thisisatest").endMetadata().build())); + final Namespace namespace = client.namespaces().create( + new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).endMetadata().build() + ); + logger.info("Create namespace: {}", NAMESPACE); - Pod createdPod = client.pods().inNamespace("thisisatest").create(new PodBuilder() + Pod createdPod = client.pods().inNamespace(namespace.getMetadata().getName()).create(new PodBuilder() .withNewMetadata() - .withName("testpod") + .withName("test-pod") .addToLabels("server", "nginx") .endMetadata() .withNewSpec() @@ -52,28 +57,23 @@ public static void main(String[] args) { .endContainer() .endSpec() .build()); - log("Created testPod:", createdPod); + logger.info("Created Pod: {}", createdPod.getMetadata().getName()); + logger.info(Serialization.asYaml(createdPod)); - Pod updatedPod = client.pods().inNamespace("thisisatest").withName("testpod").edit(p -> new PodBuilder(p) + Pod updatedPod = client.pods().inNamespace(NAMESPACE).withName("test-pod").edit(p -> new PodBuilder(p) .editMetadata() .addToLabels("server2", "nginx2") - .and().build()); - log("Replaced testPod:", updatedPod); + .and().build() + ); + logger.info("Replaced Pod: {}", updatedPod.getMetadata().getName()); + logger.info(Serialization.asYaml(updatedPod)); } catch (KubernetesClientException e) { logger.error(e.getMessage(), e); } finally { - client.namespaces().withName("thisisatest").delete(); + client.namespaces().withName(NAMESPACE).delete(); } } } - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } - } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ServiceExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ServiceExample.java index 6bdddd1bc10..0327674ea28 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ServiceExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/ServiceExample.java @@ -19,20 +19,24 @@ import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.api.model.ServiceBuilder; -import io.fabric8.kubernetes.api.model.extensions.Ingress; -import io.fabric8.kubernetes.api.model.extensions.IngressBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Collections; +import java.util.Optional; public class ServiceExample { + private static final Logger logger = LoggerFactory.getLogger(ServiceExample.class); - public static void main(String args[]) { - try (final KubernetesClient client = new DefaultKubernetesClient()) { + public static void main(String[] args) { + try (KubernetesClient client = new DefaultKubernetesClient()) { + String namespace = Optional.ofNullable(client.getNamespace()).orElse("default"); + if (args.length > 0) { + namespace = args[0]; + } Service service = new ServiceBuilder() .withNewMetadata() .withName("my-service") @@ -47,29 +51,13 @@ public static void main(String args[]) { .endPort() .withType("LoadBalancer") .endSpec() - .withNewStatus() - .withNewLoadBalancer() - .addNewIngress() - .withIp("146.148.47.155") - .endIngress() - .endLoadBalancer() - .endStatus() .build(); - service = client.services().inNamespace(client.getNamespace()).create(service); - log("Created service with name ", service.getMetadata().getName()); - - String serviceURL = client.services().inNamespace(client.getNamespace()).withName(service.getMetadata().getName()).getURL("test-port"); - log("Service URL", serviceURL); + service = client.services().inNamespace(namespace).create(service); + logger.info("Created service with name {}", service.getMetadata().getName()); + String serviceURL = client.services().inNamespace(namespace).withName(service.getMetadata().getName()).getURL("test-port"); + logger.info("Service URL {}", serviceURL); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/InformerExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/SharedInformerExample.java similarity index 90% rename from kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/InformerExample.java rename to kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/SharedInformerExample.java index 6170312f926..1683e2c50f9 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/InformerExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/SharedInformerExample.java @@ -30,8 +30,10 @@ import java.util.Collections; import java.util.concurrent.TimeUnit; -public class InformerExample { - private static final Logger logger = LoggerFactory.getLogger(InformerExample.class); +public class SharedInformerExample { + private static final Logger logger = LoggerFactory.getLogger(SharedInformerExample.class); + + private static final String POD_NAME = "myapp-pod"; public static void main(String[] args) throws InterruptedException { try (final KubernetesClient client = new DefaultKubernetesClient()) { @@ -61,7 +63,7 @@ public void onDelete(Pod pod, boolean deletedFinalStateUnknown) { logger.info("Starting all registered informers"); sharedInformerFactory.startAllRegisteredInformers(); Pod testPod = new PodBuilder() - .withNewMetadata().withName("myapp-pod").withLabels(Collections.singletonMap("app", "myapp-pod")).endMetadata() + .withNewMetadata().withName(POD_NAME).withLabels(Collections.singletonMap("app", POD_NAME)).endMetadata() .withNewSpec() .addNewContainer() .withName("myapp-container") @@ -81,7 +83,7 @@ public void onDelete(Pod pod, boolean deletedFinalStateUnknown) { Thread.sleep(3000L); Lister podLister = new Lister<> (podInformer.getIndexer(), "default"); - Pod myPod = podLister.get("myapp-pod"); + Pod myPod = podLister.get(POD_NAME); logger.info("PodLister has {}", podLister.list().size()); if (myPod != null) { diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/StorageClassExamples.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/StorageClassExamples.java index 9997ca5d80a..e66b7e7b5ca 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/StorageClassExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/StorageClassExamples.java @@ -15,18 +15,15 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.storage.StorageClass; import io.fabric8.kubernetes.api.model.storage.StorageClassBuilder; -import io.fabric8.kubernetes.api.model.storage.StorageClassList; +import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; public class StorageClassExamples { @@ -34,64 +31,46 @@ public class StorageClassExamples { private static final Logger logger = LoggerFactory.getLogger(StorageClassExamples.class); public static void main(String[] args) { - - String master = "http://localhost:8080/"; - - if (args.length == 1) { - master = args[0]; + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); + logger.info("Using master with URL: {}", args[0]); } - - io.fabric8.kubernetes.client.Config config = new io.fabric8.kubernetes.client.ConfigBuilder().withMasterUrl(master).build(); - - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { - - //list all storage classes - StorageClassList storageClassList = client.storage().storageClasses().list(); - logger.info("List of storage classes: {}", storageClassList.toString()); - - //create new storage class - - String name = UUID.randomUUID().toString(); - ObjectMeta metadata = new ObjectMeta(); - metadata.setName(name); - - Map parameters = new HashMap<>(); - parameters.put("resturl", "http://192.168.10.100:8080"); - parameters.put("restuser", ""); - parameters.put("secretNamespace", ""); - parameters.put("secretName", ""); - parameters.put("key", "value1"); - - StorageClass storageClass = new StorageClassBuilder().withApiVersion("storage.k8s.io/v1") - .withKind("StorageClass") - .withMetadata(metadata) - .withParameters(parameters) - .withProvisioner("k8s.io/minikube-hostpath") - .build(); - - storageClass = client.storage().storageClasses().create(storageClass); - logger.info("Newly created storage class details: {}", storageClass.toString()); - - //list all storage classes - storageClassList = client.storage().storageClasses().list(); - logger.info("List of storage classes: {}", storageClassList.toString()); - - //update storage class. add label - storageClass = client.storage().storageClasses().withName(name).edit(s -> new StorageClassBuilder(s).editMetadata().addToLabels("testLabel", "testLabelValue").endMetadata().build()); - - //list all storage classes - storageClassList = client.storage().storageClasses().list(); - logger.info("List of storage classes: {}", storageClassList.toString()); - + try (KubernetesClient client = new DefaultKubernetesClient(configBuilder.build())) { + final String storageClassName = UUID.randomUUID().toString(); + logger.info("List of existent storage classes:"); + client.storage().storageClasses().list().getItems() + .forEach(sc -> logger.info(" - {}", sc.getMetadata().getName())); + + logger.info("Creating new Storage class"); + final StorageClass storageClass = client.storage().storageClasses().create( + new StorageClassBuilder() + .withNewMetadata().withName(storageClassName).endMetadata() + .addToParameters("resturl", "http://localhost:8080") + .addToParameters("restuser", "") + .addToParameters("secretNamespace", "") + .addToParameters("secretName", "") + .addToParameters("key", "value1") + .withProvisioner("k8s.io/minikube-hostpath") + .build() + ); + logger.info("Newly created storage class details:\n{}", storageClass); + + logger.info("Updated list of existent storage classes:"); + client.storage().storageClasses().list().getItems() + .forEach(sc -> logger.info(" - {}", sc.getMetadata().getName())); + + logger.info("Updating {} storage clas to add new label", storageClassName); + final StorageClass updatedStorageClass = client.storage().storageClasses().withName(storageClassName).edit(s -> + new StorageClassBuilder(s).editMetadata().addToLabels("testLabel", "testLabelValue").endMetadata().build() + ); + logger.info("Updated storage class details:\n{}", updatedStorageClass); //delete storage class boolean isDeleteSuccessful = client.storage().storageClasses().delete(storageClass); logger.info("Storage Class resource successfully deleted: {}", isDeleteSuccessful); - - } catch (KubernetesClientException e) { logger.error(e.getMessage(), e); } - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/TopExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/TopExample.java index de3ff68f26a..456c2239c98 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/TopExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/TopExample.java @@ -15,49 +15,65 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetricsList; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.net.HttpURLConnection; +import java.util.Optional; + public class TopExample { private static final Logger logger = LoggerFactory.getLogger(TopExample.class); + private static final String CPU = "cpu"; + private static final String MEMORY = "memory"; + public static void main(String[] args) { try (KubernetesClient client = new DefaultKubernetesClient()) { - NodeMetricsList nodeMetricList = client.top().nodes().metrics(); - + if (!client.supportsApiPath("/apis/metrics.k8s.io")) { + logger.warn("Metrics API is not enabled in your cluster"); + return; + } logger.info("==== Node Metrics ===="); - nodeMetricList.getItems().forEach(nodeMetrics -> + client.top().nodes().metrics().getItems().forEach(nodeMetrics -> logger.info("{}\tCPU: {}{}\tMemory: {}{}", nodeMetrics.getMetadata().getName(), - nodeMetrics.getUsage().get("cpu").getAmount(), nodeMetrics.getUsage().get("cpu").getFormat(), - nodeMetrics.getUsage().get("memory").getAmount(), nodeMetrics.getUsage().get("memory").getFormat() + nodeMetrics.getUsage().get(CPU).getAmount(), nodeMetrics.getUsage().get(CPU).getFormat(), + nodeMetrics.getUsage().get(MEMORY).getAmount(), nodeMetrics.getUsage().get(MEMORY).getFormat() )); + final String namespace = Optional.ofNullable(client.getNamespace()).orElse("default"); logger.info("==== Pod Metrics ===="); - client.top().pods().metrics("default").getItems().forEach(podMetrics -> + client.top().pods().metrics(namespace).getItems().forEach(podMetrics -> podMetrics.getContainers().forEach(containerMetrics -> logger.info("{}\t{}\tCPU: {}{}\tMemory: {}{}", podMetrics.getMetadata().getName(), containerMetrics.getName(), - containerMetrics.getUsage().get("cpu").getAmount(), containerMetrics.getUsage().get("cpu").getFormat(), - containerMetrics.getUsage().get("memory").getAmount(), containerMetrics.getUsage().get("memory").getFormat() + containerMetrics.getUsage().get(CPU).getAmount(), containerMetrics.getUsage().get(CPU).getFormat(), + containerMetrics.getUsage().get(MEMORY).getAmount(), containerMetrics.getUsage().get(MEMORY).getFormat() )) ); - final String defaultNamespace = "default"; - client.pods().inNamespace(defaultNamespace).list().getItems().stream().findFirst().map(pod -> { + client.pods().inNamespace(namespace).list().getItems().stream().findFirst().map(pod -> { logger.info("==== Individual Pod Metrics ({}) ====", pod.getMetadata().getName()); - return client.top().pods().metrics(defaultNamespace, pod.getMetadata().getName()); + try { + return client.top().pods().metrics(namespace, pod.getMetadata().getName()); + } catch (KubernetesClientException ex) { + if (ex.getCode() == HttpURLConnection.HTTP_NOT_FOUND) { + logger.info(" - Pod has not reported any metrics yet"); + } else { + logger.warn(" - Error retrieving Pod metrics: {}", ex.getMessage()); + } + return null; + } }).ifPresent(podMetrics -> podMetrics.getContainers().forEach(containerMetrics -> logger.info("{}\t{}\tCPU: {}{}\tMemory: {}{}", podMetrics.getMetadata().getName(), containerMetrics.getName(), - containerMetrics.getUsage().get("cpu").getAmount(), containerMetrics.getUsage().get("cpu").getFormat(), - containerMetrics.getUsage().get("memory").getAmount(), containerMetrics.getUsage().get("memory").getFormat() + containerMetrics.getUsage().get(CPU).getAmount(), containerMetrics.getUsage().get(CPU).getFormat(), + containerMetrics.getUsage().get(MEMORY).getAmount(), containerMetrics.getUsage().get(MEMORY).getFormat() )) ); diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WaitUntilReadyExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WaitUntilReadyExample.java index 0c043b353d7..bcc54503578 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WaitUntilReadyExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WaitUntilReadyExample.java @@ -23,47 +23,45 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.util.Collections; +import java.util.Optional; import java.util.concurrent.TimeUnit; public class WaitUntilReadyExample { - private static Logger logger = LoggerFactory.getLogger(WaitUntilReadyExample.class); - public static void main(String args[]) throws IOException, InterruptedException { - try (final KubernetesClient client = new DefaultKubernetesClient()) { - Pod pod = new PodBuilder() - .withNewMetadata().withName("myapp-pod").withLabels(Collections.singletonMap("app", "myapp-pod")).endMetadata() - .withNewSpec() - .addNewContainer() - .withName("myapp-container") - .withImage("busybox:1.28") - .withCommand("sh", "-c", "echo 'The app is running!'; sleep 10") - .endContainer() - .addNewInitContainer() - .withName("init-myservice") - .withImage("busybox:1.28") - .withCommand("sh", "-c", "echo 'inititalizing...'; sleep 5") - .endInitContainer() - .endSpec() - .build(); + private static final Logger logger = LoggerFactory.getLogger(WaitUntilReadyExample.class); - String namespace = "default"; - pod = client.pods().inNamespace(namespace).create(pod); - log("Pod created, waiting for it to get ready"); + @SuppressWarnings("java:S106") + public static void main(String[] args) throws InterruptedException { + try (KubernetesClient client = new DefaultKubernetesClient()) { + final String namespace = Optional.ofNullable(client.getNamespace()).orElse("default"); + final Pod pod = client.pods().inNamespace(namespace).create( + new PodBuilder() + .withNewMetadata().withName("myapp-pod").withLabels(Collections.singletonMap("app", "myapp-pod")).endMetadata() + .withNewSpec() + .addNewContainer() + .withName("myapp-container") + .withImage("busybox:1.28") + .withCommand("sh", "-c", "echo 'The app is running!'; sleep 10") + .endContainer() + .addNewInitContainer() + .withName("init-myservice") + .withImage("busybox:1.28") + .withCommand("sh", "-c", "echo 'inititalizing...'; sleep 5") + .endInitContainer() + .endSpec() + .build() + ); + logger.info("Pod created, waiting for it to get ready..."); client.resource(pod).inNamespace(namespace).waitUntilReady(10, TimeUnit.SECONDS); - log("Pod is ready now."); - client.pods().inNamespace(namespace).withName(pod.getMetadata().getName()).watchLog(System.out); + logger.info("Pod is ready now"); + final LogWatch lw = client.pods().inNamespace(namespace).withName(pod.getMetadata().getName()).watchLog(System.out); + logger.info("Watching Pod logs for 10 seconds..."); + TimeUnit.SECONDS.sleep(10L); + logger.info("Deleting Pod..."); client.resource(pod).inNamespace(namespace).delete(); + logger.info("Closing Pod log watch"); + lw.close(); } - System.exit(0); - } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WatchExample.java b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WatchExample.java index 112a2e4c1a9..50c1fcf2bc5 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WatchExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/WatchExample.java @@ -15,60 +15,69 @@ */ package io.fabric8.kubernetes.examples; -import io.fabric8.kubernetes.api.model.ReplicationController; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; +import io.fabric8.kubernetes.api.builder.Visitor; +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.ConfigMapBuilder; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.Watch; import io.fabric8.kubernetes.client.Watcher; import io.fabric8.kubernetes.client.WatcherException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import java.util.Optional; +import java.util.UUID; public class WatchExample { private static final Logger logger = LoggerFactory.getLogger(WatchExample.class); - public static void main(String[] args) throws InterruptedException { - final CountDownLatch closeLatch = new CountDownLatch(1); - Config config = new ConfigBuilder().build(); - try (final KubernetesClient client = new DefaultKubernetesClient(config)) { - try (Watch watch = client.replicationControllers().inNamespace("default").withName("test").watch(new Watcher() { + @SuppressWarnings("java:S1604") + public static void main(String[] args) { + try ( + KubernetesClient client = new DefaultKubernetesClient(); + Watch ignored = newConfigMapWatch(client) + ) { + final String namespace = Optional.ofNullable(client.getNamespace()).orElse("default"); + final String name = "watch-config-map-test-" + UUID.randomUUID().toString(); + final ConfigMap cm = client.configMaps().inNamespace(namespace).createOrReplace(new ConfigMapBuilder() + .withNewMetadata().withName(name).endMetadata() + .build() + ); + client.configMaps().inNamespace(namespace).withName(name) + .patch(new ConfigMapBuilder().withNewMetadata().withName(name).endMetadata().addToData("key", "value").build()); + //noinspection Convert2Lambda + client.configMaps().inNamespace(namespace).withName(name).edit(new Visitor() { @Override - public void eventReceived(Action action, ReplicationController resource) { - logger.info("{}: {}", action, resource.getMetadata().getResourceVersion()); + public void visit(ObjectMetaBuilder omb) { + omb.addToAnnotations("annotation", "value"); } + }); + client.configMaps().delete(cm); + } catch (Exception e) { + logger.error("Global Error: {}", e.getMessage(), e); + } + } - @Override - public void onClose(WatcherException e) { - logger.debug("Watcher onClose"); - if (e != null) { - logger.error(e.getMessage(), e); - closeLatch.countDown(); - } - } - })) { - closeLatch.await(10, TimeUnit.SECONDS); - } catch (KubernetesClientException | InterruptedException e) { - logger.error("Could not watch resources", e); + private static Watch newConfigMapWatch(KubernetesClient client) { + return client.configMaps().watch(new Watcher() { + @Override + public void eventReceived(Action action, ConfigMap resource) { + logger.info("Watch event received {}: {}", action.name(), resource.getMetadata().getName()); } - } catch (Exception e) { - e.printStackTrace(); - logger.error(e.getMessage(), e); - Throwable[] suppressed = e.getSuppressed(); - if (suppressed != null) { - for (Throwable t : suppressed) { - logger.error(t.getMessage(), t); - } + @Override + public void onClose(WatcherException e) { + logger.error("Watch error received: {}", e.getMessage(), e); } - } - Thread.sleep(60000l); + + @Override + public void onClose() { + logger.info("Watch gracefully closed"); + } + }); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/AdaptClient.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/AdaptClient.java index 97190c3cb26..49e3d904c35 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/AdaptClient.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/AdaptClient.java @@ -19,12 +19,22 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.client.OpenShiftClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AdaptClient { + + private static final Logger logger = LoggerFactory.getLogger(AdaptClient.class); + public static void main(String[] args) { try (KubernetesClient client = new DefaultKubernetesClient()) { - OpenShiftClient oclient = client.adapt(OpenShiftClient.class); - System.out.println("Adapted to an openshift client: " + oclient); + if (Boolean.FALSE.equals(client.isAdaptable(OpenShiftClient.class))) { + logger.warn("Target cluster is not OpenShift compatible"); + return; + } + OpenShiftClient oClient = client.adapt(OpenShiftClient.class); + logger.info("Client adapted to OpenShiftClient: {}", oClient.getClass().getCanonicalName()); + logger.info("URL: {}", oClient.getOpenshiftUrl()); } } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/BuildConfigExamples.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/BuildConfigExamples.java index 9773827b3ba..695809e3621 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/BuildConfigExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/BuildConfigExamples.java @@ -19,15 +19,14 @@ import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.Quantity; -import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.ServiceAccountBuilder; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.api.model.Build; -import io.fabric8.openshift.api.model.BuildRequestBuilder; +import io.fabric8.openshift.api.model.BuildConfig; import io.fabric8.openshift.api.model.BuildConfigBuilder; +import io.fabric8.openshift.api.model.BuildRequestBuilder; +import io.fabric8.openshift.api.model.ImageStream; import io.fabric8.openshift.api.model.ImageStreamBuilder; import io.fabric8.openshift.api.model.WebHookTriggerBuilder; import io.fabric8.openshift.client.OpenShiftClient; @@ -35,21 +34,32 @@ import org.slf4j.LoggerFactory; public class BuildConfigExamples { + private static final Logger logger = LoggerFactory.getLogger(BuildConfigExamples.class); - public static void main(String[] args) throws InterruptedException { - Config config = new ConfigBuilder().build(); - try(KubernetesClient kubernetesClient = new DefaultKubernetesClient(config)){ - OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); - // Create a namespace for all our stuff - Namespace ns = new NamespaceBuilder().withNewMetadata().withName("thisisatest").addToLabels("this", "rocks").endMetadata().build(); - log("Created namespace", client.namespaces().create(ns)); + private static final String NAMESPACE = "this-is-a-test"; - ServiceAccount fabric8 = new ServiceAccountBuilder().withNewMetadata().withName("fabric8").endMetadata().build(); + @SuppressWarnings("java:S106") + public static void main(String[] args) throws InterruptedException { + try(KubernetesClient kubernetesClient = new DefaultKubernetesClient()){ + final OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); + final String namespace; + if (client.getNamespace() != null) { + namespace = client.getNamespace(); + logger.info("Using configured namespace: {}", namespace); + } else { + final Namespace ns = client.namespaces().create( + new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).addToLabels("this", "rocks").endMetadata().build() + ); + namespace = ns.getMetadata().getName(); + logger.info("Created namespace: {}", namespace); + } - client.serviceAccounts().inNamespace("thisisatest").create(fabric8); + client.serviceAccounts().inNamespace(namespace).create( + new ServiceAccountBuilder().withNewMetadata().withName("fabric8").endMetadata().build() + ); - log("Created image stream", client.imageStreams().inNamespace("thisisatest").create(new ImageStreamBuilder() + final ImageStream is = client.imageStreams().inNamespace(namespace).create(new ImageStreamBuilder() .withNewMetadata() .withName("example-camel-cdi") .endMetadata() @@ -60,24 +70,14 @@ public static void main(String[] args) throws InterruptedException { .withDockerImageRepository("fabric8/example-camel-cdi") .endSpec() .withNewStatus().withDockerImageRepository("").endStatus() - .build())); - - log("Created image stream", client.imageStreams().inNamespace("thisisatest").create(new ImageStreamBuilder() - .withNewMetadata() - .withName("java-sti") - .endMetadata() - .withNewSpec() - .addNewTag() - .withName("latest") - .endTag() - .withDockerImageRepository("fabric8/java-sti") - .endSpec() - .withNewStatus().withDockerImageRepository("").endStatus() - .build())); + .build() + ); + logger.info("Created image stream: {}", is.getMetadata().getName()); - log("Created build config", client.buildConfigs().inNamespace("thisisatest").create(new BuildConfigBuilder() + final String buildConfigName = "custom-build-config"; + final BuildConfig buildConfig = client.buildConfigs().inNamespace(namespace).create(new BuildConfigBuilder() .withNewMetadata() - .withName("custom-build-config") + .withName(buildConfigName) .endMetadata() .withNewSpec() .withServiceAccount("fabric8") @@ -88,8 +88,8 @@ public static void main(String[] args) throws InterruptedException { .endGit() .endSource() .withNewResources() - .addToLimits("mykey", new Quantity("10")) - .addToRequests("mykey", new Quantity("10")) + .addToLimits("mykey", new Quantity("10")) + .addToRequests("mykey", new Quantity("10")) .endResources() .withNewStrategy() .withType("Source") @@ -107,42 +107,35 @@ public static void main(String[] args) throws InterruptedException { .endGithub() .endTrigger() .endSpec() - .build())); + .build() + ); + logger.info("Created Build Config: {}", buildConfig.getMetadata().getName()); - Build build = client.buildConfigs().inNamespace("thisisatest").withName("custom-build-config").instantiate(new BuildRequestBuilder() - .withNewMetadata().withName("custom-build-config").endMetadata() + final Build build = client.buildConfigs().inNamespace(namespace).withName("custom-build-config").instantiate(new BuildRequestBuilder() + .withNewMetadata().withName(buildConfigName).endMetadata() .build()); - log("Build:", build.getMetadata().getName()); + logger.info("Instantiated Build: {}", build.getMetadata().getName()); - client.buildConfigs().inNamespace("thisisatest").withName("custom-build-config") + client.buildConfigs().inNamespace(namespace).withName(buildConfigName) .withSecret("secret101") .withType("github") .trigger(new WebHookTriggerBuilder() .withSecret("secret101") .build()); + logger.info("Triggered Build Config: {}", buildConfigName); Thread.sleep(6000); - log("Builds:"); - for (Build b: client.builds().inNamespace("thisisatest").list().getItems()) { - log("\t\t\t"+b.getMetadata().getName()); + logger.info("Builds:"); + for (Build b: client.builds().inNamespace(namespace).list().getItems()) { + logger.info("\t\t\t{}", b.getMetadata().getName()); - log("\t\t\t\t\t Log:");client.builds().inNamespace("thisisatest").withName(b.getMetadata().getName()).watchLog(System.out); + logger.info("\t\t\t\t\t Log:"); + client.builds().inNamespace(namespace).withName(b.getMetadata().getName()).watchLog(System.out); } - - - log("Done."); + logger.info("Done"); } } - - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/DeploymentConfigExamples.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/DeploymentConfigExamples.java index 23ddd5ada7d..fe3f12f073b 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/DeploymentConfigExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/DeploymentConfigExamples.java @@ -16,66 +16,65 @@ package io.fabric8.openshift.examples; -import io.fabric8.kubernetes.api.model.Namespace; -import io.fabric8.kubernetes.api.model.NamespaceBuilder; -import io.fabric8.kubernetes.api.model.Quantity; import io.fabric8.kubernetes.api.model.ServiceAccount; import io.fabric8.kubernetes.api.model.ServiceAccountBuilder; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.openshift.api.model.Build; -import io.fabric8.openshift.api.model.BuildRequestBuilder; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; -import io.fabric8.openshift.api.model.DeploymentTriggerPolicy; -import io.fabric8.openshift.api.model.ProjectRequest; import io.fabric8.openshift.api.model.ProjectRequestBuilder; -import io.fabric8.openshift.api.model.WebHookTriggerBuilder; import io.fabric8.openshift.client.OpenShiftClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DeploymentConfigExamples { - private static final Logger logger = LoggerFactory.getLogger(DeploymentConfigExamples.class); - public static void main(String[] args) throws InterruptedException { - Config config = new ConfigBuilder().build(); - try (KubernetesClient kubernetesClient = new DefaultKubernetesClient(config)) { - OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); + private static final Logger logger = LoggerFactory.getLogger(DeploymentConfigExamples.class); - ProjectRequest projectRequest = new ProjectRequestBuilder() - .withNewMetadata() - .withName("thisisatest") - .addToLabels("project", "thisisatest") - .endMetadata() - .build(); + private static final String NAMESPACE = "this-is-a-test"; + private static final String IMAGE = "busybox"; + public static void main(String[] args) { + try (KubernetesClient kubernetesClient = new DefaultKubernetesClient()) { + final OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); - log("Created project", client.projectrequests().create(projectRequest)); + final String project; + if (client.getNamespace() != null) { + project = client.getNamespace(); + logger.info("Using configured project: {}", project); + } else { + client.projectrequests().create( + new ProjectRequestBuilder() + .withNewMetadata() + .withName(NAMESPACE) + .endMetadata() + .build() + ); + project = NAMESPACE; + logger.info("Created project: {}", project); + } ServiceAccount fabric8 = new ServiceAccountBuilder().withNewMetadata().withName("fabric8").endMetadata().build(); - client.serviceAccounts().inNamespace("thisisatest").createOrReplace(fabric8); + client.serviceAccounts().inNamespace(project).createOrReplace(fabric8); - log("Created deployment", client.deploymentConfigs().inNamespace("thisisatest").createOrReplace(new DeploymentConfigBuilder() + log("Created deployment", client.deploymentConfigs().inNamespace(project).createOrReplace(new DeploymentConfigBuilder() .withNewMetadata() - .withName("nginx") + .withName(IMAGE) .endMetadata() .withNewSpec() .withReplicas(1) .addNewTrigger() .withType("ConfigChange") .endTrigger() - .addToSelector("app", "nginx") + .addToSelector("app", IMAGE) .withNewTemplate() .withNewMetadata() - .addToLabels("app", "nginx") + .addToLabels("app", IMAGE) .endMetadata() .withNewSpec() .addNewContainer() - .withName("nginx") - .withImage("nginx") + .withName(IMAGE) + .withImage(IMAGE) .addNewPort() .withContainerPort(80) .endPort() @@ -86,11 +85,11 @@ public static void main(String[] args) throws InterruptedException { .build())); - client.deploymentConfigs().inNamespace("thisisatest").withName("nginx").scale(2, true); - log("Created pods:", client.pods().inNamespace("thisisatest").list().getItems()); - client.deploymentConfigs().inNamespace("thisisatest").withName("nginx").delete(); - log("Pods:", client.pods().inNamespace("thisisatest").list().getItems()); - log("Replication Controllers:", client.replicationControllers().inNamespace("thisisatest").list().getItems()); + client.deploymentConfigs().inNamespace(project).withName(IMAGE).scale(2, true); + log("Created pods:", client.pods().inNamespace(project).list().getItems()); + client.deploymentConfigs().inNamespace(project).withName(IMAGE).delete(); + log("Pods:", client.pods().inNamespace(project).list().getItems()); + log("Replication Controllers:", client.replicationControllers().inNamespace(project).list().getItems()); log("Done."); } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamExample.java index 08e8e08e6e7..580e8eac7b3 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamExample.java @@ -13,12 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package io.fabric8.openshift.examples; import io.fabric8.kubernetes.api.model.ObjectReferenceBuilder; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.openshift.api.model.ImageStream; import io.fabric8.openshift.api.model.ImageStreamBuilder; import io.fabric8.openshift.api.model.TagReferenceBuilder; @@ -27,30 +24,22 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashMap; +import java.util.Optional; public class ImageStreamExample { private static final Logger logger = LoggerFactory.getLogger(ImageStreamExample.class); - public static void main(String[] args) throws InterruptedException { - - String namespace = "myproject"; - String master = "CLUSTER_URL"; - Config config = new ConfigBuilder().withMasterUrl(master).build(); - OpenShiftClient client = new DefaultOpenShiftClient(config); - - HashMap annotations = new HashMap(); - annotations.put("role", "jenkins-slave"); - annotations.put("slave-label", "jenkins-slave"); - - try { - - ImageStream imageStream = new ImageStreamBuilder() - .withNewMetadata() - .withName("slave-jenkins") - .endMetadata() - .withNewSpec() + public static void main(String[] args) { + try (OpenShiftClient client = new DefaultOpenShiftClient()) { + final String project = Optional.ofNullable(client.getNamespace()).orElse("myproject"); + final String imageStreamName = "slave-jenkins"; + final ImageStream imageStream = client.imageStreams().inNamespace(project).create( + new ImageStreamBuilder() + .withNewMetadata() + .withName(imageStreamName) + .endMetadata() + .withNewSpec() .addToTags(0, new TagReferenceBuilder() .withName("base") .withFrom(new ObjectReferenceBuilder() @@ -61,7 +50,8 @@ public static void main(String[] args) throws InterruptedException { .build() ) .addToTags(1, new TagReferenceBuilder() - .withAnnotations(annotations) + .addToAnnotations("role", "jenkins-slave") + .addToAnnotations("slave-label", "jenkins-slave") .withName("latest") .withFrom(new ObjectReferenceBuilder() .withKind("ImageStreamTag") @@ -70,29 +60,18 @@ public static void main(String[] args) throws InterruptedException { ) .build() ) - .endSpec() - .build(); - - log("Created ImageStream", client.imageStreams().inNamespace(namespace).create(imageStream)); - - }finally { - - log("Tags in ImageStream are"); - log("First Tag is " + client.imageStreams().inNamespace(namespace).withName("slave-jenkins").get().getSpec().getTags().get(0).getName()); - log("Second Tag is " + client.imageStreams().inNamespace(namespace).withName("slave-jenkins").get().getSpec().getTags().get(1).getName()); - - client.imageStreams().inNamespace(namespace).withName("slave-jenkins").delete(); - client.close(); + .endSpec() + .build() + ); + logger.info("Created ImageStream: {}/{}", project, imageStream.getMetadata().getName()); + final ImageStream isFromServer = client.imageStreams().inNamespace(project).withName(imageStreamName).fromServer().get(); + logger.info("Tags in ImageStream are:"); + logger.info(" - {}", isFromServer.getSpec().getTags().get(0).getName()); + logger.info(" - {}", isFromServer.getSpec().getTags().get(1).getName()); + + logger.info("Deleting ImageStream"); + client.imageStreams().inNamespace(project).withName(imageStreamName).delete(); } } - - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamTagExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamTagExample.java index f567c62d27b..94607cd80c3 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamTagExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ImageStreamTagExample.java @@ -16,8 +16,6 @@ package io.fabric8.openshift.examples; -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.openshift.api.model.ImageStreamTag; import io.fabric8.openshift.api.model.ImageStreamTagBuilder; import io.fabric8.openshift.client.DefaultOpenShiftClient; @@ -25,45 +23,33 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Optional; +import java.util.concurrent.TimeUnit; + public class ImageStreamTagExample { private static final Logger logger = LoggerFactory.getLogger(ImageStreamTagExample.class); public static void main(String[] args) throws InterruptedException { - String namespace = "myproject"; - String master = "CLUSTER_URL"; - Config config = new ConfigBuilder().withMasterUrl(master).build(); - OpenShiftClient client = new DefaultOpenShiftClient(config); - - try { - - ImageStreamTag istag = new ImageStreamTagBuilder().withNewMetadata().withName("bar1:1.0.12").endMetadata() - .withNewTag().withNewFrom().withKind("DockerImage").withName("openshift/wildfly-81-centos7:latest").endFrom().endTag() - .build(); - - log("Created istag", client.imageStreamTags().inNamespace(namespace).create(istag)); - - Thread.sleep(30000); - - }finally { - - log("ImageStreamTags are :"); - log(client.imageStreamTags().inNamespace(namespace).withName("bar1:1.0.12").get().toString()); - - log("ImageStreamTags using list are :"); - log(client.imageStreamTags().list().getItems().get(0).toString()); - log("Deleted istag",client.imageStreamTags().withName("bar1:1.0.12").delete()); - client.close(); + try (OpenShiftClient client = new DefaultOpenShiftClient()) { + final String project = Optional.ofNullable(client.getNamespace()).orElse("myproject"); + final String isTagName = "bar1:1.0.12"; + final ImageStreamTag isTag = client.imageStreamTags().inNamespace(project).createOrReplace( + new ImageStreamTagBuilder().withNewMetadata().withName(isTagName).endMetadata() + .withNewTag().withNewFrom().withKind("DockerImage").withName("openshift/wildfly-81-centos7:latest").endFrom().endTag() + .build() + ); + logger.info("Created ImageStreamTag: {}", isTag.getMetadata().getName()); + int limit = 0; + while (client.imageStreamTags().inNamespace(project).withName(isTagName).fromServer().get() == null && limit++ < 10){ + TimeUnit.SECONDS.sleep(1); + } + logger.info("ImageStreamTags in {}:", project); + client.imageStreamTags().inNamespace(project).list().getItems().forEach(ist -> + logger.info(" - {}", ist.getMetadata().getName())); + final boolean deletedIsTag = client.imageStreamTags().withName(isTagName).delete(); + logger.info("Deleted ImageStreamTag: {}", deletedIsTag); } } - - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListBuildConfigs.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListBuildConfigs.java index f4fa10ac406..332df9d0b3f 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListBuildConfigs.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListBuildConfigs.java @@ -22,29 +22,32 @@ import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftAPIGroups; import io.fabric8.openshift.client.OpenShiftClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; public class ListBuildConfigs { + + private static final Logger logger = LoggerFactory.getLogger(ListBuildConfigs.class); + public static void main(String[] args) { - try { - OpenShiftClient client = new DefaultOpenShiftClient(); + try(OpenShiftClient client = new DefaultOpenShiftClient()) { if (!client.supportsOpenShiftAPIGroup(OpenShiftAPIGroups.BUILD)) { - System.out.println("WARNING this cluster does not support the API Group " + OpenShiftAPIGroups.BUILD); + logger.warn("This cluster does not support the API Group {}", OpenShiftAPIGroups.BUILD); return; } BuildConfigList list = client.buildConfigs().list(); if (list == null) { - System.out.println("ERROR no list returned!"); + logger.error("No list returned!"); return; } List items = list.getItems(); for (BuildConfig item : items) { - System.out.println("BuildConfig " + item.getMetadata().getName() + " has version: " + item.getApiVersion()); + logger.info("BuildConfig {} has version: {}", item.getMetadata().getName(), item.getApiVersion()); } } catch (KubernetesClientException e) { - System.out.println("Failed: " + e); - e.printStackTrace(); + logger.error("Failed: {}", e.getMessage(), e); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListDeploymentConfigs.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListDeploymentConfigs.java index f12a63a4f63..382e8beeffb 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListDeploymentConfigs.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListDeploymentConfigs.java @@ -22,40 +22,43 @@ import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftAPIGroups; import io.fabric8.openshift.client.OpenShiftClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; -import static org.junit.Assert.assertNotNull; - public class ListDeploymentConfigs { + + private static final Logger logger = LoggerFactory.getLogger(ListDeploymentConfigs.class); + public static void main(String[] args) { - try { - OpenShiftClient client = new DefaultOpenShiftClient(); + try(OpenShiftClient client = new DefaultOpenShiftClient()) { if (!client.supportsOpenShiftAPIGroup(OpenShiftAPIGroups.APPS)) { - System.out.println("WARNING this cluster does not support the API Group " + OpenShiftAPIGroups.APPS); + logger.warn("This cluster does not support the API Group {}", OpenShiftAPIGroups.APPS); return; } DeploymentConfigList list = client.deploymentConfigs().list(); if (list == null) { - System.out.println("ERROR no list returned!"); + logger.error("No list returned!"); return; } List items = list.getItems(); for (DeploymentConfig item : items) { - System.out.println("DeploymentConfig " + item.getMetadata().getName() + " has version: " + item.getApiVersion()); + logger.info("DeploymentConfig {} has version: {}", item.getMetadata().getName(), item.getApiVersion()); } - if (items.size() > 0) { - // lets check .get() too + if (!items.isEmpty()) { DeploymentConfig deploymentConfig = items.get(0); String name = deploymentConfig.getMetadata().getName(); deploymentConfig = client.deploymentConfigs().withName(name).get(); - assertNotNull("No DeploymentConfig found for name " + name, deploymentConfig); - System.out.println("get() DeploymentConfig " + name + " has version: " + deploymentConfig.getApiVersion()); + if (deploymentConfig == null) { + logger.error("No DeploymentConfig found for name {}", name); + return; + } + logger.info("get() DeploymentConfig {} has version: {}", name, deploymentConfig.getApiVersion()); } } catch (KubernetesClientException e) { - System.out.println("Failed: " + e); - e.printStackTrace(); + logger.error("Failed: {}", e.getMessage(), e); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListImageStreams.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListImageStreams.java index b408c9d58a1..c03583db505 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListImageStreams.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/ListImageStreams.java @@ -22,30 +22,33 @@ import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftAPIGroups; import io.fabric8.openshift.client.OpenShiftClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; public class ListImageStreams { + + private static final Logger logger = LoggerFactory.getLogger(ListImageStreams.class); + public static void main(String[] args) { - try { - OpenShiftClient client = new DefaultOpenShiftClient(); + try(OpenShiftClient client = new DefaultOpenShiftClient()) { if (!client.supportsOpenShiftAPIGroup(OpenShiftAPIGroups.IMAGE)) { - System.out.println("WARNING this cluster does not support the API Group " + OpenShiftAPIGroups.IMAGE); + logger.warn("This cluster does not support the API Group {}", OpenShiftAPIGroups.IMAGE); return; } ImageStreamList list = client.imageStreams().list(); if (list == null) { - System.out.println("ERROR no list returned!"); + logger.error("No list returned!"); return; } List items = list.getItems(); for (ImageStream item : items) { - System.out.println("ImageStream " + item.getMetadata().getName() + " has version: " + item.getApiVersion()); + logger.info("ImageStream {} has version: {}", item.getMetadata().getName(), item.getApiVersion()); } - System.out.println("Found " + items.size() + " ImageStream(s)"); + logger.info("Found {} ImageStream(s)", items.size()); } catch (KubernetesClientException e) { - System.out.println("Failed: " + e); - e.printStackTrace(); + logger.error("Failed: {}", e.getMessage(), e); } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoadExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoadExample.java index 0d480fb635a..23e133d3e28 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoadExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoadExample.java @@ -18,7 +18,6 @@ import io.fabric8.kubernetes.api.builder.Visitor; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; @@ -32,74 +31,68 @@ public class LoadExample { - private static final Logger logger = LoggerFactory.getLogger(LoadExample.class); + private static final Logger logger = LoggerFactory.getLogger(LoadExample.class); - public static void main(String[] args) throws InterruptedException { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; - } - - Config config = new ConfigBuilder().build(); - try (KubernetesClient kubernetesClient = new DefaultKubernetesClient(config)) { - OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); - - List list = client.load(TemplateExample.class.getResourceAsStream("/test-template.yml")).get(); - System.out.println("Found in file:" + list.size() + " items."); - for (HasMetadata meta : list) { - System.out.println(display(meta)); - } - - - list = client.load(TemplateExample.class.getResourceAsStream("/test-template.yml")).accept((Visitor) item -> item.addToLabels("visitorkey", "visitorvalue")).get(); - - System.out.println("Visited:" + list.size() + " items."); - for (HasMetadata meta : list) { - System.out.println(display(meta)); - } - - - - list = client.load(TemplateExample.class.getResourceAsStream("/test-template.yml")).fromServer().get(); - System.out.println("Found on server:" + list.size() + " items."); - for (HasMetadata meta : list) { - System.out.println(display(meta)); - } - - list = client.load(TemplateExample.class.getResourceAsStream("/test-template.yml")) - .deletingExisting() - .createOrReplace(); - - System.out.println("Applied:" + list.size() + " items."); - for (HasMetadata meta : list) { - System.out.println(display(meta)); - } - - Boolean result = client.load(TemplateExample.class.getResourceAsStream("/test-template.yml")).delete(); - System.out.println("Deleted:" + result); - } + private static final String LOADED_RESOURCE = "/test-template.yml"; + @SuppressWarnings("java:S1604") + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } + try (KubernetesClient kubernetesClient = new DefaultKubernetesClient(configBuilder.build())) { + final OpenShiftClient client = kubernetesClient.adapt(OpenShiftClient.class); + + final List list = client.load(TemplateExample.class.getResourceAsStream(LOADED_RESOURCE)).get(); + logger.info("Found in file: {} items.", list.size()); + list.stream().map(LoadExample::display).forEach(logger::info); + + //noinspection Convert2Lambda + final List visitedList = client.load(TemplateExample.class.getResourceAsStream(LOADED_RESOURCE)) + .accept(new Visitor(){ + @Override + public void visit(ObjectMetaBuilder item) { + item.addToLabels("visitorkey", "visitorvalue"); + } + }).get(); + logger.info("Visited: {} items.", visitedList.size()); + visitedList.stream().map(LoadExample::display).forEach(logger::info); + + + final List fromServerList = client.load(TemplateExample.class.getResourceAsStream(LOADED_RESOURCE)).fromServer().get(); + logger.info("Found on server: {} items.", fromServerList.size()); + fromServerList.stream().map(LoadExample::display).forEach(logger::info); + + final List appliedList = client.load(TemplateExample.class.getResourceAsStream(LOADED_RESOURCE)) + .deletingExisting() + .createOrReplace(); + logger.info("Applied: {} items.", appliedList.size()); + appliedList.stream().map(LoadExample::display).forEach(logger::info); + + final boolean result = client.load(TemplateExample.class.getResourceAsStream(LOADED_RESOURCE)).delete(); + logger.info("Deleted: {}", result); + } + } - private static String display(HasMetadata item) { - StringBuilder sb = new StringBuilder(); - sb.append("[ "); - if (Utils.isNotNullOrEmpty(item.getKind())) { - sb.append("Kind:").append(item.getKind()); - } - if (Utils.isNotNullOrEmpty(item.getMetadata().getName())) { - sb.append("Name:").append(item.getMetadata().getName()); - } - - if (item.getMetadata().getLabels()!=null && !item.getMetadata().getLabels().isEmpty()) { - sb.append("Labels: [ "); - for (Map.Entry entry : item.getMetadata().getLabels().entrySet()) { - sb.append(entry.getKey()).append(":").append(entry.getValue()).append(" "); - } - sb.append("]"); - } - sb.append(" ]"); - return sb.toString(); + private static String display(HasMetadata item) { + StringBuilder sb = new StringBuilder(); + sb.append("[ "); + if (Utils.isNotNullOrEmpty(item.getKind())) { + sb.append("Kind:").append(item.getKind()); + } + if (Utils.isNotNullOrEmpty(item.getMetadata().getName())) { + sb.append("Name:").append(item.getMetadata().getName()); + } + if (item.getMetadata().getLabels() != null && !item.getMetadata().getLabels().isEmpty()) { + sb.append("Labels: [ "); + for (Map.Entry entry : item.getMetadata().getLabels().entrySet()) { + sb.append(entry.getKey()).append(":").append(entry.getValue()).append(" "); + } + sb.append("]"); } + sb.append(" ]"); + return sb.toString(); + } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoginExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoginExample.java index cf9e98797dc..d60251e1d59 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoginExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/LoginExample.java @@ -17,6 +17,7 @@ import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; +import io.fabric8.openshift.api.model.ProjectList; import io.fabric8.openshift.client.OpenShiftClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +34,8 @@ public static void main(String[] args) { .build())) { final OpenShiftClient openShiftClient = kubernetesClient.adapt(OpenShiftClient.class); - logger.info(openShiftClient.projects().list().toString()); + final ProjectList pl = openShiftClient.projects().list(); + logger.info("{}", pl); } } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/NewProjectExamples.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/NewProjectExamples.java index 10ba68b59e7..65fa90b85b1 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/NewProjectExamples.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/NewProjectExamples.java @@ -16,30 +16,26 @@ package io.fabric8.openshift.examples; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.openshift.api.model.ProjectRequest; import io.fabric8.openshift.api.model.ProjectRequestBuilder; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class NewProjectExamples { - private static final Logger logger = LoggerFactory.getLogger(NewProjectExamples.class); - public static void main(String[] args) throws InterruptedException { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - - try (OpenShiftClient client = new DefaultOpenShiftClient(config)) { + try (OpenShiftClient client = new DefaultOpenShiftClient(configBuilder.build())) { ProjectRequest request = null; try { - request = client.projectrequests().create(new ProjectRequestBuilder().withNewMetadata().withName("thisisatest").endMetadata().withDescription("Jimmi").withDisplayName("Jimmi").build()); + request = client.projectrequests().create( + new ProjectRequestBuilder() + .withNewMetadata().withName("thisisatest").endMetadata().withDescription("Jimmi").withDisplayName("Jimmi").build() + ); } finally { if (request != null) { client.projects().withName(request.getMetadata().getName()).delete(); @@ -48,12 +44,4 @@ public static void main(String[] args) throws InterruptedException { } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/OpenShiftVersionExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/OpenShiftVersionExample.java index 274b0610524..a7bf5f269d8 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/OpenShiftVersionExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/OpenShiftVersionExample.java @@ -16,7 +16,6 @@ package io.fabric8.openshift.examples; -import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.VersionInfo; import io.fabric8.openshift.client.DefaultOpenShiftClient; @@ -25,37 +24,26 @@ import org.slf4j.LoggerFactory; public class OpenShiftVersionExample { - private static Logger logger = LoggerFactory.getLogger(OpenShiftVersionExample.class); + private static final Logger logger = LoggerFactory.getLogger(OpenShiftVersionExample.class); - public static void main(String args[]) { - String master = "https://localhost:8443/"; - if (args.length == 1) { - master = args[0]; + public static void main(String[] args) { + final ConfigBuilder configBuilder = new ConfigBuilder(); + if (args.length > 0) { + configBuilder.withMasterUrl(args[0]); } - - Config config = new ConfigBuilder().withMasterUrl(master).build(); - - try(final OpenShiftClient client = new DefaultOpenShiftClient(config)) { - VersionInfo versionInfo = client.getVersion(); - - log("Version details of this OpenShift cluster :-"); - log("Major : ", versionInfo.getMajor()); - log("Minor : ", versionInfo.getMinor()); - log("GitVersion : ", versionInfo.getGitVersion()); - log("BuildDate : ", versionInfo.getBuildDate()); - log("GitTreeState : ", versionInfo.getGitTreeState()); - log("Platform : ", versionInfo.getPlatform()); - log("GitVersion : ", versionInfo.getGitVersion()); - log("GoVersion : ", versionInfo.getGoVersion()); - log("GitCommit : ", versionInfo.getGitCommit()); + try(OpenShiftClient client = new DefaultOpenShiftClient(configBuilder.build())) { + VersionInfo openShiftVersionInfo = client.getVersion(); + + logger.info("Version details of this OpenShift cluster :-"); + logger.info("Major : {}", openShiftVersionInfo.getMajor()); + logger.info("Minor : {}", openShiftVersionInfo.getMinor()); + logger.info("GitVersion : {}", openShiftVersionInfo.getGitVersion()); + logger.info("BuildDate : {}", openShiftVersionInfo.getBuildDate()); + logger.info("GitTreeState : {}", openShiftVersionInfo.getGitTreeState()); + logger.info("Platform : {}", openShiftVersionInfo.getPlatform()); + logger.info("GitVersion : {}", openShiftVersionInfo.getGitVersion()); + logger.info("GoVersion : {}", openShiftVersionInfo.getGoVersion()); + logger.info("GitCommit : {}", openShiftVersionInfo.getGitCommit()); } } - - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/SecurityContextConstraintExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/SecurityContextConstraintExample.java index 5fa429ce08f..05230b0be8c 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/SecurityContextConstraintExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/SecurityContextConstraintExample.java @@ -31,11 +31,13 @@ public class SecurityContextConstraintExample { //command for that is //oc login -u system:admin - public static void main(String[] args) throws InterruptedException { - + public static void main(String[] args) { try (OpenShiftClient client = new DefaultOpenShiftClient()) { - - SecurityContextConstraints scc = new SecurityContextConstraintsBuilder() + logger.info("Cluster SecurityContextConstraints:"); + client.securityContextConstraints().list().getItems().forEach(scc -> + logger.info(" - {}", scc.getMetadata().getName())); + final SecurityContextConstraints scc = client.securityContextConstraints().create( + new SecurityContextConstraintsBuilder() .withNewMetadata().withName("scc").endMetadata() .withAllowPrivilegedContainer(true) .withNewRunAsUser() @@ -52,22 +54,12 @@ public static void main(String[] args) throws InterruptedException { .endSupplementalGroups() .addToUsers("admin") .addToGroups("admin-group") - .build(); - - log("Created SecurityContextConstraints", client.securityContextConstraints().create(scc)); - - client.close(); - + .build() + ); + logger.info("Created SecurityContextConstraints {}", scc); } catch (KubernetesClientException e) { logger.error(e.getMessage(), e); } } - private static void log(String action, Object obj) { - logger.info("{}: {}", action, obj); - } - - private static void log(String action) { - logger.info(action); - } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/TemplateExample.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/TemplateExample.java index cf7a443e289..ca625b529d2 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/TemplateExample.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/TemplateExample.java @@ -17,8 +17,8 @@ */ import io.fabric8.kubernetes.api.model.KubernetesList; -import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.openshift.api.model.Parameter; +import io.fabric8.openshift.api.model.ProjectRequestBuilder; import io.fabric8.openshift.api.model.Template; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; @@ -37,8 +37,15 @@ public class TemplateExample { public static void main(String[] args) { try (OpenShiftClient client = new DefaultOpenShiftClient()) { try { - logger.info("Creating temporary namespace '{}' for example", NAMESPACE); - client.namespaces().create(new NamespaceBuilder().withNewMetadata().withName(NAMESPACE).endMetadata().build()); + logger.info("Creating temporary project '{}' for example", NAMESPACE); + client.projectrequests().create( + new ProjectRequestBuilder() + .withNewMetadata() + .withName(NAMESPACE) + .endMetadata() + .build() + ); + logger.info("Created project: {}", NAMESPACE); final Template loadedTemplate = client.templates() .load(TemplateExample.class.getResourceAsStream(TEST_TEMPLATE_RESOURCE)).get(); @@ -78,8 +85,8 @@ public static void main(String[] args) { client.lists().inNamespace(NAMESPACE).load(TemplateExample.class.getResourceAsStream("/test-list.yml")).create(); } finally { // And finally clean up the namespace - client.namespaces().withName(NAMESPACE).delete(); - logger.info("Deleted namespace {}", NAMESPACE); + client.projects().withName(NAMESPACE).delete(); + logger.info("Deleted project {}", NAMESPACE); } } } diff --git a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/WatchBuildConfigs.java b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/WatchBuildConfigs.java index 9afbf762c2c..cb9b1e80b2d 100644 --- a/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/WatchBuildConfigs.java +++ b/kubernetes-examples/src/main/java/io/fabric8/openshift/examples/WatchBuildConfigs.java @@ -23,32 +23,35 @@ import io.fabric8.openshift.api.model.BuildConfig; import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Optional; public class WatchBuildConfigs { + + private static final Logger logger = LoggerFactory.getLogger(WatchBuildConfigs.class); + public static void main(String[] args) { - try { - OpenShiftClient client = new DefaultOpenShiftClient(); - String namespace = client.getNamespace(); - System.out.println("Watching BuildConfigs in namespace " + namespace); + try (OpenShiftClient client = new DefaultOpenShiftClient()) { + final String namespace = Optional.ofNullable(client.getNamespace()).orElse("myproject"); + logger.info("Watching BuildConfigs in namespace {}", namespace); try (Watch watchable = client.buildConfigs().inNamespace(namespace).watch(new Watcher() { @Override public void eventReceived(Action action, BuildConfig resource) { - System.out.println(">> Action: " + action + " on BuildConfig " + resource.getMetadata().getName() + " with version: " + resource.getApiVersion()); + logger.info(">> Action: {} on BuildConfig {} with version: {}", + action.name(), resource.getMetadata().getName(), resource.getApiVersion()); } @Override public void onClose(WatcherException cause) { - System.out.println("Watch Closed: " + cause); - if (cause != null) { - cause.printStackTrace(); - } + logger.error("Error on Watcher (Closed): {}", cause.getMessage(), cause); } })) { - System.out.println("Created watchable " + watchable); + logger.info("Created watchable {}", watchable); } } catch (KubernetesClientException e) { - System.out.println("Failed: " + e); - e.printStackTrace(); + logger.error("Failed: {}", e.getMessage(), e); } } diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectOperationsImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectOperationsImpl.java index 2124e157d98..1e414318370 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectOperationsImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectOperationsImpl.java @@ -27,7 +27,6 @@ import io.fabric8.openshift.client.dsl.ProjectOperation; import okhttp3.OkHttpClient; import io.fabric8.openshift.api.model.Project; -import io.fabric8.openshift.api.model.ProjectBuilder; import io.fabric8.openshift.api.model.ProjectList; import io.fabric8.openshift.client.OpenShiftConfig; diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java index 2f2d6452293..f4c8235dbf9 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java @@ -15,7 +15,6 @@ */ package io.fabric8.openshift.client.dsl.internal; -import io.fabric8.kubernetes.api.builder.Visitor; import io.fabric8.kubernetes.api.model.ListOptions; import io.fabric8.kubernetes.api.model.ListOptionsBuilder; import io.fabric8.kubernetes.api.model.Status; @@ -24,7 +23,6 @@ import io.fabric8.kubernetes.client.dsl.base.OperationSupport; import io.fabric8.kubernetes.client.utils.Utils; import io.fabric8.openshift.api.model.ProjectRequest; -import io.fabric8.openshift.api.model.ProjectRequestBuilder; import io.fabric8.openshift.client.OpenShiftConfig; import io.fabric8.openshift.client.dsl.ProjectRequestOperation; import okhttp3.HttpUrl; @@ -94,7 +92,7 @@ public ProjectRequest create(ProjectRequest... resources) { } catch (ExecutionException | IOException e) { throw KubernetesClientException.launderThrowable(e); } - + }