From c0a6cd34bb4228bf0da2a218fb9dbfa27a9fabcf Mon Sep 17 00:00:00 2001 From: Rohan Kumar Date: Thu, 28 Jul 2022 23:34:19 +0530 Subject: [PATCH] feat (jkube-kit) : Initial draft for JKube Actions Summary (#1033) Add summary for jkube build actions in order to improve ux. Signed-off-by: Rohan Kumar --- CHANGELOG.md | 1 + .../doc/src/main/asciidoc/index.adoc | 1 + .../jkube/gradle/plugin/tests/AutoTLSIT.java | 9 +- .../gradle/plugin/tests/ConfigMapIT.java | 25 +- .../gradle/plugin/tests/DebugModeIT.java | 14 +- .../plugin/tests/DefaultControllerIT.java | 14 +- .../plugin/tests/DefaultMetadataIT.java | 29 +- .../plugin/tests/DependencyResourcesIT.java | 16 +- .../plugin/tests/DockerfileSimpleIT.java | 17 +- .../gradle/plugin/tests/FileSecretIT.java | 14 +- .../gradle/plugin/tests/GitAnnotationsIT.java | 14 +- .../gradle/plugin/tests/GroovyDSLImageIT.java | 8 +- .../plugin/tests/ImageChangeTriggerIT.java | 7 +- .../plugin/tests/ImagePullPolicyIT.java | 14 +- .../jkube/gradle/plugin/tests/IngressIT.java | 9 +- .../plugin/tests/JavaOptionsEnvMergeIT.java | 14 +- .../jkube/gradle/plugin/tests/NameIT.java | 12 +- .../gradle/plugin/tests/NamespaceIT.java | 14 +- .../gradle/plugin/tests/OpenLibertyIT.java | 17 +- .../plugin/tests/ProbesGroovyDSLIT.java | 17 +- .../gradle/plugin/tests/ProjectLabelIT.java | 17 +- .../plugin/tests/RevisionHistoryIT.java | 14 +- .../jkube/gradle/plugin/tests/RouteIT.java | 8 +- .../gradle/plugin/tests/ServiceAccountIT.java | 12 +- .../jkube/gradle/plugin/tests/ServiceIT.java | 23 +- .../gradle/plugin/tests/SpringBootIT.java | 19 +- .../tests/SpringBootWithFragmentIT.java | 19 +- .../plugin/tests/TriggersAnnotationIT.java | 14 +- .../jkube/gradle/plugin/tests/VertxIT.java | 18 +- .../plugin/tests/VolumePermissionIT.java | 19 +- .../jkube/gradle/plugin/GradleUtil.java | 16 + .../gradle/plugin/KubernetesExtension.java | 6 + .../jkube/gradle/plugin/KubernetesPlugin.java | 14 + .../gradle/plugin/task/AbstractJKubeTask.java | 7 + .../plugin/task/KubernetesApplyTask.java | 9 +- .../plugin/task/KubernetesBuildTask.java | 4 +- .../plugin/task/KubernetesDebugTask.java | 5 +- .../plugin/task/KubernetesHelmPushTask.java | 5 +- .../plugin/task/KubernetesHelmTask.java | 5 +- .../plugin/task/KubernetesJKubeTask.java | 9 + .../gradle/plugin/task/KubernetesLogTask.java | 5 +- .../plugin/task/KubernetesPushTask.java | 5 +- .../plugin/task/KubernetesResourceTask.java | 5 +- .../plugin/task/KubernetesUndeployTask.java | 5 +- .../plugin/task/KubernetesWatchTask.java | 7 +- .../plugin/TestKubernetesExtension.java | 5 + .../plugin/task/KubernetesBuildTaskTest.java | 7 + .../task/KubernetesHelmPushTaskTest.java | 9 + .../plugin/task/KubernetesHelmTaskTest.java | 9 + .../plugin/task/KubernetesLogTaskTest.java | 16 + .../plugin/task/KubernetesWatchTaskTest.java | 9 + .../jkube/gradle/plugin/OpenShiftPlugin.java | 14 + .../plugin/task/OpenShiftJKubeTask.java | 10 + .../gradle/plugin/TestOpenShiftExtension.java | 5 + .../task/OpenShiftHelmPushTaskTest.java | 10 + .../plugin/task/OpenShiftHelmTaskTest.java | 9 + .../plugin/task/OpenShiftWatchTaskTest.java | 9 + .../build/api/assembly/AssemblyManager.java | 3 +- .../build/service/docker/BuildService.java | 3 + .../build/service/docker/RegistryService.java | 6 +- .../jkube/kit/service/jib/JibServiceUtil.java | 3 + .../jkube/kit/common/util/MavenUtil.java | 7 + .../kit/common/summary/ImageSummary.java | 37 ++ .../summary/KubernetesResourceSummary.java | 39 ++ .../jkube/kit/common/summary/Summary.java | 44 ++ .../kit/common/util/KubernetesHelper.java | 14 + .../jkube/kit/common/util/SummaryUtil.java | 426 ++++++++++++++++++ .../jkube/kit/common/SummaryUtilTest.java | 201 +++++++++ .../kit/common/util/KubernetesHelperTest.java | 32 ++ .../kit/config/service/ApplyService.java | 37 ++ .../kubernetes/DockerBuildService.java | 7 +- .../service/kubernetes/JibBuildService.java | 7 +- .../kubernetes/KubernetesUndeployService.java | 16 + .../openshift/OpenShiftBuildServiceUtils.java | 3 + .../openshift/OpenshiftBuildService.java | 9 +- .../KubernetesUndeployServiceTest.java | 3 + .../doc/src/main/asciidoc/inc/_summary.adoc | 15 + .../api/util/KubernetesResourceUtil.java | 7 +- .../enricher/generic/ConfigMapEnricher.java | 3 + .../ContainerEnvJavaOptionsMergeEnricher.java | 2 + ...trollerViaPluginConfigurationEnricher.java | 2 + .../jkube/enricher/generic/DebugEnricher.java | 2 + .../generic/DefaultControllerEnricher.java | 2 + .../generic/DefaultMetadataEnricher.java | 2 + .../generic/DefaultNamespaceEnricher.java | 3 + .../generic/DefaultServiceEnricher.java | 2 + .../enricher/generic/DependencyEnricher.java | 2 + .../generic/DockerRegistrySecretEnricher.java | 2 + .../generic/FileDataSecretEnricher.java | 2 + .../jkube/enricher/generic/GitEnricher.java | 2 + .../jkube/enricher/generic/ImageEnricher.java | 2 + .../generic/ImagePullPolicyEnricher.java | 2 + .../enricher/generic/IngressEnricher.java | 2 + .../generic/MavenIssueManagementEnricher.java | 2 + .../enricher/generic/MavenScmEnricher.java | 2 + .../jkube/enricher/generic/NameEnricher.java | 2 + .../generic/PodAnnotationEnricher.java | 2 + .../enricher/generic/PortNameEnricher.java | 2 + .../generic/ProjectLabelEnricher.java | 2 + .../generic/ReplicaCountEnricher.java | 2 + .../generic/RevisionHistoryEnricher.java | 2 + .../enricher/generic/SecretEnricher.java | 3 + .../generic/ServiceAccountEnricher.java | 3 + .../generic/TriggersAnnotationEnricher.java | 2 + .../generic/VolumePermissionEnricher.java | 2 + .../generic/openshift/AutoTLSEnricher.java | 2 + .../openshift/DeploymentConfigEnricher.java | 2 + .../openshift/ImageChangeTriggerEnricher.java | 2 + .../generic/openshift/ProjectEnricher.java | 2 + .../generic/openshift/RouteEnricher.java | 2 + .../specific/DockerHealthCheckEnricher.java | 2 + .../specific/KarafHealthCheckEnricher.java | 3 + .../enricher/specific/PrometheusEnricher.java | 2 + .../specific/ServiceDiscoveryEnricher.java | 2 + .../specific/WebAppHealthCheckEnricher.java | 2 + .../jkube/generator/api/GeneratorManager.java | 2 + .../MicronautHealthCheckEnricher.java | 2 + .../OpenLibertyHealthCheckEnricher.java | 2 + .../enricher/QuarkusHealthCheckEnricher.java | 2 + .../SpringBootHealthCheckEnricher.java | 2 + .../ThorntailV2HealthCheckEnricher.java | 2 + .../enricher/VertxHealthCheckEnricher.java | 2 + .../WildflyJARHealthCheckEnricher.java | 2 + .../jkube/kit/resource/helm/HelmService.java | 8 +- .../service/DefaultResourceService.java | 2 + .../jkube/kit/resource/service/WriteUtil.java | 5 + .../doc/src/main/asciidoc/index.adoc | 1 + .../plugin/mojo/build/AbstractDockerMojo.java | 15 +- .../plugin/mojo/build/AbstractJKubeMojo.java | 17 +- .../maven/plugin/mojo/build/ApplyMojo.java | 6 +- .../maven/plugin/mojo/build/HelmMojo.java | 3 +- .../maven/plugin/mojo/build/HelmPushMojo.java | 3 +- .../maven/plugin/mojo/build/PushMojo.java | 3 +- .../maven/plugin/mojo/build/ResourceMojo.java | 3 +- .../plugin/mojo/develop/UndeployMojo.java | 3 +- .../maven/plugin/mojo/develop/WatchMojo.java | 7 +- .../plugin/mojo/build/ApplyMojoTest.java | 17 + .../maven/plugin/mojo/build/HelmMojoTest.java | 19 +- .../plugin/mojo/build/HelmPushMojoTest.java | 21 + .../plugin/mojo/build/ResourceMojoTest.java | 6 + .../plugin/mojo/build/SkipGoalsTest.java | 7 + .../plugin/mojo/develop/DebugMojoTest.java | 11 + .../plugin/mojo/develop/LogMojoTest.java | 13 +- quickstarts/maven/docker-file-simple/pom.xml | 5 + 144 files changed, 1746 insertions(+), 91 deletions(-) create mode 100644 jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/ImageSummary.java create mode 100644 jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/KubernetesResourceSummary.java create mode 100644 jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/Summary.java create mode 100644 jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/SummaryUtil.java create mode 100644 jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/SummaryUtilTest.java create mode 100644 jkube-kit/doc/src/main/asciidoc/inc/_summary.adoc diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cf9aa9af6..300f27609c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Usage: ./scripts/extract-changelog-for-version.sh 1.3.37 5 ``` ### 1.10-SNAPSHOT +* Fix #1033: Print summary after jkube actions ### 1.9.1 (2022-09-14) * Fix #1747: Apply service doesn't attempt to create OpenShift Projects in Kubernetes clusters diff --git a/gradle-plugin/doc/src/main/asciidoc/index.adoc b/gradle-plugin/doc/src/main/asciidoc/index.adoc index 8179de2989..837c215276 100644 --- a/gradle-plugin/doc/src/main/asciidoc/index.adoc +++ b/gradle-plugin/doc/src/main/asciidoc/index.adoc @@ -47,4 +47,5 @@ include::{kitdoc-path}/inc/plugins/_jkube_plugins.adoc[] include::inc/_kind-filename-type-mapping.adoc[] +include::{kitdoc-path}/inc/_summary.adoc[] diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/AutoTLSIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/AutoTLSIT.java index 8e2d9c65b6..2cfe262d6d 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/AutoTLSIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/AutoTLSIT.java @@ -39,6 +39,13 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithExpectedTLSAnnotat .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/autotls-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/autotls-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/autotls-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ConfigMapIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ConfigMapIT.java index 0f7901a576..658fc1a9c4 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ConfigMapIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ConfigMapIT.java @@ -43,7 +43,17 @@ public void k8sResource_whenRun_generatesK8sManifestsContainingConfigMap() throw .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/configmap-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/configmap-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-annotation-directory-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-annotation-file-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-gradle-sample-config-map-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -63,6 +73,17 @@ public void ocResource_whenRun_generatesOpenShiftManifestsContainingConfigMap() .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/configmap-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/configmap-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-annotation-directory-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-annotation-file-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-gradle-sample-config-map-configmap.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/configmap-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DebugModeIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DebugModeIT.java index 7fea185d40..4e0b65956e 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DebugModeIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DebugModeIT.java @@ -39,7 +39,12 @@ public void k8sResource_whenRun_generatesK8sManifests() throws IOException, Pars .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Enabling debug on") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/debug-mode-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -54,6 +59,11 @@ public void ocResource_whenRun_generatesK8sManifests() throws IOException, Parse .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Enabling debug on") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/debug-mode-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultControllerIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultControllerIT.java index 488e428cd9..1d0bc92718 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultControllerIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultControllerIT.java @@ -40,7 +40,12 @@ public void k8sResourceTask_whenRun_generatesK8sManifestWithDeployment() throws .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/controller-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -56,6 +61,11 @@ public void ocResourceTask_whenRun_generatesOpenShiftManifestWithDeploymentConfi .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/controller-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultMetadataIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultMetadataIT.java index f4658995cb..0dd2298aa5 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultMetadataIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DefaultMetadataIT.java @@ -39,7 +39,14 @@ public void k8sResource_whenRun_generatesK8sManifestsWithExpectedLabelsAndAnnota .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/metadata-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/metadata-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/test-serviceaccount-serviceaccount.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -56,7 +63,15 @@ public void k8sResource_whenRunWithReplicaSetConfiguredController_generatesK8sMa .contains("Adding a default ReplicaSet") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/metadata-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/metadata-replicaset.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/metadata-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/test-serviceaccount-serviceaccount.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -71,6 +86,14 @@ public void ocResource_whenRun_generatesK8sManifestsWithExpectedLabelsAndAnnotat .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/metadata-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/metadata-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/metadata-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/test-serviceaccount-serviceaccount.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DependencyResourcesIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DependencyResourcesIT.java index fe76fac6bd..420951f8e5 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DependencyResourcesIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DependencyResourcesIT.java @@ -42,7 +42,13 @@ public void k8sResource_whenRun_generatesK8sManifestsIncludingDependencies() thr assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/example-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/web-replicaset.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -59,6 +65,12 @@ public void k8sResource_whenRunWithReplicas_generatesK8sManifestsIncludingDepend assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/example-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/web-replicaset.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DockerfileSimpleIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DockerfileSimpleIT.java index 220d8bc824..fcaf4a01ba 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DockerfileSimpleIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/DockerfileSimpleIT.java @@ -40,7 +40,13 @@ public void k8sResource_whenRun_generatesK8sManifests() throws IOException, Pars .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/dockerfile-simple-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/dockerfile-simple-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -56,6 +62,13 @@ public void ocResource_whenRun_generatesOpenShiftManifests() throws IOException, .contains("Converting Deployment to DeploymentConfig") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/dockerfile-simple-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/dockerfile-simple-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/dockerfile-simple-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/FileSecretIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/FileSecretIT.java index d820eb8a43..37032b1cd1 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/FileSecretIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/FileSecretIT.java @@ -37,7 +37,12 @@ public void k8sResource_whenRun_generatesK8sSecret() throws IOException, ParseEx assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/secret-file-secret.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -50,6 +55,11 @@ public void ocResource_whenRun_generatesK8sSecret() throws IOException, ParseExc assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/secret-file-secret.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GitAnnotationsIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GitAnnotationsIT.java index 3d09430fe5..9c54e7e160 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GitAnnotationsIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GitAnnotationsIT.java @@ -38,7 +38,12 @@ public void k8sResource_whenRun_generatesK8sManifestsWithGitAnnotations() throws .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/git-annotations-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -52,6 +57,11 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithGitAnnotations() t .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/git-annotations-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GroovyDSLImageIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GroovyDSLImageIT.java index c9802144f4..3bfcc2cf84 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GroovyDSLImageIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/GroovyDSLImageIT.java @@ -39,6 +39,12 @@ public void k8sResource_whenRun_generatesK8sManifests() throws IOException, Pars .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") .contains("Using first mentioned service port") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/groovy-dsl-image-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/groovy-dsl-image-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImageChangeTriggerIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImageChangeTriggerIT.java index ec07a83d5b..4aab5dbbd8 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImageChangeTriggerIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImageChangeTriggerIT.java @@ -61,6 +61,11 @@ public void ocResource_whenRunWithProvidedArg_generatesDeploymentConfigWithNoIma .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/imagechangetrigger-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImagePullPolicyIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImagePullPolicyIT.java index 49f3936095..dd76ebdf1b 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImagePullPolicyIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ImagePullPolicyIT.java @@ -68,7 +68,12 @@ public void k8sResource_whenRun_generatesK8sManifestsWithProjectLabels() throws assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/imagepullpolicy-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -86,6 +91,11 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithProjectLabels() th assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/imagepullpolicy-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/IngressIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/IngressIT.java index 0238f9a8d3..d51c989ed1 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/IngressIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/IngressIT.java @@ -76,6 +76,13 @@ public void k8sResourceTask_whenRun_generatesK8sManifestWithIngress() throws IOE .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/ingress-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/ingress-ingress.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/ingress-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/JavaOptionsEnvMergeIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/JavaOptionsEnvMergeIT.java index 9563d83f3a..86f9d86f43 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/JavaOptionsEnvMergeIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/JavaOptionsEnvMergeIT.java @@ -38,7 +38,12 @@ public void k8sResource_whenRun_thenGeneratedManifestShouldHaveMergedEnvVariable .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/java-options-env-merge-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -52,6 +57,11 @@ public void ocResource_whenRun_thenGeneratedManifestShouldHaveMergedEnvVariables .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/java-options-env-merge-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NameIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NameIT.java index 63dd9a9ca0..9642c212d5 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NameIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NameIT.java @@ -59,7 +59,11 @@ public void k8sResource_whenRun_generatesK8sManifestsWithDefaultName() throws IO .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -75,7 +79,11 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithDefaultName() thro .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NamespaceIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NamespaceIT.java index 3f94944fbd..c167f0e2b4 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NamespaceIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/NamespaceIT.java @@ -67,7 +67,12 @@ public void k8sResourceTask_whenRunWithConfiguredWithNamespace_generatesK8sManif assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/namespace-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -84,6 +89,11 @@ public void ocResourceTask_whenRunWithConfiguredWithNamespace_generatesOpenShift assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/namespace-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/OpenLibertyIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/OpenLibertyIT.java index a46f1c1905..b45b522806 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/OpenLibertyIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/OpenLibertyIT.java @@ -43,7 +43,13 @@ public void k8sResource_whenRun_generatesK8sManifestsWithProbes() throws IOExcep .contains("jkube-healthcheck-openliberty: Adding liveness probe on port 9080") .contains("jkube-healthcheck-openliberty: Adding startup probe on port 9080") .contains("jkube-service-discovery: Using first mentioned service port '9080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/openliberty-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/openliberty-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -63,6 +69,13 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithProbes() throws IO .contains("jkube-healthcheck-openliberty: Adding liveness probe on port 9080") .contains("jkube-healthcheck-openliberty: Adding startup probe on port 9080") .contains("jkube-service-discovery: Using first mentioned service port '9080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/openliberty-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/openliberty-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/openliberty-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProbesGroovyDSLIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProbesGroovyDSLIT.java index c847a74fc7..57bed66f9f 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProbesGroovyDSLIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProbesGroovyDSLIT.java @@ -58,7 +58,13 @@ public void k8sResource_whenRun_generatesK8sManifestsWithProbes() throws IOExcep .contains("jkube-controller: Adding a default Deployment") .contains("jkube-service: Adding a default service") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/probes-groovy-dsl-config-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/probes-groovy-dsl-config-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -76,6 +82,13 @@ public void ocResource_whenRun_generatesOpenShiftManifests() throws IOException, .contains("jkube-service: Adding a default service") .contains("jkube-openshift-deploymentconfig: Converting Deployment to DeploymentConfig") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/probes-groovy-dsl-config-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/probes-groovy-dsl-config-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/probes-groovy-dsl-config-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProjectLabelIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProjectLabelIT.java index 9a1dea915d..926d930a77 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProjectLabelIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ProjectLabelIT.java @@ -67,7 +67,13 @@ public void k8sResource_whenRun_generatesK8sManifestsWithProjectLabels() throws .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/project-label-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/project-label-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -86,6 +92,13 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithProjectLabels() th .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/project-label-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/project-label-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/project-label-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RevisionHistoryIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RevisionHistoryIT.java index 5ed9985748..3cc41326c2 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RevisionHistoryIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RevisionHistoryIT.java @@ -64,7 +64,12 @@ public void k8sResource_whenRun_generatesK8sManifestsWithRevisionHistory() throw .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to ") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/revisionhistory-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -83,6 +88,11 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithRevisionHistory() .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to ") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/revisionhistory-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RouteIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RouteIT.java index 311f388bcc..b4b7e70377 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RouteIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/RouteIT.java @@ -62,7 +62,13 @@ public void ocResource_whenRunWithRouteFlag_generatesOpenShiftManifests() throws .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to ") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/route-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/route-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); assertThat(gradleRunner.resolveDefaultOpenShiftResourceDir().listFiles()) .hasSize(expectedGeneratedFiles); } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceAccountIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceAccountIT.java index 2c2b48cc64..5405ee8139 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceAccountIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceAccountIT.java @@ -68,7 +68,11 @@ public void k8sResource_whenRun_generatesServiceAccount() throws IOException, Pa assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -86,6 +90,10 @@ public void ocResource_whenRun_generatesServiceAccount() throws IOException, Par .contains("Using resource templates from") .contains("Converting Deployment to DeploymentConfig") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceIT.java index ec1a6b6afb..730f7b4a07 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/ServiceIT.java @@ -31,7 +31,7 @@ public class ServiceIT { public void k8sResourceTask_whenRun_generatesK8sManifestWithService() throws IOException, ParseException { // When final BuildResult result = gradleRunner.withITProject("service") - .withArguments("k8sResource", "--stacktrace") + .withArguments("clean", "build", "k8sResource", "--stacktrace") .build(); // Then ResourceVerify.verifyResourceDescriptors(gradleRunner.resolveDefaultKubernetesResourceFile(), @@ -40,14 +40,21 @@ public void k8sResourceTask_whenRun_generatesK8sManifestWithService() throws IOE .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/service-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/svc1-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/svc2-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test public void ocResourceTask_whenRun_generatesOpenShiftManifestWithServiceAndRoute() throws IOException, ParseException { // When final BuildResult result = gradleRunner.withITProject("service") - .withArguments("ocResource", "--stacktrace") + .withArguments("clean", "build", "ocResource", "--stacktrace") .build(); // Then ResourceVerify.verifyResourceDescriptors(gradleRunner.resolveDefaultOpenShiftResourceFile(), @@ -56,6 +63,14 @@ public void ocResourceTask_whenRun_generatesOpenShiftManifestWithServiceAndRoute .contains("Using resource templates from") .contains("Adding a default Deployment") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/service-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/svc1-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/svc1-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/svc2-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootIT.java index f1fb5ead79..c3976b59c4 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootIT.java @@ -44,7 +44,14 @@ public void k8sResource_whenRun_generatesK8sManifests() throws IOException, Pars .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/spring-boot-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/spring-boot-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -64,6 +71,14 @@ public void ocResource_whenRun_generatesOpenShiftManifests() throws IOException, .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootWithFragmentIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootWithFragmentIT.java index 6597724c85..e469d62a9b 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootWithFragmentIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/SpringBootWithFragmentIT.java @@ -42,7 +42,14 @@ public void k8sResource_whenRun_generatesK8sManifests() throws IOException, Pars .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/spring-boot-with-fragment-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/spring-boot-with-fragment-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -61,6 +68,14 @@ public void ocResource_whenRun_generatesOpenShiftManifests() throws IOException, .contains("jkube-healthcheck-spring-boot: Adding readiness probe on port 8080") .contains("jkube-healthcheck-spring-boot: Adding liveness probe on port 8080") .contains("jkube-service-discovery: Using first mentioned service port '8080' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [spring-boot]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-with-fragment-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-with-fragment-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/spring-boot-with-fragment-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/TriggersAnnotationIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/TriggersAnnotationIT.java index 940ac182f1..bee80c0ab8 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/TriggersAnnotationIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/TriggersAnnotationIT.java @@ -40,7 +40,12 @@ public void k8sResourceTask_whenRun_generatesK8sManifestWithTriggersAnnotation() .contains("Using resource templates from") .contains("Adding a default ReplicaSet") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/triggersannotation-replicaset.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -56,6 +61,11 @@ public void ocResourceTask_whenRun_generatesOpenShiftManifestWithTriggersAnnotat .contains("Using resource templates from") .contains("Adding a default ReplicaSet") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/triggersannotation-replicaset.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VertxIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VertxIT.java index c78b0bb5b4..71de8fee38 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VertxIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VertxIT.java @@ -78,7 +78,14 @@ public void k8sResource_whenRun_generatesK8sManifestsWithProbes() throws IOExcep .contains("jkube-healthcheck-vertx: Adding readiness probe on port 8888") .contains("jkube-healthcheck-vertx: Adding liveness probe on port 8888") .contains("jkube-service-discovery: Using first mentioned service port '8888' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [vertx]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/vertx-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/vertx-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -102,6 +109,13 @@ public void ocResource_whenRun_generatesOpenShiftManifestsWithProbes() throws IO .contains("jkube-healthcheck-vertx: Adding readiness probe on port 8888") .contains("jkube-healthcheck-vertx: Adding liveness probe on port 8888") .contains("jkube-service-discovery: Using first mentioned service port '8888' ") - .contains("jkube-revision-history: Adding revision history limit to 2"); + .contains("jkube-revision-history: Adding revision history limit to 2") + .contains("SUMMARY") + .contains("Generators applied: [vertx]") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/vertx-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/vertx-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VolumePermissionIT.java b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VolumePermissionIT.java index 50594b166f..2445ad5ea6 100644 --- a/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VolumePermissionIT.java +++ b/gradle-plugin/it/src/test/java/org/eclipse/jkube/gradle/plugin/tests/VolumePermissionIT.java @@ -64,7 +64,14 @@ public void k8sResourceTask_whenRun_generatesK8sManifestWithPersistentVolume() t assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-docker-registry-deployment.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-docker-registry-service.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes/jkube-docker-registry-storage-persistentvolumeclaim.yml") + .contains("build/classes/java/main/META-INF/jkube/kubernetes.yml") + .contains("SUCCESS"); } @Test @@ -82,6 +89,14 @@ public void ocResourceTask_whenRun_generatesOpenShiftManifestWithPersistentVolum assertThat(result).extracting(BuildResult::getOutput).asString() .contains("Using resource templates from") .contains("Adding revision history limit to 2") - .contains("validating"); + .contains("validating") + .contains("SUMMARY") + .contains("Generated resources:") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-docker-registry-deploymentconfig.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-docker-registry-route.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-docker-registry-service.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift/jkube-docker-registry-storage-persistentvolumeclaim.yml") + .contains("build/classes/java/main/META-INF/jkube/openshift.yml") + .contains("SUCCESS"); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/GradleUtil.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/GradleUtil.java index fc8edd75c5..0378a91727 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/GradleUtil.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/GradleUtil.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -53,6 +54,8 @@ import org.gradle.api.tasks.SourceSetContainer; import org.gradle.internal.deprecation.DeprecatableConfiguration; +import static org.eclipse.jkube.gradle.plugin.KubernetesPlugin.KUBERNETES_PLUGIN_TASK_PRIORITIES; + public class GradleUtil { private static final Path DEFAULT_CLASSES_DIR = Paths.get("classes", "java", "main"); @@ -104,6 +107,19 @@ private static Properties extractProperties(Project gradleProject) { }, (acc, e) -> acc); } + public static String getLastExecutingTask(Project gradleProject, Map taskPrioritiesMap) { + List tasks = gradleProject.getGradle().getStartParameter().getTaskNames().stream() + .filter(taskPrioritiesMap::containsKey) + .sorted(Comparator.comparing(taskPrioritiesMap::get)) + .collect(Collectors.toList()); + + if (tasks == null || tasks.isEmpty()) { + return null; + } + + return tasks.get(tasks.size() - 1); + } + private static List extractDependencies(Project gradleProject) { return extractDependencies(gradleProject, rr -> rr.getRoot().getDependencies()); } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java index fb1d060cc5..712b906e29 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java @@ -259,6 +259,8 @@ public abstract class KubernetesExtension { public abstract Property getWatchContainerNamePattern(); + public abstract Property getSummaryEnabled(); + public WatchMode watchMode; public JKubeBuildStrategy buildStrategy; @@ -704,6 +706,10 @@ public String getWatchShowLogsOrNull() { return getOrDefaultString("jkube.watch.showLogs", this::getWatchShowLogs, null); } + public boolean getSummaryEnabledOrDefault() { + return getOrDefaultBoolean("jkube.summaryEnabled", this::getSummaryEnabled, true); + } + protected boolean getOrDefaultBoolean(String property, Supplier> dslGetter, boolean defaultValue) { return getOrDefault(property, Boolean::parseBoolean, dslGetter, defaultValue); } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesPlugin.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesPlugin.java index f282dac472..2a716bacd9 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesPlugin.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesPlugin.java @@ -35,6 +35,20 @@ import org.gradle.api.Task; public class KubernetesPlugin extends AbstractJKubePlugin { + public static Map KUBERNETES_PLUGIN_TASK_PRIORITIES = new HashMap<>(); + + static { + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sBuild", 1); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sResource", 2); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sPush", 2); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sHelm", 3); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sHelmPush", 4); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sApply", 5); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sLog", 6); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sDebug", 6); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sWatch", 6); + KUBERNETES_PLUGIN_TASK_PRIORITIES.put("k8sUndeploy", 7); + } public KubernetesPlugin() { super("kubernetes", KubernetesExtension.class); diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java index b6336b91f8..21dda730ef 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java @@ -30,6 +30,7 @@ import org.eclipse.jkube.kit.common.JKubeConfiguration; import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.RegistryConfig; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.common.util.ResourceUtil; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.access.ClusterConfiguration; @@ -66,12 +67,18 @@ protected AbstractJKubeTask(Class extensionClass) @TaskAction public final void runTask() { + SummaryUtil.setSuccessful(true); init(); if (shouldSkip()) { kitLogger.info("`%s` task is skipped.", this.getName()); return; } run(); + String lastExecutingTask = GradleUtil.getLastExecutingTask(getProject(), getTaskPrioritiesMap()); + if (lastExecutingTask != null && lastExecutingTask.equals(getName())) { + SummaryUtil.printSummary(kitLogger, kubernetesExtension.javaProject.getBaseDirectory(), kubernetesExtension.getSummaryEnabledOrDefault()); + SummaryUtil.clear(); + } } private void init() { diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java index d6ce30dd3d..bee7786616 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java @@ -22,6 +22,7 @@ import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.OpenshiftHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.service.ApplyService; import org.eclipse.jkube.kit.enricher.api.util.KubernetesResourceUtil; @@ -62,13 +63,15 @@ public void run() { kitLogger.info("[[B]]HINT:[[B]] Use the command `%s get pods -w` to watch your pods start up", clusterAccess.isOpenShift() ? "oc" : "kubectl"); } catch (KubernetesClientException e) { - KubernetesResourceUtil.handleKubernetesClientException(e, kitLogger); + KubernetesResourceUtil.handleKubernetesClientException(e, kitLogger, kubernetesExtension.getSummaryEnabledOrDefault()); } catch (IOException ioException) { kitLogger.error("Error in loading Kubernetes Manifests ", ioException); - throw new IllegalStateException(ioException); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), ioException.getMessage(), () -> new IllegalStateException(ioException)); } catch (InterruptedException interruptedException) { Thread.currentThread().interrupt(); - throw new IllegalStateException(interruptedException.getMessage(), interruptedException); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + interruptedException.getMessage(), + () -> new IllegalStateException(interruptedException.getMessage(), interruptedException)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTask.java index b7e14e0f20..39a4a2f3ee 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTask.java @@ -17,6 +17,7 @@ import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.eclipse.jkube.kit.build.service.docker.DockerServiceHub; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.resource.RuntimeMode; import org.eclipse.jkube.kit.config.service.BuildServiceConfig; @@ -65,7 +66,8 @@ public void run() { jKubeServiceHub.getBuildService().build(resolvedImages.toArray(new ImageConfiguration[0])); } catch (JKubeServiceException | IOException e) { kitLogger.error(e.getMessage()); - throw new GradleException(e.getMessage(), e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + e.getMessage(), () -> new GradleException(e.getMessage(), e)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesDebugTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesDebugTask.java index d1a8aeb66b..0fe3ed1c70 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesDebugTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesDebugTask.java @@ -24,6 +24,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.KubernetesClient; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.gradle.api.GradleException; public class KubernetesDebugTask extends AbstractJKubeTask { @@ -45,7 +46,9 @@ public void run() { "" + kubernetesExtension.getLocalDebugPortOrDefault(), kubernetesExtension.getDebugSuspendOrDefault(), createLogger("[[Y]][W][[Y]] [[s]]")); } catch (IOException ex) { - throw new GradleException("Failure in debug task", ex); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + ex.getMessage(), + () -> new GradleException("Failure in debug task", ex)); } } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java index e999a98b3e..606e539ab0 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTask.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.gradle.plugin.task; import org.eclipse.jkube.gradle.plugin.KubernetesExtension; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.resource.helm.HelmConfig; import javax.inject.Inject; @@ -41,7 +42,9 @@ public void run() { jKubeServiceHub.getHelmService().uploadHelmChart(helm); } catch (Exception exp) { kitLogger.error("Error performing helm push", exp); - throw new IllegalStateException(exp.getMessage(), exp); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + exp.getMessage(), + () -> new IllegalStateException(exp.getMessage(), exp)); } } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTask.java index 69cd72c53f..6a3767b390 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTask.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.gradle.plugin.task; import org.eclipse.jkube.gradle.plugin.KubernetesExtension; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.resource.helm.HelmConfig; import javax.inject.Inject; @@ -41,7 +42,9 @@ public void run() { kubernetesExtension.helm).build(); jKubeServiceHub.getHelmService().generateHelmCharts(helm); } catch (IOException exception) { - throw new IllegalStateException(exception.getMessage(), exception); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + exception.getMessage(), + () -> new IllegalStateException(exception.getMessage(), exception)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesJKubeTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesJKubeTask.java index bd951dec8c..9963c1a960 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesJKubeTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesJKubeTask.java @@ -16,6 +16,10 @@ import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.gradle.api.tasks.Internal; +import java.util.Map; + +import static org.eclipse.jkube.gradle.plugin.KubernetesPlugin.KUBERNETES_PLUGIN_TASK_PRIORITIES; + public interface KubernetesJKubeTask extends JKubeTask { String DEFAULT_LOG_PREFIX = "k8s: "; @@ -26,4 +30,9 @@ public interface KubernetesJKubeTask extends JKubeTask { default String getLogPrefix() { return DEFAULT_LOG_PREFIX; } + + @Internal + default Map getTaskPrioritiesMap() { + return KUBERNETES_PLUGIN_TASK_PRIORITIES; + } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTask.java index 9ed3f31c20..e8e33575f6 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTask.java @@ -20,6 +20,7 @@ import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.eclipse.jkube.kit.common.util.KubernetesHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.service.PodLogService; import io.fabric8.kubernetes.api.model.HasMetadata; @@ -50,7 +51,9 @@ public void run() { null, true); } catch (IOException exception) { - throw new GradleException("Failure in getting logs", exception); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + exception.getMessage(), + () -> new GradleException("Failure in getting logs", exception)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesPushTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesPushTask.java index eedfd17016..4042119b86 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesPushTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesPushTask.java @@ -16,6 +16,7 @@ import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.eclipse.jkube.kit.build.service.docker.DockerServiceHub; import org.eclipse.jkube.kit.common.RegistryConfig; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.service.BuildServiceConfig; import org.eclipse.jkube.kit.config.service.JKubeServiceException; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; @@ -44,7 +45,9 @@ public void run() { jKubeServiceHub.getBuildService() .push(resolvedImages, kubernetesExtension.getPushRetriesOrDefault(), initRegistryConfig(), kubernetesExtension.getSkipTagOrDefault()); } catch (JKubeServiceException e) { - throw new IllegalStateException("Error in pushing image: " + e.getMessage(), e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + e.getMessage(), + () -> new IllegalStateException("Error in pushing image: " + e.getMessage(), e)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesResourceTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesResourceTask.java index 5510e6e117..ca6e6c5050 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesResourceTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesResourceTask.java @@ -19,6 +19,7 @@ import io.fabric8.kubernetes.api.model.KubernetesList; import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.eclipse.jkube.kit.common.util.LazyBuilder; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; import org.eclipse.jkube.kit.config.resource.ResourceServiceConfig; @@ -92,7 +93,9 @@ public void run() { validateIfRequired(resourceClassifierDir, resourceClassifier); } } catch (IOException e) { - throw new IllegalStateException("Failed to generate kubernetes descriptor", e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + e.getMessage(), + () -> new IllegalStateException("Failed to generate kubernetes descriptor", e)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTask.java index d733da2b89..4cea71db62 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTask.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.gradle.plugin.task; import org.eclipse.jkube.gradle.plugin.KubernetesExtension; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import javax.inject.Inject; @@ -44,7 +45,9 @@ public void run() { jKubeServiceHub.getUndeployService() .undeploy(environmentResourceDirs, resources, findManifestsToUndeploy().toArray(new File[0])); } catch (IOException e) { - throw new IllegalStateException(e.getMessage(), e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + e.getMessage(), + () -> new IllegalStateException(e.getMessage(), e)); } } diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java index 15346b4163..0a5d2df39b 100644 --- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java +++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java @@ -23,6 +23,7 @@ import org.eclipse.jkube.kit.build.service.docker.watch.WatchContext; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ProcessorConfig; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; import org.eclipse.jkube.kit.enricher.api.util.KubernetesResourceUtil; @@ -68,9 +69,11 @@ public void run() { resources, context); } catch (KubernetesClientException kubernetesClientException) { - KubernetesResourceUtil.handleKubernetesClientException(kubernetesClientException, kitLogger); + KubernetesResourceUtil.handleKubernetesClientException(kubernetesClientException, kitLogger, kubernetesExtension.getSummaryEnabledOrDefault()); } catch (Exception ioException) { - throw new IllegalStateException("An error has occurred while while trying to watch the resources", ioException); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), + ioException.getMessage(), + () -> new IllegalStateException("An error has occurred while while trying to watch the resources", ioException)); } } } diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/TestKubernetesExtension.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/TestKubernetesExtension.java index c071cc9f1f..07add7e727 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/TestKubernetesExtension.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/TestKubernetesExtension.java @@ -391,4 +391,9 @@ public Property getWatchShowLogs() { public Property getWatchContainerNamePattern() { return new DefaultProperty<>(String.class); } + + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class); + } } diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTaskTest.java index fcfa0958c8..cfca559211 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTaskTest.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesBuildTaskTest.java @@ -113,6 +113,13 @@ public void runTask_withImageConfigurationAndNoApplicableService_shouldThrowExce public void runTask_withImageConfigurationAndBuildError_shouldThrowException() { // Given isBuildError = true; + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); final KubernetesBuildTask buildTask = new KubernetesBuildTask(KubernetesExtension.class); // When final GradleException result = assertThrows(GradleException.class, buildTask::runTask); diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTaskTest.java index 662e712c58..9f5ed31436 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTaskTest.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmPushTaskTest.java @@ -17,6 +17,8 @@ import org.eclipse.jkube.gradle.plugin.TestKubernetesExtension; import org.eclipse.jkube.kit.resource.helm.BadUploadException; import org.eclipse.jkube.kit.resource.helm.HelmService; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -52,6 +54,13 @@ public void setUp() throws IOException { @Test public void runTask_withNoTemplateDir_shouldThrowException() { // Given + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); KubernetesHelmPushTask kubernetesHelmPushTask = new KubernetesHelmPushTask(KubernetesExtension.class); // When diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTaskTest.java index bc3660dc4a..fbc1edb54e 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTaskTest.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesHelmTaskTest.java @@ -20,6 +20,8 @@ import org.eclipse.jkube.gradle.plugin.TestKubernetesExtension; import org.eclipse.jkube.kit.resource.helm.HelmService; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -52,6 +54,13 @@ public void setUp() throws IOException { @Test public void runTask_withNoTemplateDir_shouldThrowException() { // Given + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); KubernetesHelmTask kubernetesHelmTask = new KubernetesHelmTask(KubernetesExtension.class); // When diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTaskTest.java index d1da03a012..eade0b7bbd 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTaskTest.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesLogTaskTest.java @@ -20,6 +20,8 @@ import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.gradle.api.GradleException; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -61,6 +63,13 @@ public void runTask_withNoK8sManifests_shouldLogCantWatchPods() { @Test public void runTask_withNoManifestAndFailure_shouldThrowException() { // Given + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); extension.isFailOnNoKubernetesJson = true; final KubernetesLogTask kubernetesLogTask = new KubernetesLogTask(KubernetesExtension.class); // When @@ -75,6 +84,13 @@ public void runTask_withIOException_shouldThrowException() { try (MockedStatic mockStatic = Mockito.mockStatic(KubernetesHelper.class)) { // Given mockStatic.when(() -> KubernetesHelper.loadResources(any())).thenThrow(new IOException("IO error with logs")); + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); KubernetesLogTask kubernetesLogTask = new KubernetesLogTask(KubernetesExtension.class); // When final Exception result = assertThrows(GradleException.class, kubernetesLogTask::runTask); diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java index f3a27a33d2..b2a175875f 100644 --- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java +++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java @@ -23,6 +23,8 @@ import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.service.kubernetes.DockerBuildService; import org.eclipse.jkube.watcher.api.WatcherManager; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -88,7 +90,14 @@ public void tearDown() { @Test public void runTask_withNoManifest_shouldThrowException() { // Given + extension = new TestKubernetesExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; extension.isFailOnNoKubernetesJson = true; + when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension); final KubernetesWatchTask watchTask = new KubernetesWatchTask(KubernetesExtension.class); // When final IllegalStateException result = assertThrows(IllegalStateException.class, watchTask::runTask); diff --git a/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/OpenShiftPlugin.java b/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/OpenShiftPlugin.java index 8bc93d05b2..08813f7474 100644 --- a/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/OpenShiftPlugin.java +++ b/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/OpenShiftPlugin.java @@ -38,6 +38,20 @@ import org.gradle.api.Task; public class OpenShiftPlugin extends AbstractJKubePlugin { + public static final Map OPENSHIFT_PLUGIN_TASK_PRIORITIES = new HashMap<>(); + + static { + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocBuild", 1); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocResource", 2); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocPush", 2); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocHelm", 3); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocHelmPush", 4); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocApply", 5); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocLog", 6); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocDebug", 6); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocWatch", 6); + OPENSHIFT_PLUGIN_TASK_PRIORITIES.put("ocUndeploy", 7); + } public OpenShiftPlugin() { super("openshift", OpenShiftExtension.class); diff --git a/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftJKubeTask.java b/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftJKubeTask.java index 8fb55e44ce..47eedf2059 100644 --- a/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftJKubeTask.java +++ b/gradle-plugin/openshift/src/main/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftJKubeTask.java @@ -16,6 +16,10 @@ import org.eclipse.jkube.gradle.plugin.OpenShiftExtension; import org.gradle.api.tasks.Internal; +import java.util.Map; + +import static org.eclipse.jkube.gradle.plugin.OpenShiftPlugin.OPENSHIFT_PLUGIN_TASK_PRIORITIES; + public interface OpenShiftJKubeTask extends KubernetesJKubeTask { String DEFAULT_LOG_PREFIX = "oc: "; @@ -30,4 +34,10 @@ default OpenShiftExtension getOpenShiftExtension() { default String getLogPrefix() { return DEFAULT_LOG_PREFIX; } + + @Internal + @Override + default Map getTaskPrioritiesMap() { + return OPENSHIFT_PLUGIN_TASK_PRIORITIES; + } } diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/TestOpenShiftExtension.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/TestOpenShiftExtension.java index d7bc38f3f6..9d34ded557 100644 --- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/TestOpenShiftExtension.java +++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/TestOpenShiftExtension.java @@ -418,4 +418,9 @@ public Property getWatchShowLogs() { public Property getWatchContainerNamePattern() { return new DefaultProperty<>(String.class); } + + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class); + } } diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmPushTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmPushTaskTest.java index 089f8a0425..1d22d1a9d5 100644 --- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmPushTaskTest.java +++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmPushTaskTest.java @@ -13,10 +13,13 @@ */ package org.eclipse.jkube.gradle.plugin.task; +import org.eclipse.jkube.gradle.plugin.KubernetesExtension; import org.eclipse.jkube.gradle.plugin.OpenShiftExtension; import org.eclipse.jkube.gradle.plugin.TestOpenShiftExtension; import org.eclipse.jkube.kit.resource.helm.BadUploadException; import org.eclipse.jkube.kit.resource.helm.HelmService; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -51,6 +54,13 @@ public void setUp() throws IOException { @Test public void runTask_withNoTemplateDir_shouldThrowException() { // Given + extension = new TestOpenShiftExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension); OpenShiftHelmPushTask openShiftHelmPushTask = new OpenShiftHelmPushTask(OpenShiftExtension.class); // When diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmTaskTest.java index 706c45030e..188ac08f6e 100644 --- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmTaskTest.java +++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftHelmTaskTest.java @@ -16,6 +16,8 @@ import org.eclipse.jkube.gradle.plugin.OpenShiftExtension; import org.eclipse.jkube.gradle.plugin.TestOpenShiftExtension; import org.eclipse.jkube.kit.resource.helm.HelmService; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -50,6 +52,13 @@ public void setUp() { @Test public void runTask_withNoTemplateDir_shouldThrowException() { // Given + extension = new TestOpenShiftExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension); OpenShiftHelmTask kubernetesHelmTask = new OpenShiftHelmTask(OpenShiftExtension.class); // When diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java index a7d4a14252..c0e4e98174 100644 --- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java +++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java @@ -19,6 +19,8 @@ import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.watcher.api.WatcherManager; +import org.gradle.api.internal.provider.DefaultProperty; +import org.gradle.api.provider.Property; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -75,6 +77,13 @@ public void tearDown() { @Test public void runTask_withNoManifest_shouldThrowException() { // Given + extension = new TestOpenShiftExtension() { + @Override + public Property getSummaryEnabled() { + return new DefaultProperty<>(Boolean.class).value(false); + } + }; + when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension); extension.isFailOnNoKubernetesJson = true; final OpenShiftWatchTask watchTask = new OpenShiftWatchTask(OpenShiftExtension.class); // When diff --git a/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java b/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java index 386cd3f492..47b24ed8b6 100644 --- a/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java +++ b/jkube-kit/build/api/src/main/java/org/eclipse/jkube/kit/build/api/assembly/AssemblyManager.java @@ -43,6 +43,7 @@ import org.eclipse.jkube.kit.common.archive.JKubeTarArchiver; import org.eclipse.jkube.kit.common.util.FileUtil; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; import org.eclipse.jkube.kit.config.image.build.DockerFileBuilder; @@ -109,6 +110,7 @@ public File createDockerTarArchive( try { if (buildConfig.isDockerFileMode()) { + SummaryUtil.setDockerFileImageSummary(imageName, buildConfig.getDockerFileFile().getAbsolutePath()); createDockerTarArchiveForDockerFile(buildConfig, assemblyConfig, configuration, buildDirs, log, archiveCustomizers); } else { createAssemblyArchive(assemblyConfig, configuration, buildDirs, buildConfig.getCompression(), layers); @@ -472,5 +474,4 @@ private static List createDockerIncludesList(File directory) throws IOEx } return includes; } - } diff --git a/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/BuildService.java b/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/BuildService.java index 9b5e12eec3..e6c0f1e4cd 100644 --- a/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/BuildService.java +++ b/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/BuildService.java @@ -35,6 +35,7 @@ import org.eclipse.jkube.kit.build.service.docker.access.DockerAccess; import org.eclipse.jkube.kit.build.service.docker.access.DockerAccessException; import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; @@ -146,6 +147,7 @@ protected void buildImage(ImageConfiguration imageConfig, JKubeConfiguration par throw new IllegalStateException("Failure in building image, unable to find image built with name " + imageName); } log.info("%s: Built image %s", imageConfig.getDescription(), newImageId); + SummaryUtil.setImageShaImageSummary(imageName, newImageId); if (oldImageId != null && !oldImageId.equals(newImageId)) { try { @@ -264,6 +266,7 @@ private void autoPullBaseImage(ImageConfiguration imageConfig, ImagePullManager } for (String fromImage : fromImages) { if (fromImage != null && !AssemblyManager.SCRATCH_IMAGE.equals(fromImage)) { + SummaryUtil.setBaseImageNameImageSummary(imageConfig.getName(), fromImage); registryService.pullImageWithPolicy(fromImage, imagePullManager, configuration.getRegistryConfig(), buildConfig); } } diff --git a/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/RegistryService.java b/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/RegistryService.java index be24844edf..0e20880baf 100644 --- a/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/RegistryService.java +++ b/jkube-kit/build/service/docker/src/main/java/org/eclipse/jkube/kit/build/service/docker/RegistryService.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.kit.build.service.docker; import java.io.IOException; +import java.util.Optional; import org.eclipse.jkube.kit.build.api.auth.AuthConfig; import org.eclipse.jkube.kit.build.service.docker.access.CreateImageOptions; @@ -21,6 +22,7 @@ import org.eclipse.jkube.kit.build.service.docker.auth.AuthConfigFactory; import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.util.EnvUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.common.RegistryConfig; @@ -56,12 +58,14 @@ public void pushImage(ImageConfiguration imageConfig, BuildConfiguration buildConfig = imageConfig.getBuildConfiguration(); String name = imageConfig.getName(); if (buildConfig != null) { + ImageName imageName = new ImageName(imageConfig.getName()); String configuredRegistry = EnvUtil.firstRegistryOf( - new ImageName(imageConfig.getName()).getRegistry(), + imageName.getRegistry(), imageConfig.getRegistry(), registryConfig.getRegistry()); + SummaryUtil.setPushRegistry(Optional.ofNullable(configuredRegistry).orElse("docker.io")); AuthConfig authConfig = createAuthConfig(true, new ImageName(name).getUser(), configuredRegistry, registryConfig); long start = System.currentTimeMillis(); diff --git a/jkube-kit/build/service/jib/src/main/java/org/eclipse/jkube/kit/service/jib/JibServiceUtil.java b/jkube-kit/build/service/jib/src/main/java/org/eclipse/jkube/kit/service/jib/JibServiceUtil.java index 1e666d77ee..ce27c56c38 100644 --- a/jkube-kit/build/service/jib/src/main/java/org/eclipse/jkube/kit/service/jib/JibServiceUtil.java +++ b/jkube-kit/build/service/jib/src/main/java/org/eclipse/jkube/kit/service/jib/JibServiceUtil.java @@ -35,6 +35,7 @@ import org.eclipse.jkube.kit.common.Assembly; import org.eclipse.jkube.kit.common.AssemblyFileEntry; import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.image.build.Arguments; @@ -129,6 +130,8 @@ public static String getFullImageName(ImageConfiguration imageConfiguration, Str } else { imageName = new ImageName(imageConfiguration.getName()); } + SummaryUtil.setPushRegistry(Optional.ofNullable(imageName.getRegistry()) + .orElse("docker.io")); return imageName.getFullName(); } diff --git a/jkube-kit/common-maven/src/main/java/org/eclipse/jkube/kit/common/util/MavenUtil.java b/jkube-kit/common-maven/src/main/java/org/eclipse/jkube/kit/common/util/MavenUtil.java index 6e33d8af9b..c9477d6949 100644 --- a/jkube-kit/common-maven/src/main/java/org/eclipse/jkube/kit/common/util/MavenUtil.java +++ b/jkube-kit/common-maven/src/main/java/org/eclipse/jkube/kit/common/util/MavenUtil.java @@ -414,6 +414,13 @@ public static File getRootProjectFolder(MavenProject project) { return answer; } + public static String getLastExecutingGoal(MavenSession session, String logPrefix) { + List goals = session.getGoals().stream() + .filter(g -> g.startsWith(logPrefix)) + .collect(Collectors.toList()); + return goals.isEmpty() ? null : goals.get(goals.size() - 1).substring(logPrefix.length()); + } + private static File getArtifactFileFromArtifactMap(MavenProject mavenProject, org.apache.maven.model.Dependency dependency) { Artifact artifact = mavenProject.getArtifactMap().get(dependency.getGroupId() + ":" + dependency.getArtifactId()); if (artifact != null) { diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/ImageSummary.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/ImageSummary.java new file mode 100644 index 0000000000..0723d14f1f --- /dev/null +++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/ImageSummary.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.kit.common.summary; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@Builder +@NoArgsConstructor +public class ImageSummary { + private String baseImageName; + private String dockerfilePath; + private String imageStreamUsed; + private String imageSha; + + public ImageSummary(String baseImageName, String dockerfilePath, String imageStreamUsed, String imageSha) { + this.baseImageName = baseImageName; + this.dockerfilePath = dockerfilePath; + this.imageStreamUsed = imageStreamUsed; + this.imageSha = imageSha; + } +} diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/KubernetesResourceSummary.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/KubernetesResourceSummary.java new file mode 100644 index 0000000000..87854827de --- /dev/null +++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/KubernetesResourceSummary.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.kit.common.summary; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@Builder +@NoArgsConstructor +public class KubernetesResourceSummary { + private String resourceName; + private String group; + private String version; + private String kind; + private String namespace; + + public KubernetesResourceSummary(String resourceName, String group, String version, String kind, String namespace) { + this.resourceName = resourceName; + this.group = group; + this.version = version; + this.kind = kind; + this.namespace = namespace; + } +} diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/Summary.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/Summary.java new file mode 100644 index 0000000000..aa9c0582d5 --- /dev/null +++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/summary/Summary.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.kit.common.summary; + +import lombok.Getter; +import lombok.Setter; + +import java.io.File; +import java.util.List; +import java.util.Map; + +@Getter +@Setter +public class Summary { + private Map imageSummariesMap; + private String buildStrategy; + private List generatorsApplied; + private String openShiftBuildConfigName; + private boolean successful; + private String failureCause; + private File aggregateResourceFile; + private String appliedClusterUrl; + private String undeployedClusterUrl; + private String pushRegistry; + private String helmChartName; + private File helmChartCompressed; + private File helmChart; + private String helmRepository; + private List generatedResourceFiles; + private List appliedKubernetesResources; + private List deletedKubernetesResources; + private List enrichersApplied; +} diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/KubernetesHelper.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/KubernetesHelper.java index e1e6c5ca95..5bae57667f 100644 --- a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/KubernetesHelper.java +++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/KubernetesHelper.java @@ -738,6 +738,20 @@ public static String getFullyQualifiedApiGroupWithKind(HasMetadata item) { "#" + item.getKind(); } + public static String getFullyQualifiedName(HasMetadata h, String namespace) { + StringBuilder sb = new StringBuilder(); + sb.append(h.getApiVersion()) + .append(" ") + .append(h.getKind()) + .append(" "); + + if (namespace != null) { + sb.append(namespace).append("/"); + } + sb.append(h.getMetadata().getName()); + return sb.toString(); + } + public static String getNewestApplicationPodName(KubernetesClient client, String namespace, Collection resources) { LabelSelector selector = extractPodLabelSelector(resources); final PodList pods; diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/SummaryUtil.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/SummaryUtil.java new file mode 100644 index 0000000000..7394624e81 --- /dev/null +++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/SummaryUtil.java @@ -0,0 +1,426 @@ +/** + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.kit.common.util; + +import io.fabric8.kubernetes.client.utils.Serialization; +import org.apache.commons.lang3.StringUtils; +import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.summary.ImageSummary; +import org.eclipse.jkube.kit.common.summary.KubernetesResourceSummary; +import org.eclipse.jkube.kit.common.summary.Summary; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; +import java.util.function.UnaryOperator; +import java.util.stream.Collectors; + +public class SummaryUtil { + private static final String SUMMARY_FILE_NAME = "summary.json"; + private static final String DASHED_LINE = "-------------------------------"; + private static File summaryFile = null; + + private SummaryUtil() { } + + public static void addGeneratedResourceFile(File resourceFilePath) { + addToSummary(s -> { + s.setGeneratedResourceFiles(createOrAddToExistingList(s.getGeneratedResourceFiles(), resourceFilePath)); + return s; + }); + } + + public static void addAppliedKubernetesResource(KubernetesResourceSummary kubernetesResource) { + addToSummary(s -> { + s.setAppliedKubernetesResources(createOrAddToExistingList(s.getAppliedKubernetesResources(), kubernetesResource)); + return s; + }); + } + + public static void addDeletedKubernetesResource(KubernetesResourceSummary kubernetesResource) { + addToSummary(s -> { + s.setDeletedKubernetesResources(createOrAddToExistingList(s.getDeletedKubernetesResources(), kubernetesResource)); + return s; + }); + } + + public static void addToGenerators(String generator) { + addToSummary(s -> { + s.setGeneratorsApplied(createOrAddToExistingList(s.getGeneratorsApplied(), generator)); + return s; + }); + } + + public static void addToEnrichers(String enricher) { + addToSummary(s -> { + s.setEnrichersApplied(createOrAddToExistingList(s.getEnrichersApplied(), enricher)); + return s; + }); + } + + public static void setSuccessful(boolean isSuccessful) { + addToSummary(s -> { + s.setSuccessful(isSuccessful); + return s; + }); + } + + public static void setFailureCause(String failureCause) { + addToSummary(s -> { + s.setFailureCause(failureCause); + return s; + }); + } + + public static void setDockerFileImageSummary(String imageName, String dockerFileLocation) { + addToSummary(s -> { + s.setImageSummariesMap(createOrAddToExistingMap(s.getImageSummariesMap(), imageName, () -> ImageSummary.builder().build(), is -> { + is.setDockerfilePath(dockerFileLocation); + return is; + })); + return s; + }); + } + + public static void setImageShaImageSummary(String imageName, String imageSha) { + addToSummary(s -> { + s.setImageSummariesMap(createOrAddToExistingMap(s.getImageSummariesMap(), imageName, () -> ImageSummary.builder().build(), is -> { + is.setImageSha(imageSha); + return is; + })); + return s; + }); + } + + public static void setImageStreamUsedImageSummary(String imageName, String imageStreamUsed) { + addToSummary(s -> { + s.setImageSummariesMap(createOrAddToExistingMap(s.getImageSummariesMap(), imageName, () -> ImageSummary.builder().build(), is -> { + is.setImageStreamUsed(imageStreamUsed); + return is; + })); + return s; + }); + } + + public static void setBaseImageNameImageSummary(String imageName, String baseImage) { + addToSummary(s -> { + s.setImageSummariesMap(createOrAddToExistingMap(s.getImageSummariesMap(), imageName, () -> ImageSummary.builder().build(), is -> { + is.setBaseImageName(baseImage); + return is; + })); + return s; + }); + } + + public static void setPushRegistry(String registry) { + addToSummary(s -> { + s.setPushRegistry(registry); + return s; + }); + } + + public static void setBuildStrategy(String buildStrategy) { + addToSummary(s -> { + s.setBuildStrategy(buildStrategy); + return s; + }); + } + + public static void setAppliedClusterUrl(String targetClusterUrl) { + addToSummary(s -> { + s.setAppliedClusterUrl(targetClusterUrl); + return s; + }); + } + + public static void setUndeployedClusterUrl(String targetClusterUrl) { + addToSummary(s -> { + s.setUndeployedClusterUrl(targetClusterUrl); + return s; + }); + } + + public static void setOpenShiftBuildConfigName(String buildConfigName) { + addToSummary(s -> { + s.setOpenShiftBuildConfigName(buildConfigName); + return s; + }); + } + + public static void setHelmChartName(String chart) { + addToSummary(s -> { + s.setHelmChartName(chart); + return s; + }); + } + + public static void setHelmChartLocation(File chart) { + addToSummary(s -> { + s.setHelmChart(chart); + return s; + }); + } + + public static void setHelmRepository(String helmRepository) { + addToSummary(s -> { + s.setHelmRepository(helmRepository); + return s; + }); + } + + public static void setHelmChartCompressedLocation(File chartCompressed) { + addToSummary(s -> { + s.setHelmChartCompressed(chartCompressed); + return s; + }); + } + + public static void setAggregateResourceFile(File aggregateResourceFile) { + addToSummary(s -> { + s.setAggregateResourceFile(aggregateResourceFile); + return s; + }); + } + + public static void clear() { + if (summaryFile != null && summaryFile.exists()) { + try { + Files.delete(summaryFile.toPath()); + } catch (IOException e) { + throw new IllegalStateException("Unable to delete summary file", e); + } + } + } + + public static void setFailureIfSummaryEnabledOrThrow(boolean summaryEnabled, String failureMessage, Supplier exceptionSupplier) throws T { + if (summaryEnabled) { + setSuccessful(false); + setFailureCause(failureMessage); + } else { + throw exceptionSupplier.get(); + } + } + + public static void printSummary(KitLogger logger, File baseDirectory, boolean summaryEnabled) { + Summary summaryInstance = loadSummaryFromFile(); + if (summaryInstance != null && summaryEnabled) { + printBanner(logger); + printCommonSummary(summaryInstance, logger); + printBuildSummary(summaryInstance, logger); + printPushSummary(summaryInstance, logger); + printResourceSummary(summaryInstance, baseDirectory, logger); + printApplySummary(summaryInstance, logger); + printUndeploySummary(summaryInstance, logger); + printHelmSummary(summaryInstance, baseDirectory, logger); + printHelmPushSummary(summaryInstance, logger); + logger.info(DASHED_LINE); + if (summaryInstance.isSuccessful()) { + logger.info("SUCCESS"); + } else { + logger.error("FAILURE [%s]", summaryInstance.getFailureCause()); + } + logger.info(DASHED_LINE); + } + } + + private static void printCommonSummary(Summary summaryInstance, KitLogger logger) { + if (summaryInstance.getImageSummariesMap() != null && !summaryInstance.getImageSummariesMap().isEmpty()) { + logger.info("Container images:"); + for (Map.Entry imageSummaryEntry : summaryInstance.getImageSummariesMap().entrySet()) { + printImageSummary(logger, imageSummaryEntry.getKey(), imageSummaryEntry.getValue()); + } + logger.info(""); + } + } + + private static void printImageSummary(KitLogger logger, String imageName, ImageSummary imageSummary) { + logger.info(" - %s", imageName); + if (imageSummary.getBaseImageName() != null) { + logger.info(" * Base image: %s", imageSummary.getBaseImageName()); + } + if (imageSummary.getDockerfilePath() != null) { + logger.info(" * Dockerfile: %s",imageSummary.getDockerfilePath()); + } + if (imageSummary.getImageStreamUsed() != null) { + logger.info(" * ImageStream: %s", imageSummary.getImageStreamUsed()); + } + if (imageSummary.getImageSha() != null) { + logger.info(" * SHA: %s", imageSummary.getImageSha()); + } + } + + private static void printBanner(KitLogger logger) { + logger.info(" __ / / //_/ / / / _ )/ __/"); + logger.info("/ // / ,< / /_/ / _ / _/ "); + logger.info("\\___/_/|_|\\____/____/___/ \n"); + logger.info(DASHED_LINE); + logger.info(" SUMMARY"); + logger.info(DASHED_LINE); + } + + private static void printBuildSummary(Summary summary, KitLogger logger) { + if (summary.getBuildStrategy() != null) { + logger.info("Build Strategy : %s", summary.getBuildStrategy()); + } + if (summary.getGeneratorsApplied() != null && !summary.getGeneratorsApplied().isEmpty()) { + logger.info("Generators applied: [%s]", String.join(",", summary.getGeneratorsApplied())); + } + if (summary.getOpenShiftBuildConfigName() != null) { + logger.info("Build Config: %s", summary.getOpenShiftBuildConfigName()); + } + logger.info(""); + } + + private static void printResourceSummary(Summary summary, File baseDir, KitLogger logger) { + if (summary.getGeneratedResourceFiles() != null && !summary.getGeneratedResourceFiles().isEmpty()) { + if (summary.getEnrichersApplied() != null && summary.getEnrichersApplied().size() < 20) { + logger.info("Enrichers applied: [%s]", String.join(",", summary.getEnrichersApplied())); + } + logger.info("Generated resources:"); + List generatedFilesResourcePaths = summary.getGeneratedResourceFiles().stream() + .map(File::getAbsolutePath) + .map(p -> FileUtil.getRelativeFilePath(baseDir.getAbsolutePath(), p)) + .collect(Collectors.toList()); + logList(logger, generatedFilesResourcePaths); + } + if (summary.getAggregateResourceFile() != null) { + logger.info(" - %s", FileUtil.getRelativeFilePath(baseDir.getAbsolutePath(), summary.getAggregateResourceFile().getAbsolutePath())); + } + logger.info(""); + } + + private static void printApplySummary(Summary summary, KitLogger logger) { + if (StringUtils.isNotBlank(summary.getAppliedClusterUrl())) { + logger.info("Applied resources from %s", summary.getAppliedClusterUrl()); + printKubernetesResourceSummary(summary.getAppliedKubernetesResources(), logger); + logger.info(""); + } + } + + private static void printUndeploySummary(Summary summary, KitLogger logger) { + if (StringUtils.isNotBlank(summary.getUndeployedClusterUrl())) { + logger.info("Undeployed resources from %s", summary.getUndeployedClusterUrl()); + printKubernetesResourceSummary(summary.getDeletedKubernetesResources(), logger); + logger.info(""); + } + } + + private static void printKubernetesResourceSummary(List kubernetesResourceSummaries, KitLogger logger) { + if (kubernetesResourceSummaries != null && !kubernetesResourceSummaries.isEmpty()) { + for (KubernetesResourceSummary kubernetesResourceSummary : kubernetesResourceSummaries) { + logger.info(" - %s", kubernetesResourceSummary.getResourceName()); + if (kubernetesResourceSummary.getGroup().equals(kubernetesResourceSummary.getVersion())) { + logger.info(" * %s %s", kubernetesResourceSummary.getGroup(), kubernetesResourceSummary.getKind()); + } else { + logger.info(" * %s/%s %s", kubernetesResourceSummary.getGroup(), kubernetesResourceSummary.getVersion(), kubernetesResourceSummary.getKind()); + } + logger.info(" * Namespace: %s", kubernetesResourceSummary.getNamespace()); + } + } + } + + private static void printPushSummary(Summary summary, KitLogger logger) { + if (StringUtils.isNotBlank(summary.getPushRegistry())) { + logger.info("Registry: %s", summary.getPushRegistry()); + } + } + + private static void printHelmSummary(Summary summary, File baseDir, KitLogger logger) { + if (StringUtils.isNotBlank(summary.getHelmChartName())) { + logger.info("Chart : %s", summary.getHelmChartName()); + } + if (summary.getHelmChart() != null) { + logger.info("Location : %s", FileUtil.getRelativeFilePath(baseDir.getAbsolutePath(), summary.getHelmChart().getAbsolutePath())); + } + if (summary.getHelmChartCompressed() != null) { + logger.info("Compressed : %s", FileUtil.getRelativeFilePath(baseDir.getAbsolutePath(), summary.getHelmChartCompressed().getAbsolutePath())); + } + } + + private static void printHelmPushSummary(Summary summary, KitLogger logger) { + if (StringUtils.isNotBlank(summary.getHelmRepository())) { + logger.info("Repository : %s", summary.getHelmRepository()); + } + } + + private static void logList(KitLogger logger, List list) { + for (String item : list) { + logger.info(" - %s", item); + } + } + + private static void addToSummary(UnaryOperator summaryConsumer) { + Summary summary = loadSummaryFromFile(); + if (summary == null) { + summary = new Summary(); + } + summary = summaryConsumer.apply(summary); + writeSummaryToFile(summary); + } + + private static Map createOrAddToExistingMap(Map orignalMap, K key, Supplier emptySupplier, UnaryOperator valueConsumer) { + if (orignalMap == null) { + orignalMap = new HashMap<>(); + } + orignalMap.computeIfAbsent(key, s -> emptySupplier.get()); + orignalMap.put(key, valueConsumer.apply(orignalMap.get(key))); + return orignalMap; + } + + private static List createOrAddToExistingList(List currentList, T item) { + if (currentList == null) { + currentList = new ArrayList<>(); + } + if (!currentList.contains(item)) { + currentList.add(item); + } + return currentList; + } + + private static synchronized Summary loadSummaryFromFile() { + try { + if (!isValidSummaryFile(summaryFile)) { + summaryFile = File.createTempFile("jkube", SUMMARY_FILE_NAME); + summaryFile.deleteOnExit(); + return null; + } + return Serialization.jsonMapper().readValue(summaryFile, Summary.class); + } catch (IOException ioException) { + throw new IllegalStateException("Failure in loading Summary file: ", ioException); + } + } + + private static void writeSummaryToFile(Summary summary) { + if (isValidSummaryFile(summaryFile)) { + try (FileWriter fileWriter = new FileWriter(summaryFile)) { + fileWriter.write(Serialization.jsonMapper().writeValueAsString(summary)); + } catch (IOException ioException) { + throw new IllegalStateException("Failure in writing to Summary file: ", ioException); + } + } + } + + private static boolean isValidSummaryFile(File summaryFile) { + return summaryFile != null && + StringUtils.isNotBlank(summaryFile.getAbsolutePath()) && + summaryFile.getAbsolutePath().contains(SUMMARY_FILE_NAME) && + summaryFile.getAbsolutePath().contains("jkube") && + summaryFile.exists(); + } +} diff --git a/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/SummaryUtilTest.java b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/SummaryUtilTest.java new file mode 100644 index 0000000000..5c114b85e2 --- /dev/null +++ b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/SummaryUtilTest.java @@ -0,0 +1,201 @@ +/** + * Copyright (c) 2019 Red Hat, Inc. + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at: + * + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.jkube.kit.common; + +import org.eclipse.jkube.kit.common.summary.KubernetesResourceSummary; +import org.eclipse.jkube.kit.common.util.SummaryUtil; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; + +import static org.assertj.core.api.Assertions.assertThatIllegalStateException; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +class SummaryUtilTest { + private KitLogger logger; + @TempDir + private File temporaryFolder; + + @BeforeEach + public void setUp() { + logger = spy(new KitLogger.SilentLogger()); + SummaryUtil.clear(); + } + + @Test + void printSummary_whenInvoked_shouldPrintSummary() { + // Given + initializeSummary(); + + // When + SummaryUtil.printSummary(logger, temporaryFolder, true); + + // Then + verifySummaryPrintedOnce(); + } + + @Test + void printSummary_whenFailure_shouldPrintFailureAndCause() { + // Given + SummaryUtil.setSuccessful(false); + SummaryUtil.setFailureCause("failure in pulling image"); + + // When + SummaryUtil.printSummary(logger, temporaryFolder, true); + + // Then + verify(logger).error("FAILURE [%s]", "failure in pulling image"); + } + + @Test + void printSummary_whenSummaryEnabledFalse_shouldNotPrintAnything() { + // Given + When + SummaryUtil.printSummary(logger, temporaryFolder, false); + + // Then + verify(logger, times(0)).info(anyString()); + } + + @Test + void setFailureIfSummaryEnabledOrThrow_whenSummaryEnabled_shouldLogFailureAndCause() { + // Given + SummaryUtil.setFailureIfSummaryEnabledOrThrow(true, "failed to execute", () -> new IllegalStateException("failure")); + + // When + SummaryUtil.printSummary(logger, temporaryFolder, true); + + // Then + verify(logger).error("FAILURE [%s]", "failed to execute"); + } + + @Test + void setFailureIfSummaryEnabledOrThrow_whenSummaryDisabled_shouldLogThrowException() { + // When + Then + assertThatIllegalStateException() + .isThrownBy(() -> SummaryUtil.setFailureIfSummaryEnabledOrThrow(false, "failed", () -> new IllegalStateException("failure"))) + .withMessage("failure"); + verify(logger, times(0)).error(anyString(), anyString()); + } + + private void initializeSummary() { + SummaryUtil.setBuildStrategy("Local Docker"); + SummaryUtil.addToGenerators("java-exec"); + SummaryUtil.setDockerFileImageSummary("quay.io/example/test:latest", null); + SummaryUtil.setBaseImageNameImageSummary("quay.io/example/test:latest", "quay.io/jkube/java:latest"); + SummaryUtil.setImageShaImageSummary("quay.io/example/test:latest", "def3"); + SummaryUtil.setPushRegistry("quay.io"); + SummaryUtil.addGeneratedResourceFile(new File(temporaryFolder, "target/classes/META-INF/jkube/kubernetes/test-deployment.yml")); + SummaryUtil.addGeneratedResourceFile(new File(temporaryFolder, "target/classes/META-INF/jkube/kubernetes/test-service.yml")); + SummaryUtil.setAggregateResourceFile(new File(temporaryFolder, "target/classes/META-INF/jkube/kubernetes.yml")); + SummaryUtil.addToEnrichers("jkube-controller"); + SummaryUtil.addToEnrichers("jkube-service"); + SummaryUtil.addAppliedKubernetesResource(KubernetesResourceSummary.builder() + .kind("Deployment") + .group("apps") + .version("v1") + .namespace("test-ns") + .resourceName("test") + .build()); + SummaryUtil.addAppliedKubernetesResource(KubernetesResourceSummary.builder() + .kind("Service") + .group("v1") + .version("v1") + .namespace("test-ns") + .resourceName("test") + .build()); + SummaryUtil.setHelmChartName("test"); + SummaryUtil.setHelmChartCompressedLocation(new File(temporaryFolder, "target/test.tar.gz")); + SummaryUtil.setHelmChartLocation(new File(temporaryFolder, "target/jkube/helm/test/kubernetes")); + SummaryUtil.setHelmRepository("localhost:8001/api/charts"); + SummaryUtil.addDeletedKubernetesResource(KubernetesResourceSummary.builder() + .kind("Deployment") + .group("apps") + .version("v1") + .namespace("test-ns") + .resourceName("test") + .build()); + SummaryUtil.addDeletedKubernetesResource(KubernetesResourceSummary.builder() + .kind("Service") + .group("v1") + .version("v1") + .namespace("test-ns") + .resourceName("test") + .build()); + SummaryUtil.setAppliedClusterUrl("https://192.168.39.75:8443/"); + SummaryUtil.setUndeployedClusterUrl("https://192.168.39.75:8443/"); + SummaryUtil.setSuccessful(true); + } + + private void verifySummaryPrintedOnce() { + verifySummaryBannerPrinted(); + verifyCommonSummaryPrinted(); + verifyBuildSummaryPrinted(); + verifyPushSummaryPrinted(); + verifyResourceSummaryPrinted(); + verifyHelmSummaryPrinted(); + verifyApplyUndeploySummaryPrinted(); + verify(logger).info(" SUMMARY"); + } + + private void verifyApplyUndeploySummaryPrinted() { + verify(logger).info("Undeployed resources from %s", "https://192.168.39.75:8443/"); + verify(logger, times(4)).info(" - %s", "test"); + verify(logger, times(2)).info(" * %s/%s %s", "apps", "v1", "Deployment"); + verify(logger, times(4)).info(" * Namespace: %s", "test-ns"); + verify(logger, times(2)).info(" * %s %s", "v1", "Service"); + } + + private void verifyPushSummaryPrinted() { + verify(logger).info("Registry: %s", "quay.io"); + } + + private void verifyBuildSummaryPrinted() { + verify(logger).info("Build Strategy : %s", "Local Docker"); + verify(logger).info("Generators applied: [%s]", "java-exec"); + } + + private void verifyCommonSummaryPrinted() { + verify(logger).info("Container images:"); + verify(logger).info(" - %s", "quay.io/example/test:latest"); + verify(logger).info(" * Base image: %s", "quay.io/jkube/java:latest"); + verify(logger).info(" * SHA: %s", "def3"); + } + + private void verifySummaryBannerPrinted() { + verify(logger, times(4)).info("-------------------------------"); + verify(logger).info(" SUMMARY"); + verify(logger).info(" __ / / //_/ / / / _ )/ __/"); + verify(logger).info("/ // / ,< / /_/ / _ / _/ "); + verify(logger).info("\\___/_/|_|\\____/____/___/ \n"); + } + + private void verifyResourceSummaryPrinted() { + verify(logger).info("Enrichers applied: [%s]", "jkube-controller,jkube-service"); + verify(logger).info("Generated resources:"); + verify(logger).info(" - %s", "target/classes/META-INF/jkube/kubernetes/test-deployment.yml"); + verify(logger).info(" - %s", "target/classes/META-INF/jkube/kubernetes/test-service.yml"); + verify(logger).info(" - %s", "target/classes/META-INF/jkube/kubernetes.yml"); + } + + private void verifyHelmSummaryPrinted() { + verify(logger).info("Chart : %s", "test"); + verify(logger).info("Location : %s", "target/jkube/helm/test/kubernetes"); + verify(logger).info("Compressed : %s", "target/test.tar.gz"); + } +} diff --git a/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/util/KubernetesHelperTest.java b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/util/KubernetesHelperTest.java index 2fec879bc4..3eeda8243c 100644 --- a/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/util/KubernetesHelperTest.java +++ b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/util/KubernetesHelperTest.java @@ -22,6 +22,10 @@ import java.util.List; import java.util.Map; +import io.fabric8.kubernetes.api.model.rbac.ClusterRole; +import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBuilder; +import io.fabric8.openshift.api.model.Route; +import io.fabric8.openshift.api.model.RouteBuilder; import org.eclipse.jkube.kit.common.KitLogger; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; @@ -264,6 +268,34 @@ void testGetFullyQualifiedApiGroupWithKind() { assertThat(result2).isEqualTo("networking.istio.io/v1alpha3#Gateway"); } + @Test + void getFullyQualifiedName_whenInvokedWithValidNamespacedAndResource_shouldReturnNameWithApiVersionKindNamespaceName() { + // Given + Route route = new RouteBuilder() + .withNewMetadata().withName("r1").endMetadata() + .build(); + + // When + String result = KubernetesHelper.getFullyQualifiedName(route, "ns1"); + + // Then + assertThat(result).isEqualTo("route.openshift.io/v1 Route ns1/r1"); + } + + @Test + void getFullyQualifiedName_whenInvokedWithNullNamespacedAndResource_shouldReturnNameWithApiVersionKindNamespaceName() { + // Given + ClusterRole clusterRole = new ClusterRoleBuilder() + .withNewMetadata().withName("r1").endMetadata() + .build(); + + // When + String result = KubernetesHelper.getFullyQualifiedName(clusterRole, null); + + // Then + assertThat(result).isEqualTo("rbac.authorization.k8s.io/v1 ClusterRole r1"); + } + @Test void testContainsPort() { // Given diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/ApplyService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/ApplyService.java index abefcc7084..46a19a5a17 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/ApplyService.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/ApplyService.java @@ -31,10 +31,12 @@ import io.fabric8.kubernetes.client.dsl.base.PatchContext; import io.fabric8.kubernetes.client.dsl.base.PatchType; import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.summary.KubernetesResourceSummary; import org.eclipse.jkube.kit.common.util.FileUtil; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.OpenshiftHelper; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.common.util.UserConfigurationCompare; import org.eclipse.jkube.kit.config.service.kubernetes.KubernetesClientUtil; @@ -80,6 +82,8 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; +import static io.fabric8.kubernetes.client.utils.ApiVersionUtil.trimGroup; +import static io.fabric8.kubernetes.client.utils.ApiVersionUtil.trimVersion; import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.eclipse.jkube.kit.common.util.KubernetesHelper.getKind; @@ -238,6 +242,7 @@ public void applyGenericKubernetesResource(GenericKubernetesResource genericKube } kubernetesClient.genericKubernetesResources(genericKubernetesResource.getApiVersion(), genericKubernetesResource.getKind()).inNamespace(applyNamespace).withName(name) .createOrReplace(genericKubernetesResource); + addToAppliedResourcesSummary(genericKubernetesResource, applyNamespace); log.info("Created Custom Resource: %s %s/%s", apiGroupWithKind, applyNamespace, name); } @@ -265,6 +270,7 @@ public void applyOAuthClient(OAuthClient entity, String sourceName) { } else { try { Object answer = openShiftClient.oAuthClients().withName(id).replace(entity); + addToAppliedResourcesSummary(entity, null); log.info("Updated OAuthClient result: %s", answer); } catch (Exception e) { onApplyError("Failed to update OAuthClient from " + sourceName + ". " + e + ". " + entity, e); @@ -285,6 +291,7 @@ protected void doCreateOAuthClient(OAuthClient entity, String sourceName) { if (OpenshiftHelper.isOpenShift(kubernetesClient)) { try { asOpenShiftClient().oAuthClients().resource(entity).create(); + addToAppliedResourcesSummary(entity, null); } catch (Exception e) { onApplyError("Failed to create OAuthClient from " + sourceName + ". " + e + ". " + entity, e); } @@ -327,6 +334,7 @@ public void installTemplate(Template entity, String sourceName) { log.info("Updating a Template from %s", sourceName); try { Object answer = openShiftClient.templates().inNamespace(currentNamespace).withName(id).replace(entity); + addToAppliedResourcesSummary(entity, currentNamespace); log.info("Updated Template: " + answer); } catch (Exception e) { onApplyError("Failed to update Template from " + sourceName + ". " + e + ". " + entity, e); @@ -353,6 +361,7 @@ protected void doCreateTemplate(Template entity, String namespace, String source try { final Template answer = asOpenShiftClient().templates().inNamespace(namespace).create(entity); logGeneratedEntity("Created Template: ", namespace, entity, answer); + addToAppliedResourcesSummary(answer, namespace); } catch (Exception e) { onApplyError("Failed to Template entity from " + sourceName + ". " + e + ". " + entity, e); } @@ -382,6 +391,7 @@ public void applyServiceAccount(ServiceAccount serviceAccount, String sourceName log.info("Updating a ServiceAccount from " + sourceName); try { Object answer = kubernetesClient.serviceAccounts().inNamespace(currentNamespace).withName(id).replace(serviceAccount); + addToAppliedResourcesSummary(serviceAccount, currentNamespace); logGeneratedEntity("Updated ServiceAccount: ", currentNamespace, serviceAccount, answer); } catch (Exception e) { onApplyError("Failed to update ServiceAccount from " + sourceName + ". " + e + ". " + serviceAccount, e); @@ -402,6 +412,7 @@ protected void doCreateServiceAccount(ServiceAccount serviceAccount, String name (serviceAccount)); try { Object answer = kubernetesClient.serviceAccounts().inNamespace(namespace).create(serviceAccount); + addToAppliedResourcesSummary(serviceAccount, namespace); logGeneratedEntity("Created ServiceAccount: ", namespace, serviceAccount, answer); } catch (Exception e) { onApplyError("Failed to create ServiceAccount from " + sourceName + ". " + e + ". " + serviceAccount, e); @@ -480,6 +491,7 @@ private void doCreateCustomResourceDefinition(CustomResourceDefinition entity, S log.info("Creating a Custom Resource Definition from " + sourceName + " name " + getName(entity)); try { CustomResourceDefinition answer = kubernetesClient.apiextensions().v1().customResourceDefinitions().create(entity); + addToAppliedResourcesSummary(answer, null); log.info("Created Custom Resource Definition result: %s", answer.getMetadata().getName()); } catch (Exception e) { onApplyError("Failed to create Custom Resource Definition from " + sourceName + ". " + e + ". " + entity, e); @@ -497,6 +509,7 @@ protected void doCreatePersistentVolumeClaim(PersistentVolumeClaim entity, Strin try { Object answer; answer = kubernetesClient.persistentVolumeClaims().inNamespace(namespace).create(entity); + addToAppliedResourcesSummary(entity, namespace); logGeneratedEntity("Created PersistentVolumeClaim: ", namespace, entity, answer); } catch (Exception e) { onApplyError("Failed to create PersistentVolumeClaim from " + sourceName + ". " + e + ". " + entity, e); @@ -540,6 +553,7 @@ protected void doCreateSecret(Secret secret, String namespace, String sourceName try { Object answer = kubernetesClient.secrets().inNamespace(namespace).create(secret); logGeneratedEntity("Created Secret: ", namespace, secret, answer); + addToAppliedResourcesSummary(secret, namespace); } catch (Exception e) { onApplyError("Failed to create Secret from " + sourceName + ". " + e + ". " + secret, e); } @@ -654,6 +668,7 @@ private void doCreateRoute(Route entity, String namespace, String sourceName) { "host: " + entity.getSpec().getHost() : "No Spec !")); asOpenShiftClient().routes().inNamespace(namespace).resource(entity).create(); + addToAppliedResourcesSummary(entity, namespace); } catch (Exception e) { onApplyError("Failed to create Route from " + sourceName + ". " + e + ". " + entity, e); } @@ -695,6 +710,7 @@ public void doCreateBuildConfig(BuildConfig entity, String namespace , String so if (OpenshiftHelper.isOpenShift(kubernetesClient)) { try { asOpenShiftClient().buildConfigs().inNamespace(namespace).resource(entity).create(); + addToAppliedResourcesSummary(entity, namespace); } catch (Exception e) { onApplyError("Failed to create BuildConfig from " + sourceName + ". " + e, e); } @@ -724,6 +740,7 @@ public void applyRoleBinding(RoleBinding entity, String sourceName) { metadata.setNamespace(currentNamespace); metadata.setResourceVersion(resourceVersion); Object answer = kubernetesClient.rbac().roleBindings().inNamespace(currentNamespace).withName(id).replace(entity); + addToAppliedResourcesSummary(entity, currentNamespace); logGeneratedEntity("Updated RoleBinding: ", currentNamespace, entity, answer); } catch (Exception e) { onApplyError("Failed to update RoleBinding from " + sourceName + ". " + e + ". " + entity, e); @@ -743,6 +760,7 @@ public void doCreateRoleBinding(RoleBinding entity, String namespace , String so try { log.info("Creating RoleBinding from " + sourceName + " namespace " + namespace + " name " + getName(entity)); kubernetesClient.rbac().roleBindings().inNamespace(namespace).create(entity); + addToAppliedResourcesSummary(entity, namespace); } catch (Exception e) { onApplyError("Failed to create RoleBinding from " + sourceName + ". " + e, e); } @@ -760,8 +778,10 @@ public void applyImageStream(ImageStream entity, String sourceName) { if (old == null) { log.info("Creating " + kind + " " + name + " from " + sourceName); resource.create(entity); + addToAppliedResourcesSummary(entity, currentNamespace); } else { log.info("Updating " + kind + " " + name + " from " + sourceName); + addToAppliedResourcesSummary(entity, currentNamespace); copyAllImageStreamTags(entity, old); entity = patchService.compareAndPatchEntity(currentNamespace, entity, old); openShiftClient.resource(entity).inNamespace(currentNamespace).createOrReplace(); @@ -878,6 +898,7 @@ public void applyResource(T resource, String sourceNam log.info("Updating " + kind + " from " + sourceName); try { Object answer = resources.inNamespace(currentNamespace).withName(id).replace(resource); + addToAppliedResourcesSummary(resource, currentNamespace); logGeneratedEntity("Updated " + kind + ": ", currentNamespace, resource, answer); } catch (Exception e) { onApplyError("Failed to update " + kind + " from " + sourceName + ". " + e + ". " + resource, e); @@ -898,6 +919,7 @@ protected void doCreateResource(T resource, String na log.info("Creating a " + kind + " from " + sourceName + " namespace " + namespace + " name " + getName(resource)); try { Object answer = resources.inNamespace(namespace).create(resource); + addToAppliedResourcesSummary(resource, namespace); logGeneratedEntity("Created " + kind + ": ", namespace, resource, answer); } catch (Exception e) { onApplyError("Failed to create " + kind + " from " + sourceName + ". " + e + ". " + resource, e); @@ -909,6 +931,7 @@ private void doPatchEntity(T oldEntity, T newEntity, Str log.info("Updating %s from %s", kind, sourceName); try { Object answer = patchService.compareAndPatchEntity(namespace, newEntity, oldEntity); + addToAppliedResourcesSummary(newEntity, namespace); logGeneratedEntity("Updated " + kind + ": ", namespace, newEntity, answer); } catch (Exception e) { onApplyError("Failed to update " + kind + " from " + sourceName + ". " + e + ". " + newEntity, e); @@ -919,6 +942,7 @@ protected void doCreateService(Service service, String namespace, String sourceN log.info("Creating a Service from " + sourceName + " namespace " + namespace + " name " + getName(service)); try { Object answer = kubernetesClient.services().inNamespace(namespace).create(service); + addToAppliedResourcesSummary(service, namespace); logGeneratedEntity("Created Service: ", namespace, service, answer); } catch (Exception e) { onApplyError("Failed to create Service from " + sourceName + ". " + e + ". " + service, e); @@ -1089,6 +1113,7 @@ public void applyReplicationController(ReplicationController replicationControll log.info("Updating ReplicationController from " + sourceName + " namespace " + currentNamespace + " name " + getName(replicationController)); try { Object answer = patchService.compareAndPatchEntity(currentNamespace, replicationController, old); + addToAppliedResourcesSummary(replicationController, currentNamespace); logGeneratedEntity("Updated replicationController: ", currentNamespace, replicationController, answer); if (deletePodsOnReplicationControllerUpdate) { @@ -1176,6 +1201,7 @@ protected void applyJob(Job job, String sourceName) { if(exception.getStatus().getCode().equals(HttpURLConnection.HTTP_CONFLICT)) { Job old = kubernetesClient.batch().v1().jobs().inNamespace(currentNamespace).withName(id).get(); Job updatedJob = patchService.compareAndPatchEntity(currentNamespace, job, old); + addToAppliedResourcesSummary(updatedJob, currentNamespace); log.info("Updated Job: " + updatedJob.getMetadata().getName()); return; } @@ -1341,6 +1367,7 @@ public void setRollingUpgradePreserveScale(boolean rollingUpgradePreserveScale) public void applyEntities(String fileName, Collection entities, KitLogger serviceLogger, long serviceUrlWaitTimeSeconds) { + SummaryUtil.setAppliedClusterUrl(kubernetesClient.getMasterUrl().toString()); applyStandardEntities(fileName, getK8sListWithNamespaceFirst(entities)); } @@ -1361,6 +1388,16 @@ private void applyStandardEntities(String fileName, List entities) } } + private void addToAppliedResourcesSummary(HasMetadata h, String applicableNamespace) { + SummaryUtil.addAppliedKubernetesResource(KubernetesResourceSummary.builder() + .group(trimGroup(h.getApiVersion())) + .version(trimVersion(h.getApiVersion())) + .namespace(applicableNamespace) + .resourceName(KubernetesHelper.getName(h)) + .kind(h.getKind()) + .build()); + } + public static List getK8sListWithNamespaceFirst(Collection k8sList) { return k8sList.stream().sorted(new HasMetadataComparator()).sorted((k1, k2) -> { if (isNamespaceOrProject(k1)) { diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/DockerBuildService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/DockerBuildService.java index 183962cb45..dddde14390 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/DockerBuildService.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/DockerBuildService.java @@ -18,6 +18,7 @@ import org.eclipse.jkube.kit.build.service.docker.DockerServiceHub; import org.eclipse.jkube.kit.common.JKubeConfiguration; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.common.RegistryConfig; import org.eclipse.jkube.kit.config.resource.RuntimeMode; @@ -50,7 +51,11 @@ public DockerBuildService(JKubeServiceHub jKubeServiceHub) { @Override public boolean isApplicable() { - return runtimeMode == RuntimeMode.KUBERNETES; + if (runtimeMode == RuntimeMode.KUBERNETES) { + SummaryUtil.setBuildStrategy("Local Docker"); + return true; + } + return false; } @Override diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/JibBuildService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/JibBuildService.java index 905754028e..470d1c58f1 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/JibBuildService.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/JibBuildService.java @@ -26,6 +26,7 @@ import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.archive.ArchiveCompression; import org.eclipse.jkube.kit.common.util.EnvUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.common.RegistryConfig; @@ -70,7 +71,11 @@ public JibBuildService(JKubeServiceHub jKubeServiceHub) { @Override public boolean isApplicable() { - return buildServiceConfig.getJKubeBuildStrategy() == JKubeBuildStrategy.jib; + if (buildServiceConfig.getJKubeBuildStrategy() == JKubeBuildStrategy.jib) { + SummaryUtil.setBuildStrategy("Local Jib"); + return true; + } + return false; } @Override diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java index 5db4ed8f85..0415075ea7 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java @@ -26,7 +26,9 @@ import io.fabric8.kubernetes.api.model.GenericKubernetesResource; import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.summary.KubernetesResourceSummary; import org.eclipse.jkube.kit.common.util.KubernetesHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; import org.eclipse.jkube.kit.config.service.UndeployService; @@ -34,6 +36,8 @@ import io.fabric8.kubernetes.api.model.DeletionPropagation; import io.fabric8.kubernetes.api.model.HasMetadata; +import static io.fabric8.kubernetes.client.utils.ApiVersionUtil.trimGroup; +import static io.fabric8.kubernetes.client.utils.ApiVersionUtil.trimVersion; import static org.eclipse.jkube.kit.common.util.KubernetesHelper.loadResources; import static org.eclipse.jkube.kit.config.service.ApplyService.getK8sListWithNamespaceFirst; import static org.eclipse.jkube.kit.config.service.kubernetes.KubernetesClientUtil.applicableNamespace; @@ -63,6 +67,7 @@ public void undeploy(List resourceDirs, ResourceConfig resourceConfig, Fil logger.warn("No such generated manifests found for this project, ignoring."); return; } + SummaryUtil.setUndeployedClusterUrl(jKubeServiceHub.getClient().getMasterUrl().toString()); List undeployEntities = getK8sListWithNamespaceFirst(entities); Collections.reverse(undeployEntities); undeployCustomResources(resourceConfig.getNamespace(), fallbackNamespace, undeployEntities); @@ -87,6 +92,7 @@ protected Consumer resourceDeleter(String namespace, String fallbac .inNamespace(undeployNamespace) .withPropagationPolicy(DeletionPropagation.BACKGROUND) .delete(); + addToUndeployedResourcesSummary(undeployNamespace, resource); }; } @@ -116,6 +122,16 @@ private void deleteCustomResource(GenericKubernetesResource customResource, Stri } } + private void addToUndeployedResourcesSummary(String namespace, HasMetadata h) { + SummaryUtil.addDeletedKubernetesResource(KubernetesResourceSummary.builder() + .group(trimGroup(h.getApiVersion())) + .version(trimVersion(h.getApiVersion())) + .namespace(namespace) + .resourceName(KubernetesHelper.getName(h)) + .kind(h.getKind()) + .build()); + } + protected JKubeServiceHub getjKubeServiceHub() { return jKubeServiceHub; } diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceUtils.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceUtils.java index f8d285f08b..fa1ea5b2f0 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceUtils.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceUtils.java @@ -27,6 +27,7 @@ import org.eclipse.jkube.kit.build.api.assembly.ArchiverCustomizer; import org.eclipse.jkube.kit.common.util.IoUtil; import org.eclipse.jkube.kit.common.util.KubernetesHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; @@ -123,6 +124,7 @@ protected static BuildStrategy createBuildStrategy( final String fromNamespace = getMapValueWithDefault(fromExt, JKubeBuildStrategy.SourceStrategy.namespace, IMAGE_STREAM_TAG.equals(fromKind) ? "openshift" : null); if (osBuildStrategy == JKubeBuildStrategy.docker) { + SummaryUtil.setBuildStrategy("Cluster Docker"); BuildStrategy buildStrategy = new BuildStrategyBuilder() .withType("Docker") .withNewDockerStrategy() @@ -141,6 +143,7 @@ protected static BuildStrategy createBuildStrategy( } return buildStrategy; } else if (osBuildStrategy == JKubeBuildStrategy.s2i) { + SummaryUtil.setBuildStrategy("Cluster S2I"); BuildStrategy buildStrategy = new BuildStrategyBuilder() .withType("Source") .withNewSourceStrategy() diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java index 82f8d3ce2a..d99cab0c73 100644 --- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java +++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java @@ -34,6 +34,7 @@ import org.eclipse.jkube.kit.common.util.EnvUtil; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.OpenshiftHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.common.RegistryConfig; @@ -120,7 +121,10 @@ public OpenshiftBuildService(JKubeServiceHub jKubeServiceHub) { @Override public boolean isApplicable() { - return jKubeServiceHub.getRuntimeMode() == RuntimeMode.OPENSHIFT; + if (jKubeServiceHub.getRuntimeMode() == RuntimeMode.OPENSHIFT) { + return true; + } + return false; } @Override @@ -151,6 +155,8 @@ public void buildSingleImage(ImageConfiguration imageConfig) throws JKubeService // Create a file with generated image streams addImageStreamToFile(getImageStreamFile(), imageName, client); + SummaryUtil.setBaseImageNameImageSummary(imageConfig.getName(), imageConfig.getBuildConfiguration().getFrom()); + SummaryUtil.setImageStreamUsedImageSummary(imageConfig.getName(), resolveImageStreamName(imageName)); createAdditionalTags(imageConfig, imageName); } else { @@ -206,6 +212,7 @@ protected String updateOrCreateBuildConfig(BuildServiceConfig config, OpenShiftC // Fetch existing build config BuildConfig buildConfig = client.buildConfigs().inNamespace(applicableOpenShiftNamespace).withName(buildName).get(); + SummaryUtil.setOpenShiftBuildConfigName(buildName); if (buildConfig != null) { // lets verify the BC BuildConfigSpec spec = OpenShiftBuildServiceUtils.getBuildConfigSpec(buildConfig); diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java index b6b55d539d..4d1a985a87 100644 --- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java +++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java @@ -24,6 +24,7 @@ import io.fabric8.kubernetes.api.model.GenericKubernetesResourceBuilder; import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.util.KubernetesHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; @@ -50,6 +51,8 @@ class KubernetesUndeployServiceTest { private JKubeServiceHub jKubeServiceHub; @Mocked private KubernetesHelper kubernetesHelper; + @Mocked + private SummaryUtil summaryUtil; private KubernetesUndeployService kubernetesUndeployService; @BeforeEach diff --git a/jkube-kit/doc/src/main/asciidoc/inc/_summary.adoc b/jkube-kit/doc/src/main/asciidoc/inc/_summary.adoc new file mode 100644 index 0000000000..5b35dab275 --- /dev/null +++ b/jkube-kit/doc/src/main/asciidoc/inc/_summary.adoc @@ -0,0 +1,15 @@ +[[summary]] += Summary + +{plugin} can print a brief summary of the task it performed in order to give better idea of what's going on to the user. At the moment, most of the build related actions (build, push, resource, apply etc.) print summary. It can be disabled with `jkube.summaryEnabled` property. + +.Summary configuration +[cols="2,6"] +|=== +| Property | Description + +| `jkube.summaryEnabled` +| Whether summary should be printed or not. + +Defaults to `true` +|=== diff --git a/jkube-kit/enricher/api/src/main/java/org/eclipse/jkube/kit/enricher/api/util/KubernetesResourceUtil.java b/jkube-kit/enricher/api/src/main/java/org/eclipse/jkube/kit/enricher/api/util/KubernetesResourceUtil.java index 0f36393aec..63587fb86d 100644 --- a/jkube-kit/enricher/api/src/main/java/org/eclipse/jkube/kit/enricher/api/util/KubernetesResourceUtil.java +++ b/jkube-kit/enricher/api/src/main/java/org/eclipse/jkube/kit/enricher/api/util/KubernetesResourceUtil.java @@ -40,6 +40,7 @@ import org.eclipse.jkube.kit.common.util.KindFilenameMapperUtil; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.MapUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.resource.GroupArtifactVersion; @@ -411,16 +412,16 @@ public static void validateKubernetesMasterUrl(URL masterUrl) { } } - public static void handleKubernetesClientException(KubernetesClientException e, KitLogger logger) { + public static void handleKubernetesClientException(KubernetesClientException e, KitLogger logger, boolean summaryEnabled) { Throwable cause = e.getCause(); if (cause instanceof UnknownHostException) { logger.error( "Could not connect to kubernetes cluster!"); logger.error( "Connection error: %s", cause); String message = "Could not connect to kubernetes cluster. Are you sure if you're connected to a remote cluster via `kubectl`? Error: " + cause; - throw new IllegalStateException(message, e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, message, () -> new IllegalStateException(message, e)); } else { - throw new IllegalStateException(e.getMessage(), e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, e.getMessage(), () -> new IllegalStateException(e.getMessage(), e)); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ConfigMapEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ConfigMapEnricher.java index d73f1e1cd3..51561aca67 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ConfigMapEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ConfigMapEnricher.java @@ -30,6 +30,7 @@ import java.util.Set; import java.util.stream.Stream; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ConfigMapEntry; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; @@ -68,6 +69,7 @@ public void visit(ConfigMapBuilder element) { final Map annotations = element.buildMetadata().getAnnotations(); if (annotations != null) { try { + SummaryUtil.addToEnrichers(getName()); addConfigMapFromAnnotations(annotations, element); } catch (IOException e) { throw new IllegalArgumentException(e); @@ -149,6 +151,7 @@ private void addConfigMapFromResourceConfigurations(KubernetesListBuilder builde if ((configMap.getData() != null && !configMap.getData().isEmpty()) || (configMap.getBinaryData() != null && !configMap.getBinaryData().isEmpty())) { + SummaryUtil.addToEnrichers(getName()); builder.addToConfigMapItems(configMap); } } catch (IOException e) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ContainerEnvJavaOptionsMergeEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ContainerEnvJavaOptionsMergeEnricher.java index 501e16b34e..a0b7b63c93 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ContainerEnvJavaOptionsMergeEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ContainerEnvJavaOptionsMergeEnricher.java @@ -19,6 +19,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -59,6 +60,7 @@ public ContainerEnvJavaOptionsMergeEnricher(JKubeEnricherContext enricherContext @Override public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { if (!asBoolean(getConfig(Config.DISABLE)) && hasImageConfiguration()) { + SummaryUtil.addToEnrichers(getName()); builder.accept(new ContainerEnvJavaOptionsMergeVisitor(getImages())); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ControllerViaPluginConfigurationEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ControllerViaPluginConfigurationEnricher.java index 585a92777c..17a92c0dab 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ControllerViaPluginConfigurationEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ControllerViaPluginConfigurationEnricher.java @@ -18,6 +18,7 @@ import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; @@ -83,6 +84,7 @@ public void create(PlatformMode platformMode, KubernetesListBuilder builder) { final List images = getImages(); // Check if at least a replica set is added. If not add a default one if (KubernetesResourceUtil.checkForKind(builder, POD_CONTROLLER_KINDS)) { + SummaryUtil.addToEnrichers(getName()); // At least one image must be present, otherwise the resulting config will be invalid if (KubernetesResourceUtil.checkForKind(builder, "StatefulSet")) { final StatefulSetSpec spec = statefulSetHandler.get(config, images).getSpec(); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DebugEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DebugEnricher.java index f499ce41ca..0bc71d875c 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DebugEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DebugEnricher.java @@ -31,6 +31,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -68,6 +69,7 @@ public DebugEnricher(JKubeEnricherContext buildContext) { @Override public void create(PlatformMode platformMode, KubernetesListBuilder builder) { if (isDebugEnabled()) { + SummaryUtil.addToEnrichers(getName()); int count = 0; List items = builder.buildItems(); if (items != null) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultControllerEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultControllerEnricher.java index fdef3c9d5a..5db1dbdcc2 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultControllerEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultControllerEnricher.java @@ -28,6 +28,7 @@ import io.fabric8.kubernetes.api.model.batch.v1.Job; import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; @@ -119,6 +120,7 @@ public void create(PlatformMode platformMode, KubernetesListBuilder builder) { .getHandlerFor(fromType(getConfig(Config.TYPE))); final HasMetadata resource = ch.get(config, images); log.info("Adding a default %s", resource.getKind()); + SummaryUtil.addToEnrichers(getName()); builder.addToItems(resource); setProcessingInstruction(FABRIC8_GENERATED_CONTAINERS, getContainersFromPodSpec(ch.getPodTemplateSpec(config, images))); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultMetadataEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultMetadataEnricher.java index 0b1f7baa7e..300932e6ac 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultMetadataEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultMetadataEnricher.java @@ -13,6 +13,7 @@ */ package org.eclipse.jkube.enricher.generic; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -70,6 +71,7 @@ private void enrichLabelsAndAnnotations(KubernetesListBuilder builder) { } private void visit(KubernetesListBuilder builder, MetadataVisitor[] visitors) { + SummaryUtil.addToEnrichers(getName()); for (MetadataVisitor visitor : visitors) { builder.accept(visitor); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultNamespaceEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultNamespaceEnricher.java index 39d38da6e9..402e277e63 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultNamespaceEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultNamespaceEnricher.java @@ -25,6 +25,7 @@ import lombok.Getter; import org.apache.commons.lang3.StringUtils; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -99,6 +100,7 @@ public void visit(ObjectMetaBuilder metaBuilder) { boolean forceModifyNamespace = Boolean.parseBoolean(getConfig(Config.FORCE)); if (StringUtils.isBlank(metaBuilder.getNamespace()) || forceModifyNamespace) { + SummaryUtil.addToEnrichers(getName()); metaBuilder.withNamespace(getNamespaceName()).build(); } } @@ -145,6 +147,7 @@ private void addNewNamespaceToBuilderIfProvided(PlatformMode platformMode, Strin private void addNamespaceToBuilder(PlatformMode platformMode, String newNamespaceToCreate, KubernetesListBuilder builder, String type) { HasMetadata namespaceOrProject = getNamespaceOrProject(platformMode, type, newNamespaceToCreate); if (namespaceOrProject != null) { + SummaryUtil.addToEnrichers(getName()); builder.addToItems(namespaceOrProject); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultServiceEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultServiceEnricher.java index 85db8c287d..8ca02f5f9b 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultServiceEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DefaultServiceEnricher.java @@ -27,6 +27,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.lang3.StringUtils; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; @@ -127,6 +128,7 @@ public DefaultServiceEnricher(JKubeEnricherContext buildContext) { public void create(PlatformMode platformMode, KubernetesListBuilder builder) { final ResourceConfig xmlConfig = getConfiguration().getResource(); + SummaryUtil.addToEnrichers(getName()); if (Optional.ofNullable(xmlConfig).map(ResourceConfig::getServices).map(c -> !c.isEmpty()).orElse(false)) { // Add Services configured via XML addServices(builder, xmlConfig.getServices()); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DependencyEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DependencyEnricher.java index b356a8ac6d..2a8b9ce748 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DependencyEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DependencyEnricher.java @@ -22,6 +22,7 @@ import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.Dependency; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -88,6 +89,7 @@ private void addArtifactsWithYaml(Set artifactSet, String dependencyYaml) t File file = artifact.getFile(); try { URI uri = new URI("jar:" + file.toURI() + "!/" + dependencyYaml); + SummaryUtil.addToEnrichers(getName()); artifactSet.add(uri); } catch (URISyntaxException e) { getLog().debug("Failed to create URL for %s: %s", file, e); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DockerRegistrySecretEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DockerRegistrySecretEnricher.java index 40e3fb287b..7b69de2a57 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DockerRegistrySecretEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/DockerRegistrySecretEnricher.java @@ -15,6 +15,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; import org.eclipse.jkube.kit.enricher.api.model.Configuration; import org.eclipse.jkube.kit.enricher.api.util.SecretConstants; @@ -64,6 +65,7 @@ protected Map generateData(String dockerId) { JsonObject ret = new JsonObject(); ret.add(dockerId, params); + SummaryUtil.addToEnrichers(getName()); return Collections.singletonMap( SecretConstants.DOCKER_DATA_KEY, encode(ret.toString())); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/FileDataSecretEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/FileDataSecretEnricher.java index f8719e4668..27635165ce 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/FileDataSecretEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/FileDataSecretEnricher.java @@ -17,6 +17,7 @@ import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.SecretBuilder; import org.eclipse.jkube.kit.common.util.Base64Util; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -56,6 +57,7 @@ public void visit(SecretBuilder element) { try { if (annotations != null && !annotations.isEmpty()) { final Map secretAnnotations = createSecretFromAnnotations(annotations); + SummaryUtil.addToEnrichers(getName()); element.addToData(secretAnnotations); } } catch (IOException e) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java index 93d9029561..60c09556b9 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/GitEnricher.java @@ -24,6 +24,7 @@ import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import org.eclipse.jkube.kit.common.util.GitUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.JKubeAnnotations; import org.eclipse.jkube.kit.config.resource.OpenShiftAnnotations; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -64,6 +65,7 @@ private Map getAnnotations(PlatformMode platformMode) { log.warn("Could not detect any git remote"); } + SummaryUtil.addToEnrichers(getName()); annotations.putAll(getAnnotations(platformMode, gitRemoteUrl, repository.getBranch(), GitUtil.getGitCommitId(repository))); } return annotations; diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImageEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImageEnricher.java index 2aaf2f0f5e..c3d6d50b25 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImageEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImageEnricher.java @@ -40,6 +40,7 @@ import io.fabric8.openshift.api.model.DeploymentConfigSpecFluent; import lombok.AllArgsConstructor; import lombok.Getter; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -204,6 +205,7 @@ public void visit(PodTemplateSpecBuilder templateBuilder) { if (containers == null) { containers = new ArrayList<>(); } + SummaryUtil.addToEnrichers(getName()); mergeImageConfigurationWithContainerSpec(containers); podSpec.withContainers(containers).endSpec(); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImagePullPolicyEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImagePullPolicyEnricher.java index 3875b5d26e..af9002b1e7 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImagePullPolicyEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ImagePullPolicyEnricher.java @@ -17,6 +17,7 @@ import io.fabric8.kubernetes.api.model.ContainerBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import org.apache.commons.lang3.StringUtils; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.EnricherContext; @@ -30,6 +31,7 @@ public ImagePullPolicyEnricher(EnricherContext context) { public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { String imagePullPolicy = getValueFromConfig(JKUBE_ENFORCED_IMAGE_PULL_POLICY, null); if (StringUtils.isNotBlank(imagePullPolicy)) { + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(ContainerBuilder containerBuilder) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/IngressEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/IngressEnricher.java index 833ffe5179..7f7ca39c9b 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/IngressEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/IngressEnricher.java @@ -24,6 +24,7 @@ import org.eclipse.jkube.enricher.generic.ingress.ExtensionsV1beta1IngressConverter; import org.eclipse.jkube.enricher.generic.ingress.NetworkingV1IngressGenerator; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.IngressConfig; import org.eclipse.jkube.kit.config.resource.IngressRuleConfig; import org.eclipse.jkube.kit.config.resource.IngressTlsConfig; @@ -81,6 +82,7 @@ public void visit(ServiceBuilder serviceBuilder) { } HasMetadata generatedIngress = generateIngressWithConfiguredApiVersion(serviceBuilder); if (generatedIngress != null) { + SummaryUtil.addToEnrichers(getName()); listBuilder.addToItems(generatedIngress); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenIssueManagementEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenIssueManagementEnricher.java index 2ff34e9f6b..673ab0c8cc 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenIssueManagementEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenIssueManagementEnricher.java @@ -24,6 +24,7 @@ import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import org.eclipse.jkube.kit.common.JavaProject; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.JKubeAnnotations; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -119,6 +120,7 @@ private Map getAnnotations() { String system = rootProject.getIssueManagementSystem(); String url = rootProject.getIssueManagementUrl(); if (StringUtils.isNotEmpty(system) && StringUtils.isNotEmpty(url)) { + SummaryUtil.addToEnrichers(getName()); annotations.put(JKubeAnnotations.ISSUE_SYSTEM.value(), system); annotations.put(JKubeAnnotations.ISSUE_TRACKER_URL.value(), url); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenScmEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenScmEnricher.java index ebe10ab566..854c440009 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenScmEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/MavenScmEnricher.java @@ -24,6 +24,7 @@ import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder; import io.fabric8.openshift.api.model.DeploymentConfigBuilder; import org.eclipse.jkube.kit.common.JavaProject; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.JKubeAnnotations; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -62,6 +63,7 @@ private Map getAnnotations() { String url = rootProject.getScmUrl(); String tag = rootProject.getScmTag(); + SummaryUtil.addToEnrichers(getName()); if (StringUtils.isNotEmpty(tag)) { annotations.put(JKubeAnnotations.SCM_TAG.value(), tag); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/NameEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/NameEnricher.java index 34e67d3f37..8731f054e5 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/NameEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/NameEnricher.java @@ -15,6 +15,7 @@ import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -50,6 +51,7 @@ private enum Config implements Configs.Config { public void create(PlatformMode platformMode, KubernetesListBuilder builder) { final String configuredName = getConfig(Config.NAME); final String defaultName = JKubeProjectUtil.createDefaultResourceName(getContext().getGav().getSanitizedArtifactId()); + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(ObjectMetaBuilder resource) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PodAnnotationEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PodAnnotationEnricher.java index df1fb5b160..6527abfd1f 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PodAnnotationEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PodAnnotationEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.api.model.PodTemplateSpec; import org.eclipse.jkube.kit.common.util.MapUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.EnricherContext; @@ -47,6 +48,7 @@ public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { template.setMetadata(new ObjectMeta()); } final ObjectMeta templateMetadata = template.getMetadata(); + SummaryUtil.addToEnrichers(getName()); templateMetadata.setAnnotations(MapUtil.mergeMaps(templateMetadata.getAnnotations(), item.getMetadata().getAnnotations())); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PortNameEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PortNameEnricher.java index a8e8c38631..a94508417e 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PortNameEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/PortNameEnricher.java @@ -16,6 +16,7 @@ import io.fabric8.kubernetes.api.builder.TypedVisitor; import io.fabric8.kubernetes.api.model.ContainerPortBuilder; import io.fabric8.kubernetes.api.model.KubernetesListBuilder; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -56,6 +57,7 @@ public void visit(ContainerPortBuilder portBuilder) { // If port is given but no name, then try to detect the name if (port != null && StringUtils.isBlank(portBuilder.getName())) { + SummaryUtil.addToEnrichers(getName()); addPortName(portBuilder, port); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ProjectLabelEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ProjectLabelEnricher.java index 35f3940571..ee1540f6f3 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ProjectLabelEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ProjectLabelEnricher.java @@ -19,6 +19,7 @@ import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.MapUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.GroupArtifactVersion; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -83,6 +84,7 @@ public ProjectLabelEnricher(JKubeEnricherContext buildContext) { @Override public void create(PlatformMode platformMode, KubernetesListBuilder builder) { + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(ServiceBuilder serviceBuilder) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ReplicaCountEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ReplicaCountEnricher.java index 33fbe6a44a..439c40dcdd 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ReplicaCountEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ReplicaCountEnricher.java @@ -14,6 +14,7 @@ package org.eclipse.jkube.enricher.generic; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.EnricherContext; @@ -34,6 +35,7 @@ public ReplicaCountEnricher(EnricherContext context) { public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { Integer replicas = Configs.asInteger(getValueFromConfig(JKUBE_ENFORCED_REPLICAS, null)); if (replicas != null) { + SummaryUtil.addToEnrichers(getName()); getContext().getHandlerHub().getControllerHandlers() .forEach(controller -> controller.get().overrideReplicas(builder, replicas)); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/RevisionHistoryEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/RevisionHistoryEnricher.java index a6f581b63d..0f4f784db2 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/RevisionHistoryEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/RevisionHistoryEnricher.java @@ -19,6 +19,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -54,6 +55,7 @@ public void create(PlatformMode platformMode, KubernetesListBuilder builder) { log.info("Adding revision history limit to %s", maxRevisionHistories); + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(io.fabric8.kubernetes.api.model.apps.DeploymentBuilder item) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/SecretEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/SecretEnricher.java index 77af810b1a..d1e20b8962 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/SecretEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/SecretEnricher.java @@ -20,6 +20,7 @@ import io.fabric8.kubernetes.api.model.Secret; import io.fabric8.kubernetes.api.model.SecretBuilder; import org.eclipse.jkube.kit.common.util.Base64Util; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.resource.SecretConfig; @@ -64,6 +65,7 @@ public void visit(SecretBuilder secretBuilder) { } // remove the annotation key annotation.remove(getAnnotationKey()); + SummaryUtil.addToEnrichers(getName()); secretBuilder.addToData(data); } } @@ -122,6 +124,7 @@ private void addSecretsFromXmlConfiguration(KubernetesListBuilder builder) { Secret secret = new SecretBuilder().withData(data).withMetadata(metadata).withType(type).build(); if(!secretToIndexMap.containsKey(secretConfig.getName())) { + SummaryUtil.addToEnrichers(getName()); builder.addToSecretItems(i, secret); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ServiceAccountEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ServiceAccountEnricher.java index 1fd28a0ff5..520a447d38 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ServiceAccountEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/ServiceAccountEnricher.java @@ -22,6 +22,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.resource.ServiceAccountConfig; @@ -68,6 +69,7 @@ public void create(PlatformMode mode, KubernetesListBuilder builder) { private List createServiceAccountFromResourceConfig(ResourceConfig resourceConfig) { List serviceAccounts = new ArrayList<>(); if(resourceConfig != null && resourceConfig.getServiceAccounts() != null && !Boolean.parseBoolean(getConfig(Config.SKIP_CREATE))) { + SummaryUtil.addToEnrichers(getName()); for(ServiceAccountConfig serviceAccountConfig : resourceConfig.getServiceAccounts()) { if(serviceAccountConfig.getName() != null) { serviceAccounts.add(createServiceAccount(serviceAccountConfig.getName())); @@ -88,6 +90,7 @@ public void visit(DeploymentBuilder deploymentBuilder) { serviceAccounts.add(createServiceAccount(serviceAccountName)); } if(deploymentToSaPair.containsKey(deploymentBuilder.buildMetadata().getName())) { + SummaryUtil.addToEnrichers(getName()); deploymentBuilder.editSpec() .editTemplate() .editSpec() diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/TriggersAnnotationEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/TriggersAnnotationEnricher.java index 17ff194047..300cac8e8f 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/TriggersAnnotationEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/TriggersAnnotationEnricher.java @@ -34,6 +34,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -146,6 +147,7 @@ public void visit(ContainerBuilder cb) { .build(); trigger.setAdditionalProperty("fieldPath", "spec.template.spec.containers[?(@.name==\"" + containerName + "\")].image"); + SummaryUtil.addToEnrichers(getName()); triggerList.add(trigger); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/VolumePermissionEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/VolumePermissionEnricher.java index 84d6f8bf39..a5b47e91cc 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/VolumePermissionEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/VolumePermissionEnricher.java @@ -32,6 +32,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -100,6 +101,7 @@ public void visit(PodTemplateSpecBuilder builder) { log.verbose("Adding init container for changing persistent volumes access mode to %s", getConfig(Config.PERMISSION)); + SummaryUtil.addToEnrichers(getName()); if (!initContainerHandler.hasInitContainer(builder, ENRICHER_NAME)) { initContainerHandler.appendInitContainer(builder, createPvInitContainer(podSpec)); } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/AutoTLSEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/AutoTLSEnricher.java index 66c8e16031..fddc1d3131 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/AutoTLSEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/AutoTLSEnricher.java @@ -26,6 +26,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -83,6 +84,7 @@ public void enrich(PlatformMode platformMode, KubernetesListBuilder builder) { return; } + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(PodTemplateSpecBuilder builder) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/DeploymentConfigEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/DeploymentConfigEnricher.java index 6eae9c8399..36dc81718f 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/DeploymentConfigEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/DeploymentConfigEnricher.java @@ -27,6 +27,7 @@ import io.fabric8.openshift.api.model.DeploymentStrategy; import io.fabric8.openshift.api.model.DeploymentStrategyBuilder; import org.eclipse.jkube.enricher.generic.DefaultControllerEnricher; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.EnricherConfig; @@ -51,6 +52,7 @@ public DeploymentConfigEnricher(JKubeEnricherContext context) { public void create(PlatformMode platformMode, KubernetesListBuilder builder) { if (isApplicable(platformMode)) { for(HasMetadata item : builder.buildItems()) { + SummaryUtil.addToEnrichers(getName()); if(item instanceof Deployment) { DeploymentConfig deploymentConfig = convertFromAppsV1Deployment(item); removeItemFromKubernetesBuilder(builder, item); diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ImageChangeTriggerEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ImageChangeTriggerEnricher.java index 1de159bc44..da53f36d2a 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ImageChangeTriggerEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ImageChangeTriggerEnricher.java @@ -22,6 +22,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageName; import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -63,6 +64,7 @@ public void create(PlatformMode platformMode, KubernetesListBuilder builder) { if(platformMode.equals(PlatformMode.kubernetes)) return; + SummaryUtil.addToEnrichers(getName()); builder.accept(new TypedVisitor() { @Override public void visit(DeploymentConfigSpecBuilder builder) { diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ProjectEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ProjectEnricher.java index caffe4c9cb..424f410495 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ProjectEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/ProjectEnricher.java @@ -22,6 +22,7 @@ import io.fabric8.openshift.api.model.ProjectSpec; import io.fabric8.openshift.api.model.ProjectStatus; import io.fabric8.openshift.api.model.ProjectStatusBuilder; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -43,6 +44,7 @@ public void create(PlatformMode platformMode, KubernetesListBuilder builder) { if(item instanceof Namespace) { Project project = convertToProject((Namespace) item); removeItemFromKubernetesBuilder(builder, item); + SummaryUtil.addToEnrichers(getName()); builder.addToItems(project); } } diff --git a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/RouteEnricher.java b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/RouteEnricher.java index b288c3d9ad..47c596ce92 100644 --- a/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/RouteEnricher.java +++ b/jkube-kit/enricher/generic/src/main/java/org/eclipse/jkube/enricher/generic/openshift/RouteEnricher.java @@ -17,6 +17,7 @@ import io.fabric8.openshift.api.model.RouteSpec; import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.util.FileUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; @@ -81,6 +82,7 @@ public void create(PlatformMode platformMode, final KubernetesListBuilder listBu } if(platformMode == PlatformMode.openshift && isGenerateRoute()) { + SummaryUtil.addToEnrichers(getName()); listBuilder.accept(new TypedVisitor() { @Override diff --git a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/DockerHealthCheckEnricher.java b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/DockerHealthCheckEnricher.java index 7b440f7357..4634451263 100644 --- a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/DockerHealthCheckEnricher.java +++ b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/DockerHealthCheckEnricher.java @@ -18,6 +18,7 @@ import io.fabric8.kubernetes.api.model.ExecAction; import io.fabric8.kubernetes.api.model.Probe; import io.fabric8.kubernetes.api.model.ProbeBuilder; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.HealthCheckConfiguration; import org.eclipse.jkube.kit.config.image.build.HealthCheckMode; @@ -59,6 +60,7 @@ private Probe getProbe(ContainerBuilder container) { private Probe getProbe(ImageConfiguration image) { if (hasHealthCheck(image)) { HealthCheckConfiguration health = image.getBuildConfiguration().getHealthCheck(); + SummaryUtil.addToEnrichers(getName()); return new ProbeBuilder() .withExec(new ExecAction(health.getCmd().asStrings())) .withTimeoutSeconds(durationSeconds(health.getTimeout()).orElse(null)) diff --git a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/KarafHealthCheckEnricher.java b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/KarafHealthCheckEnricher.java index 3e5a2eee38..9906580f9f 100644 --- a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/KarafHealthCheckEnricher.java +++ b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/KarafHealthCheckEnricher.java @@ -18,6 +18,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; import java.util.List; @@ -91,6 +92,7 @@ private Probe discoverKarafProbe(String path, int initialDelay) { for (String featureValue : features) { if ("jkube-karaf-checks".equals(featureValue)) { + SummaryUtil.addToEnrichers(getName()); return new ProbeBuilder().withNewHttpGet().withNewPort(DEFAULT_HEALTH_CHECK_PORT).withPath(path).endHttpGet() .withSuccessThreshold(getSuccessThreshold()) .withFailureThreshold(getFailureThreshold()) @@ -101,6 +103,7 @@ private Probe discoverKarafProbe(String path, int initialDelay) { String featureValue = (String) feature; if ("jkube-karaf-checks".equals(featureValue)) { + SummaryUtil.addToEnrichers(getName()); return new ProbeBuilder().withNewHttpGet().withNewPort(DEFAULT_HEALTH_CHECK_PORT).withPath(path).endHttpGet() .withSuccessThreshold(getSuccessThreshold()) .withFailureThreshold(getFailureThreshold()) diff --git a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/PrometheusEnricher.java b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/PrometheusEnricher.java index abdbc7cc01..7f99ed35fe 100644 --- a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/PrometheusEnricher.java +++ b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/PrometheusEnricher.java @@ -19,6 +19,7 @@ import java.util.stream.Collectors; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -67,6 +68,7 @@ public void visit(ServiceBuilder serviceBuilder) { annotations.put(ANNOTATION_PROMETHEUS_PORT, prometheusPort); annotations.put(ANNOTATION_PROMETHEUS_SCRAPE, "true"); annotations.put(ANNOTATION_PROMETHEUS_PATH, getConfig(Config.PROMETHEUS_PATH)); + SummaryUtil.addToEnrichers(getName()); log.verbose("Adding prometheus.io annotations: %s", annotations.entrySet() .stream() diff --git a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/ServiceDiscoveryEnricher.java b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/ServiceDiscoveryEnricher.java index 3a01c4de15..4ef9da5483 100644 --- a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/ServiceDiscoveryEnricher.java +++ b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/ServiceDiscoveryEnricher.java @@ -20,6 +20,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.PlatformMode; import org.eclipse.jkube.kit.enricher.api.BaseEnricher; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -137,6 +138,7 @@ protected void addAnnotations(ServiceBuilder serviceBuilder) { annotations.put(PREFIX + "/" + ANNOTATION_DESCRIPTION_PATH, resolvedDescriptionPath); } annotations.forEach((key, value) -> log.info("Add %s annotation: \"%s\" : \"%s\"", PREFIX, key, value)); + SummaryUtil.addToEnrichers(getName()); serviceBuilder.editMetadata().addToAnnotations(annotations).and().buildMetadata(); } } diff --git a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/WebAppHealthCheckEnricher.java b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/WebAppHealthCheckEnricher.java index 49daa08598..a8334e511c 100644 --- a/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/WebAppHealthCheckEnricher.java +++ b/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/WebAppHealthCheckEnricher.java @@ -18,6 +18,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; import org.apache.commons.lang3.StringUtils; @@ -62,6 +63,7 @@ private Probe getProbe(boolean readiness) { return null; } + SummaryUtil.addToEnrichers(getName()); Integer port = getPort(); String scheme = getScheme().toUpperCase(); String path = getPath(); diff --git a/jkube-kit/generator/api/src/main/java/org/eclipse/jkube/generator/api/GeneratorManager.java b/jkube-kit/generator/api/src/main/java/org/eclipse/jkube/generator/api/GeneratorManager.java index 71db8b9f68..8a0ccee537 100644 --- a/jkube-kit/generator/api/src/main/java/org/eclipse/jkube/generator/api/GeneratorManager.java +++ b/jkube-kit/generator/api/src/main/java/org/eclipse/jkube/generator/api/GeneratorManager.java @@ -18,6 +18,7 @@ import org.eclipse.jkube.kit.common.KitLogger; import org.eclipse.jkube.kit.common.util.ClassUtil; import org.eclipse.jkube.kit.common.util.PluginServiceFactory; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; /** @@ -53,6 +54,7 @@ public static List generate(List imageCo log.verbose(" - %s", generator.getName()); if (generator.isApplicable(ret)) { log.info("Running generator %s", generator.getName()); + SummaryUtil.addToGenerators(generator.getName()); ret = generator.customize(ret, prePackagePhase); } } diff --git a/jkube-kit/jkube-kit-micronaut/src/main/java/org/eclipse/jkube/micronaut/enricher/MicronautHealthCheckEnricher.java b/jkube-kit/jkube-kit-micronaut/src/main/java/org/eclipse/jkube/micronaut/enricher/MicronautHealthCheckEnricher.java index a7fad52a04..a563f3c3b4 100644 --- a/jkube-kit/jkube-kit-micronaut/src/main/java/org/eclipse/jkube/micronaut/enricher/MicronautHealthCheckEnricher.java +++ b/jkube-kit/jkube-kit-micronaut/src/main/java/org/eclipse/jkube/micronaut/enricher/MicronautHealthCheckEnricher.java @@ -16,6 +16,7 @@ import java.util.Collections; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.BuildConfiguration; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; @@ -85,6 +86,7 @@ private Probe buildProbe(Integer initialDelaySeconds, Integer periodSeconds){ return null; } + SummaryUtil.addToEnrichers(getName()); final String firstImagePort = getImages().stream().findFirst() .map(ImageConfiguration::getBuild).map(BuildConfiguration::getPorts) .orElse(Collections.emptyList()).stream() diff --git a/jkube-kit/jkube-kit-openliberty/src/main/java/org/eclipse/jkube/openliberty/enricher/OpenLibertyHealthCheckEnricher.java b/jkube-kit/jkube-kit-openliberty/src/main/java/org/eclipse/jkube/openliberty/enricher/OpenLibertyHealthCheckEnricher.java index 86055b7dde..247f4e0431 100644 --- a/jkube-kit/jkube-kit-openliberty/src/main/java/org/eclipse/jkube/openliberty/enricher/OpenLibertyHealthCheckEnricher.java +++ b/jkube-kit/jkube-kit-openliberty/src/main/java/org/eclipse/jkube/openliberty/enricher/OpenLibertyHealthCheckEnricher.java @@ -18,6 +18,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import org.eclipse.jkube.kit.common.Configs; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; import org.eclipse.jkube.kit.enricher.specific.AbstractHealthCheckEnricher; @@ -82,6 +83,7 @@ protected Probe getStartupProbe() { private Probe discoverOpenLibertyHealthCheck(String path, int initialDelay, int failureThreshold, int successThreshold, int periodSeconds) { if (hasMicroProfileDependency(getContext().getProject()) && isMicroProfileHealthEnabled(getContext().getProject())) { + SummaryUtil.addToEnrichers(getName()); return new ProbeBuilder() .withNewHttpGet() .withNewPort(asInteger(getConfig(Config.PORT))) diff --git a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java index 5019d99936..f92762c9b3 100644 --- a/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java +++ b/jkube-kit/jkube-kit-quarkus/src/main/java/org/eclipse/jkube/quarkus/enricher/QuarkusHealthCheckEnricher.java @@ -17,6 +17,7 @@ import org.eclipse.jkube.kit.common.Configs; import org.eclipse.jkube.kit.common.JavaProject; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.JKubeEnricherContext; import org.eclipse.jkube.kit.enricher.specific.AbstractHealthCheckEnricher; import org.eclipse.jkube.quarkus.QuarkusUtils; @@ -85,6 +86,7 @@ private Probe discoverQuarkusHealthCheck(int initialDelay, Function prependNameAsDirectory = tae -> tae.setName(String.format("%s/%s", helmConfig.getChart(), tae.getName())); - JKubeTarArchiver.createTarBall( + SummaryUtil.setHelmChartName(helmConfig.getChart()); + SummaryUtil.setHelmChartLocation(outputDir); + File helmTarball = JKubeTarArchiver.createTarBall( tarballFile, outputDir, FileUtil.listFilesAndDirsRecursivelyInDirectory(outputDir), Collections.emptyMap(), ArchiveCompression.fromFileName(tarballFile.getName()), null, prependNameAsDirectory); + SummaryUtil.setHelmChartCompressedLocation(helmTarball); Optional.ofNullable(helmConfig.getGeneratedChartListeners()).orElse(Collections.emptyList()) .forEach(listener -> listener.chartFileGenerated(helmConfig, helmType, tarballFile)); } @@ -136,6 +141,7 @@ public void uploadHelmChart(HelmConfig helm) throws BadUploadException, IOExcept .orElse(s -> s); setAuthentication(helmRepository, logger, registryServerConfigurations, passwordDecryptor); uploadHelmChart(helm, helmRepository); + SummaryUtil.setHelmRepository(helmRepository.getName()); } else { String error = "No repository or invalid repository configured for upload"; logger.error(error); diff --git a/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/DefaultResourceService.java b/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/DefaultResourceService.java index 5bc5649038..fc81503f28 100644 --- a/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/DefaultResourceService.java +++ b/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/DefaultResourceService.java @@ -24,6 +24,7 @@ import org.eclipse.jkube.kit.common.ResourceFileType; import org.eclipse.jkube.kit.common.util.JKubeProjectUtil; import org.eclipse.jkube.kit.common.util.ResourceClassifier; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.common.util.ValidationUtil; import org.eclipse.jkube.kit.config.resource.EnricherManager; import org.eclipse.jkube.kit.config.resource.PlatformMode; @@ -74,6 +75,7 @@ public File writeResources(KubernetesList resources, ResourceClassifier classifi interpolateTemplateVariables(resources, file); } + SummaryUtil.setAggregateResourceFile(file); return file; } diff --git a/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/WriteUtil.java b/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/WriteUtil.java index b85317870a..f3b68b722f 100644 --- a/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/WriteUtil.java +++ b/jkube-kit/resource/service/src/main/java/org/eclipse/jkube/kit/resource/service/WriteUtil.java @@ -23,12 +23,14 @@ import org.eclipse.jkube.kit.common.ResourceFileType; import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.enricher.api.util.KubernetesResourceUtil; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import static org.eclipse.jkube.kit.resource.service.TemplateUtil.getSingletonTemplate; @@ -81,6 +83,9 @@ private static void writeIndividualResources( // Here we are writing individual file for all the resources. File itemTarget = new File(targetDir, fileName); + SummaryUtil.addGeneratedResourceFile(Optional.ofNullable(resourceFileType) + .map(r -> r.addExtensionIfMissing(itemTarget)) + .orElse(itemTarget)); writeResource(itemTarget, item, resourceFileType); } } diff --git a/kubernetes-maven-plugin/doc/src/main/asciidoc/index.adoc b/kubernetes-maven-plugin/doc/src/main/asciidoc/index.adoc index 0bfbdd24a7..90173ff934 100644 --- a/kubernetes-maven-plugin/doc/src/main/asciidoc/index.adoc +++ b/kubernetes-maven-plugin/doc/src/main/asciidoc/index.adoc @@ -40,6 +40,7 @@ include::inc/_access.adoc[] include::inc/_registry.adoc[] include::inc/_authentication.adoc[] +include::{kitdoc-path}/inc/_summary.adoc[] include::inc/_volumes.adoc[] include::inc/_integrations.adoc[] diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java index d14d986579..73d2325b8d 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java @@ -24,6 +24,8 @@ import org.eclipse.jkube.generator.api.GeneratorContext; import org.eclipse.jkube.generator.api.GeneratorManager; import org.eclipse.jkube.kit.build.core.GavLabel; +import org.eclipse.jkube.kit.common.summary.Summary; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy; import org.eclipse.jkube.kit.common.JKubeConfiguration; import org.eclipse.jkube.kit.build.service.docker.DockerAccessFactory; @@ -387,6 +389,9 @@ public abstract class AbstractDockerMojo extends AbstractMojo @Parameter(property = "jkube.offline", defaultValue = "false") protected boolean offline; + @Parameter(property = "jkube.summaryEnabled", defaultValue = "true") + public boolean summaryEnabled; + protected JavaProject javaProject; @Override @@ -429,6 +434,7 @@ protected boolean shouldSkip() { protected void doExecute() throws MojoExecutionException { final boolean ansiRestore = Ansi.isEnabled(); try { + SummaryUtil.setSuccessful(true); DockerAccess dockerAccess = null; try { javaProject = MavenUtil.convertMavenProjectToJKubeProject(project, session); @@ -451,14 +457,19 @@ protected void doExecute() throws MojoExecutionException { executeInternal(); } catch (IOException | DependencyResolutionRequiredException exp) { logException(exp); - throw new MojoExecutionException(exp.getMessage()); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, exp.getMessage(), () -> new MojoExecutionException(exp.getMessage())); } catch (MojoExecutionException exp) { logException(exp); - throw exp; + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, exp.getMessage(), () -> exp); } finally { Optional.ofNullable(jkubeServiceHub).ifPresent(JKubeServiceHub::close); } } finally { + String lastExecutingGoal = MavenUtil.getLastExecutingGoal(session, getLogPrefix().trim()); + if (lastExecutingGoal != null && lastExecutingGoal.equals(mojoExecution.getGoal())) { + SummaryUtil.printSummary(log, javaProject.getBaseDirectory(), summaryEnabled); + SummaryUtil.clear(); + } Ansi.setEnabled(ansiRestore); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java index c0661d6b30..c02b0e3c4b 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java @@ -21,6 +21,7 @@ import org.eclipse.jkube.kit.common.util.AnsiLogger; import org.eclipse.jkube.kit.common.util.EnvUtil; import org.eclipse.jkube.kit.common.util.MavenUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.access.ClusterConfiguration; @@ -42,6 +43,7 @@ import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher; import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException; +import java.io.File; import java.util.Collections; import java.util.Optional; @@ -89,6 +91,12 @@ public abstract class AbstractJKubeMojo extends AbstractMojo implements KitLogge @Parameter(property = "jkube.namespace") public String namespace; + @Parameter(property = "jkube.summaryEnabled", defaultValue = "true") + public boolean summaryEnabled; + + @Parameter(property = "jkube.build.target.dir", defaultValue="target/docker") + protected String outputDirectory; + @Parameter protected ClusterConfiguration access; @@ -107,6 +115,7 @@ public abstract class AbstractJKubeMojo extends AbstractMojo implements KitLogge @Override public void execute() throws MojoExecutionException, MojoFailureException { try { + SummaryUtil.setSuccessful(true); init(); if (shouldSkip()) { log.info("`%s` goal is skipped.", mojoExecution.getMojoDescriptor().getFullGoalName()); @@ -114,7 +123,13 @@ public void execute() throws MojoExecutionException, MojoFailureException { } executeInternal(); } catch (DependencyResolutionRequiredException e) { - throw new MojoFailureException(e.getMessage()); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, e.getMessage(), () -> new MojoFailureException(e.getMessage())); + } finally { + String lastExecutingGoal = MavenUtil.getLastExecutingGoal(session, getLogPrefix().trim()); + if (lastExecutingGoal != null && lastExecutingGoal.equals(mojoExecution.getGoal())) { + SummaryUtil.printSummary(log, javaProject.getBaseDirectory(), summaryEnabled); + SummaryUtil.clear(); + } } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java index 9ad78b4b0c..a204225fe3 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java @@ -22,6 +22,7 @@ import org.eclipse.jkube.kit.common.util.KubernetesHelper; import org.eclipse.jkube.kit.common.util.MavenUtil; import org.eclipse.jkube.kit.common.util.OpenshiftHelper; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.service.ApplyService; import org.eclipse.jkube.kit.enricher.api.util.KubernetesResourceUtil; import org.eclipse.jkube.maven.plugin.mojo.ManifestProvider; @@ -187,13 +188,12 @@ public void executeInternal() throws MojoExecutionException { applyEntities(kubernetes, manifest.getName(), entities); log.info("[[B]]HINT:[[B]] Use the command `%s get pods -w` to watch your pods start up", clusterAccess.isOpenShift() ? "oc" : "kubectl"); } catch (KubernetesClientException e) { - KubernetesResourceUtil.handleKubernetesClientException(e, this.log); + KubernetesResourceUtil.handleKubernetesClientException(e, this.log, summaryEnabled); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } catch (Exception e) { - throw new MojoExecutionException(e.getMessage(), e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, e.getMessage(), () -> new MojoExecutionException(e.getMessage(), e)); } - } protected void applyEntities(final KubernetesClient kubernetes, String fileName, final Collection entities) throws InterruptedException { diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java index d4c3883674..bc3c1edcdb 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojo.java @@ -17,6 +17,7 @@ import java.io.IOException; import java.util.Collections; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.resource.helm.HelmConfig; import org.apache.maven.plugin.MojoExecutionException; @@ -65,7 +66,7 @@ public void executeInternal() throws MojoExecutionException { .build(); jkubeServiceHub.getHelmService().generateHelmCharts(helm); } catch (IOException exception) { - throw new MojoExecutionException(exception.getMessage()); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, exception.getMessage(), () -> new MojoExecutionException(exception.getMessage())); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java index b23962fb4b..254725ff71 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojo.java @@ -17,6 +17,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher; import static org.eclipse.jkube.kit.resource.helm.HelmServiceUtil.initHelmPushConfig; @@ -38,7 +39,7 @@ public void executeInternal() throws MojoExecutionException { jkubeServiceHub.getHelmService().uploadHelmChart(helm); } catch (Exception exp) { getKitLogger().error("Error performing helm push", exp); - throw new MojoExecutionException(exp.getMessage(), exp); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, exp.getMessage(), () -> new MojoExecutionException(exp.getMessage(), exp)); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/PushMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/PushMojo.java index bf4d03df23..93cc97e4e0 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/PushMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/PushMojo.java @@ -18,6 +18,7 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.eclipse.jkube.kit.common.util.SummaryUtil; /** * Uploads the built Docker images to a Docker registry @@ -58,7 +59,7 @@ public void executeInternal() throws MojoExecutionException { try { jkubeServiceHub.getBuildService().push(getResolvedImages(), retries, getRegistryConfig(pushRegistry), skipTag); } catch (Exception ex) { - throw new MojoExecutionException(ex.getMessage(), ex); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, ex.getMessage(), () -> new MojoExecutionException(ex.getMessage(), ex)); } } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java index 0ac9964699..d819ea469a 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java @@ -32,6 +32,7 @@ import org.eclipse.jkube.kit.common.util.MavenUtil; import org.eclipse.jkube.kit.common.util.ResourceClassifier; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.common.util.validator.ResourceValidator; import org.eclipse.jkube.kit.config.image.ImageConfiguration; import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy; @@ -219,7 +220,7 @@ public void executeInternal() throws MojoExecutionException, MojoFailureExceptio projectHelper.attachArtifact(project, this.resourceFileType.getArtifactType(), resourceClassifier.getValue(), artifact); } } catch (IOException e) { - throw new MojoExecutionException("Failed to generate kubernetes descriptor", e); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, e.getMessage(), () -> new MojoExecutionException("Failed to generate kubernetes descriptor", e)); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/UndeployMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/UndeployMojo.java index 8405f27e6f..eb39dd5bbb 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/UndeployMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/UndeployMojo.java @@ -19,6 +19,7 @@ import java.util.List; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.maven.plugin.mojo.ManifestProvider; import org.eclipse.jkube.maven.plugin.mojo.build.AbstractJKubeMojo; @@ -70,7 +71,7 @@ public final void executeInternal() throws MojoExecutionException { try { undeploy(); } catch (IOException ex) { - throw new MojoExecutionException(ex.getMessage(), ex); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, ex.getMessage(), () -> new MojoExecutionException(ex.getMessage(), ex)); } } diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java index 1909a1f26a..dcc9b49c2d 100644 --- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java +++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java @@ -28,6 +28,7 @@ import org.eclipse.jkube.kit.common.util.MavenUtil; import org.eclipse.jkube.kit.common.util.ResourceUtil; import org.eclipse.jkube.kit.common.JKubeConfiguration; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.resource.ProcessorConfig; import org.eclipse.jkube.kit.enricher.api.util.KubernetesResourceUtil; import org.eclipse.jkube.kit.profile.ProfileUtil; @@ -112,9 +113,11 @@ public void executeInternal() throws MojoExecutionException { context); } catch (KubernetesClientException ex) { - KubernetesResourceUtil.handleKubernetesClientException(ex, this.log); + KubernetesResourceUtil.handleKubernetesClientException(ex, this.log, summaryEnabled); } catch (Exception ex) { - throw new MojoExecutionException("An error has occurred while while trying to watch the resources", ex); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(summaryEnabled, + ex.getMessage(), + () -> new MojoExecutionException("An error has occurred while while trying to watch the resources", ex)); } } diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java index f95d922e7d..f49cbf4369 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java @@ -18,10 +18,14 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collections; import java.util.Properties; import io.fabric8.openshift.client.NamespacedOpenShiftClient; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.MojoExecution; import org.eclipse.jkube.kit.common.KitLogger; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.resource.ResourceConfig; import org.eclipse.jkube.kit.config.service.ApplyService; @@ -36,12 +40,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.mockito.MockedConstruction; +import org.mockito.MockedStatic; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mockConstruction; +import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.when; import static org.mockito.Mockito.withSettings; @@ -49,8 +55,11 @@ class ApplyMojoTest { private MockedConstruction jKubeServiceHubMockedConstruction; private MockedConstruction clusterAccessMockedConstruction; + private MockedStatic summaryUtilMockedStatic; private File kubernetesManifestFile; private MavenProject mavenProject; + private MavenSession mavenSession; + private MojoExecution mockedMojoExecution; private NamespacedOpenShiftClient defaultKubernetesClient; private String kubeConfigNamespace; @@ -66,15 +75,22 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { }); clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, context) -> when(mock.getNamespace()).thenAnswer(invocation -> kubeConfigNamespace)); + summaryUtilMockedStatic = mockStatic(SummaryUtil.class); kubernetesManifestFile = Files.createFile(temporaryFolder.resolve("kubernetes.yml")).toFile(); mavenProject = mock(MavenProject.class); + mavenSession = mock(MavenSession.class); + mockedMojoExecution = mock(MojoExecution.class); when(mavenProject.getProperties()).thenReturn(new Properties()); + when(mavenSession.getGoals()).thenReturn(Collections.singletonList("k8s:apply")); + when(mockedMojoExecution.getGoal()).thenReturn("k8s:apply"); defaultKubernetesClient = mock(NamespacedOpenShiftClient.class); when(defaultKubernetesClient.adapt(any())).thenReturn(defaultKubernetesClient); when(defaultKubernetesClient.getMasterUrl()).thenReturn(URI.create("https://www.example.com").toURL()); // @formatter:off applyMojo = new ApplyMojo() {{ project = mavenProject; + session = mavenSession; + mojoExecution = mockedMojoExecution; settings = mock(Settings.class); kubernetesManifest = kubernetesManifestFile; }}; @@ -85,6 +101,7 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { void tearDown() { clusterAccessMockedConstruction.close(); jKubeServiceHubMockedConstruction.close(); + summaryUtilMockedStatic.close(); mavenProject = null; applyMojo = null; } diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojoTest.java index 7380c37f47..96ae008915 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmMojoTest.java @@ -18,10 +18,14 @@ import java.util.Arrays; import java.util.Collections; import java.util.Properties; +import java.util.function.Supplier; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.MojoExecution; import org.apache.maven.settings.Settings; import org.eclipse.jkube.kit.common.Maintainer; import org.eclipse.jkube.kit.common.util.ResourceUtil; +import org.eclipse.jkube.kit.common.util.SummaryUtil; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; import org.eclipse.jkube.kit.resource.helm.HelmConfig; import org.eclipse.jkube.kit.resource.helm.HelmService; @@ -49,25 +53,36 @@ class HelmMojoTest { @Mocked private MavenProject mavenProject; @Mocked + private MojoExecution mojoExecution; + @Mocked + private MavenSession mavenSession; + @Mocked private JKubeServiceHub jKubeServiceHub; @Mocked private HelmService helmService; + @Mocked + private SummaryUtil summaryUtil; private HelmMojo helmMojo; @BeforeEach - void setUp() { + void setUp() throws Exception { helmMojo = new HelmMojo(); helmMojo.offline = true; helmMojo.project = mavenProject; + helmMojo.session = mavenSession; helmMojo.settings = new Settings(); helmMojo.jkubeServiceHub = jKubeServiceHub; + helmMojo.mojoExecution = mojoExecution; + helmMojo.summaryEnabled = false; // @formatter:off new Expectations() {{ jKubeServiceHub.getHelmService(); result = helmService; mavenProject.getProperties(); result = new Properties(); mavenProject.getBuild().getOutputDirectory(); result = "target/classes"; mavenProject.getBuild().getDirectory(); result = "target"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm"); + mojoExecution.getGoal(); result = "k8s:helm"; }}; // @formatter:on } @@ -134,6 +149,8 @@ void executeInternal_withNoConfigGenerateThrowsException_shouldRethrowWithMojoEx new Expectations() {{ helmService.generateHelmCharts(withNotNull()); result = new IOException("Exception is thrown"); + SummaryUtil.setFailureIfSummaryEnabledOrThrow(anyBoolean, anyString, (Supplier) any); + result = new MojoExecutionException("Exception is thrown"); }}; // formatter:on // When & Then diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojoTest.java index 7fd1885ef0..998693ebf7 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/HelmPushMojoTest.java @@ -13,9 +13,11 @@ */ package org.eclipse.jkube.maven.plugin.mojo.build; +import java.util.Collections; import java.util.HashMap; import java.util.Properties; +import org.apache.maven.execution.MavenSession; import org.eclipse.jkube.kit.common.RegistryServerConfiguration; import org.eclipse.jkube.kit.resource.helm.BadUploadException; import org.eclipse.jkube.kit.resource.helm.HelmConfig; @@ -53,6 +55,8 @@ class HelmPushMojoTest { @Mocked private SecDispatcher secDispatcher; @Mocked + private MavenSession mavenSession; + @Mocked private MojoExecution mojoExecution; @Mocked private MojoDescriptor mojoDescriptor; @@ -67,6 +71,7 @@ void setUp() throws Exception { helmPushMojo = new HelmPushMojo(); helmPushMojo.helm = new HelmConfig(); helmPushMojo.project = mavenProject; + helmPushMojo.session = mavenSession; helmPushMojo.settings = new Settings(); helmPushMojo.securityDispatcher = secDispatcher; helmPushMojo.mojoExecution = mojoExecution; @@ -98,6 +103,8 @@ void execute_withValidXMLConfig_shouldUpload() throws Exception { // @formatter:off new Expectations() {{ mavenProject.getVersion(); result = "1337-SNAPSHOT"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; }}; // @formatter:on // When @@ -116,6 +123,8 @@ void execute_withValidXMLConfigAndUploadError_shouldFail() throws Exception { // @formatter:off new Expectations() {{ mavenProject.getVersion(); result = "1337"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; helmService.uploadHelmChart(withNotNull()); result = new BadUploadException("Error uploading helm chart"); }}; @@ -136,6 +145,8 @@ void execute_withValidPropertiesConfig_shouldUpload() throws Exception { // @formatter:off new Expectations() {{ mavenProject.getVersion(); result = "1337-SNAPSHOT"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; }}; // @formatter:on // When @@ -159,6 +170,8 @@ void execute_withValidPropertiesAndXMLConfig_shouldGenerateWithPropertiesTakingP // @formatter:off new Expectations() {{ mavenProject.getVersion(); result = "1337-SNAPSHOT"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; }}; // @formatter:on // When @@ -181,6 +194,8 @@ void execute_withValidMavenSettings_shouldUpload() throws Exception { // @formatter:off new Expectations() {{ mavenProject.getVersion(); result = "1337-SNAPSHOT"; + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; }}; // @formatter:on // When @@ -201,6 +216,12 @@ void execute_withValidMavenSettings_shouldUpload() throws Exception { void execute_withSkip_shouldSkipExecution() throws Exception { // Given helmPushMojo.skip = true; + // @formatter:off + new Expectations() {{ + mavenSession.getGoals(); result = Collections.singletonList("k8s:helm-push"); + mojoExecution.getGoal(); result = "k8s:helm-push"; + }}; + // @formatter:on // When helmPushMojo.execute(); // Then diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojoTest.java index f3e18d705b..180edf46fd 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojoTest.java @@ -13,6 +13,7 @@ */ package org.eclipse.jkube.maven.plugin.mojo.build; +import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -47,6 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; @@ -69,10 +71,12 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { ImageConfigResolver mockedImageConfigResolver = mock(ImageConfigResolver.class, RETURNS_DEEP_STUBS); Properties properties = new Properties(); MavenProject mockedMavenProject = mock(MavenProject.class, RETURNS_DEEP_STUBS); + MavenSession mockedMavenSession = mock(MavenSession.class); mockedResourceService = mock(ResourceService.class, RETURNS_DEEP_STUBS); MojoExecution mockedMojoExecution = mock(MojoExecution.class, RETURNS_DEEP_STUBS); MojoDescriptor mockedMojoDescriptor = mock(MojoDescriptor.class, RETURNS_DEEP_STUBS); when(mockedMojoExecution.getMojoDescriptor()).thenReturn(mockedMojoDescriptor); + when(mockedMojoExecution.getGoal()).thenReturn("k8s:resource"); when(mockedMojoDescriptor.getFullGoalName()).thenReturn("k8s:resource"); defaultEnricherManagerMockedConstruction = mockConstruction(DefaultEnricherManager.class); JavaProject javaProject = JavaProject.builder() @@ -96,6 +100,7 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { this.resourceMojo.images = Collections.singletonList(imageConfiguration); this.resourceMojo.project = mockedMavenProject; this.resourceMojo.settings = mock(Settings.class, RETURNS_DEEP_STUBS); + this.resourceMojo.session = mockedMavenSession; this.resourceMojo.jkubeServiceHub = mockedJKubeServiceHub; this.resourceMojo.log = mock(KitLogger.class, RETURNS_DEEP_STUBS); this.resourceMojo.skipResourceValidation = true; @@ -107,6 +112,7 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { resourceMojo.mojoExecution = mockedMojoExecution; when(mockedMavenProject.getProperties()).thenReturn(properties); + when(mockedMavenSession.getGoals()).thenReturn(Collections.singletonList("k8s:resource")); when(mockedJKubeServiceHub.getConfiguration().getProject()).thenReturn(javaProject); when(mockedJKubeServiceHub.getConfiguration().getBasedir()).thenReturn(temporaryFolder.toFile()); when(mockedJKubeServiceHub.getResourceService()).thenReturn(mockedResourceService); diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/SkipGoalsTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/SkipGoalsTest.java index bbd5a26eec..93529258f4 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/SkipGoalsTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/SkipGoalsTest.java @@ -13,6 +13,7 @@ */ package org.eclipse.jkube.maven.plugin.mojo.build; +import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecution; import org.eclipse.jkube.kit.common.KitLogger; import org.junit.jupiter.api.BeforeEach; @@ -22,6 +23,8 @@ import org.mockito.Mock; import org.mockito.Spy; +import java.util.Collections; + import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -36,6 +39,9 @@ class SkipGoalsTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private MojoExecution mojoExecution; + @Mock + private MavenSession mavenSession; + @Spy @InjectMocks BuildMojo buildMojo; @@ -82,6 +88,7 @@ private void setupApplyGoal() throws Exception { doNothing().when(applyMojo).init(); doNothing().when(applyMojo).executeInternal(); when(mojoExecution.getMojoDescriptor().getFullGoalName()).thenReturn("k8s:apply"); + when(mavenSession.getGoals()).thenReturn(Collections.singletonList("k8s:apply")); } @Test diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java index 1c60ddfcc9..bb55185c8f 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java @@ -17,8 +17,11 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collections; import java.util.Properties; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.MojoExecution; import org.eclipse.jkube.kit.common.util.AnsiLogger; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; @@ -52,6 +55,8 @@ class DebugMojoTest { private MockedConstruction clusterAccessMockedConstruction; private File kubernetesManifestFile; private MavenProject mavenProject; + private MavenSession mavenSession; + private MojoExecution mockedMojoExecution; private DebugMojo debugMojo; @@ -66,10 +71,16 @@ void setUp(@TempDir Path temporaryFolder) throws IOException { clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class); kubernetesManifestFile = Files.createFile(temporaryFolder.resolve("kubernetes.yml")).toFile(); mavenProject = mock(MavenProject.class); + mavenSession = mock(MavenSession.class); + mockedMojoExecution = mock(MojoExecution.class); when(mavenProject.getProperties()).thenReturn(new Properties()); + when(mavenSession.getGoals()).thenReturn(Collections.singletonList("k8s:debug")); + when(mockedMojoExecution.getGoal()).thenReturn("k8s:debug"); // @formatter:off debugMojo = new DebugMojo() { { project = mavenProject; + session = mavenSession; + mojoExecution = mockedMojoExecution; settings = mock(Settings.class); kubernetesManifest = kubernetesManifestFile; }}; diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java index 5c18155c8e..7a831deae3 100644 --- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java +++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java @@ -15,10 +15,14 @@ import java.io.File; import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; import java.util.Properties; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.client.OpenShiftClient; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.MojoExecution; import org.eclipse.jkube.kit.config.access.ClusterAccess; import org.eclipse.jkube.kit.config.service.JKubeServiceHub; import org.eclipse.jkube.kit.config.service.PodLogService; @@ -52,7 +56,8 @@ class LogMojoTest { private MockedConstruction podLogServiceMockedConstruction; private File kubernetesManifestFile; private MavenProject mavenProject; - + private MavenSession mockedMavenSession; + private MojoExecution mockedMojoExecution; private LogMojo logMojo; @BeforeEach @@ -67,10 +72,16 @@ void setUp(@TempDir File temporaryFolder) throws IOException { podLogServiceMockedConstruction = mockConstruction(PodLogService.class); kubernetesManifestFile = File.createTempFile("kubernetes", ".yml", temporaryFolder); mavenProject = mock(MavenProject.class); + mockedMavenSession = mock(MavenSession.class); + mockedMojoExecution = mock(MojoExecution.class); when(mavenProject.getProperties()).thenReturn(new Properties()); + when(mockedMavenSession.getGoals()).thenReturn(Arrays.asList("k8s:log", "k8s:apply")); + when(mockedMojoExecution.getGoal()).thenReturn("k8s:log"); // @formatter:off logMojo = new LogMojo() { { project = mavenProject; + session = mockedMavenSession; + mojoExecution = mockedMojoExecution; settings = mock(Settings.class); kubernetesManifest = kubernetesManifestFile; }}; diff --git a/quickstarts/maven/docker-file-simple/pom.xml b/quickstarts/maven/docker-file-simple/pom.xml index 94c270ee08..ffa3a235a1 100644 --- a/quickstarts/maven/docker-file-simple/pom.xml +++ b/quickstarts/maven/docker-file-simple/pom.xml @@ -65,6 +65,11 @@ kubernetes-maven-plugin ${jkube.version} + + org.eclipse.jkube + openshift-maven-plugin + ${jkube.version} +