Skip to content

Commit

Permalink
refactor : Use SummaryService as injected object rather than static util
Browse files Browse the repository at this point in the history
Signed-off-by: Rohan Kumar <rohaan@redhat.com>
  • Loading branch information
rohanKanojia committed Oct 19, 2022
1 parent 7539e4c commit bfe7405
Show file tree
Hide file tree
Showing 130 changed files with 720 additions and 517 deletions.
Expand Up @@ -18,6 +18,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;

import io.fabric8.kubernetes.client.KubernetesClient;
import org.eclipse.jkube.generator.api.GeneratorContext;
Expand All @@ -30,7 +31,6 @@
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;
Expand Down Expand Up @@ -67,16 +67,36 @@ protected AbstractJKubeTask(Class<? extends KubernetesExtension> extensionClass)

@TaskAction
public final void runTask() {
init();
if (shouldSkip()) {
try {
init();
if (shouldSkip()) {
kitLogger.info("`%s` task is skipped.", this.getName());
return;
}
run();
} finally {
printSummaryIfLastExecutingTask();
}
run();
}


protected void handleExceptionAndSummary(Exception exception, Supplier<RuntimeException> exceptionSupplier) {
jKubeServiceHub.getSummaryService().setFailureAndCause(exception.getMessage());
printSummary();
throw exceptionSupplier.get();
}

protected void printSummaryIfLastExecutingTask() {
String lastExecutingTask = GradleUtil.getLastExecutingTask(getProject(), getTaskPrioritiesMap());
if (lastExecutingTask != null && lastExecutingTask.equals(getName())) {
SummaryUtil.printSummary(kubernetesExtension.javaProject.getBaseDirectory(), kubernetesExtension.getSummaryEnabledOrDefault());
SummaryUtil.clear();
printSummary();
}
}

protected void printSummary() {
if (jKubeServiceHub != null) {
jKubeServiceHub.getSummaryService().printSummary(kubernetesExtension.javaProject.getBaseDirectory());
jKubeServiceHub.getSummaryService().clear();
}
}

Expand All @@ -89,8 +109,7 @@ private void init() {
jKubeServiceHub = initJKubeServiceHubBuilder().build();
kubernetesExtension.resources = updateResourceConfigNamespace(kubernetesExtension.getNamespaceOrNull(), kubernetesExtension.resources);
ImageConfigResolver imageConfigResolver = new ImageConfigResolver();
SummaryUtil.initSummary(kubernetesExtension.javaProject.getBuildDirectory(), kitLogger);
SummaryUtil.setSuccessful(true);
jKubeServiceHub.getSummaryService().setSuccessful(true);
try {
resolvedImages = resolveImages(imageConfigResolver);
final JKubeEnricherContext context = JKubeEnricherContext.builder()
Expand All @@ -103,6 +122,7 @@ private void init() {
.resources(kubernetesExtension.resources)
.log(kitLogger)
.jKubeBuildStrategy(kubernetesExtension.getBuildStrategyOrDefault())
.summaryService(jKubeServiceHub.getSummaryService())
.build();
final List<String> extraClasspathElements = kubernetesExtension.getUseProjectClassPathOrDefault() ?
kubernetesExtension.javaProject.getCompileClassPathElements() : Collections.emptyList();
Expand All @@ -123,7 +143,7 @@ public KubernetesExtension getExtension() {
}

private List<ImageConfiguration> customizeConfig(List<ImageConfiguration> configs) {
return GeneratorManager.generate(configs, initGeneratorContextBuilder().build(), false);
return GeneratorManager.generate(configs, initGeneratorContextBuilder().build(), false, jKubeServiceHub.getSummaryService());
}

private boolean isAnsiEnabled() {
Expand Down Expand Up @@ -153,6 +173,7 @@ protected JKubeServiceHub.JKubeServiceHubBuilder initJKubeServiceHubBuilder() {
.build())
.clusterAccess(clusterAccess)
.offline(kubernetesExtension.getOfflineOrDefault())
.summaryEnabled(kubernetesExtension.getSummaryEnabledOrDefault())
.platformMode(kubernetesExtension.getRuntimeMode());
}

Expand Down
Expand Up @@ -22,7 +22,6 @@
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;

Expand Down Expand Up @@ -63,15 +62,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, kubernetesExtension.getSummaryEnabledOrDefault());
IllegalStateException illegalStateException = KubernetesResourceUtil.handleKubernetesClientException(e, kitLogger, jKubeServiceHub.getSummaryService());
printSummary();
throw illegalStateException;
} catch (IOException ioException) {
kitLogger.error("Error in loading Kubernetes Manifests ", ioException);
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(), ioException.getMessage(), () -> new IllegalStateException(ioException));
handleExceptionAndSummary(ioException, () -> new IllegalStateException(ioException));
} catch (InterruptedException interruptedException) {
Thread.currentThread().interrupt();
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
interruptedException.getMessage(),
() -> new IllegalStateException(interruptedException.getMessage(), interruptedException));
handleExceptionAndSummary(interruptedException, () -> new IllegalStateException(interruptedException.getMessage(), interruptedException));
}
}

Expand Down
Expand Up @@ -17,7 +17,6 @@

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;
Expand Down Expand Up @@ -66,8 +65,7 @@ public void run() {
jKubeServiceHub.getBuildService().build(resolvedImages.toArray(new ImageConfiguration[0]));
} catch (JKubeServiceException | IOException e) {
kitLogger.error(e.getMessage());
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
e.getMessage(), () -> new GradleException(e.getMessage(), e));
handleExceptionAndSummary(e, () -> new GradleException(e.getMessage(), e));
}
}

Expand Down
Expand Up @@ -24,7 +24,6 @@

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 {
Expand All @@ -46,9 +45,7 @@ public void run() {
"" + kubernetesExtension.getLocalDebugPortOrDefault(), kubernetesExtension.getDebugSuspendOrDefault(),
createLogger("[[Y]][W][[Y]] [[s]]"));
} catch (IOException ex) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
ex.getMessage(),
() -> new GradleException("Failure in debug task", ex));
throw new GradleException("Failure in debug task", ex);
}
}
}
Expand Up @@ -14,7 +14,6 @@
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;
Expand Down Expand Up @@ -42,9 +41,7 @@ public void run() {
jKubeServiceHub.getHelmService().uploadHelmChart(helm);
} catch (Exception exp) {
kitLogger.error("Error performing helm push", exp);
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
exp.getMessage(),
() -> new IllegalStateException(exp.getMessage(), exp));
handleExceptionAndSummary(exp, () -> new IllegalStateException(exp.getMessage(), exp));
}
}
}
Expand Up @@ -14,7 +14,6 @@
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;
Expand Down Expand Up @@ -42,9 +41,7 @@ public void run() {
kubernetesExtension.helm).build();
jKubeServiceHub.getHelmService().generateHelmCharts(helm);
} catch (IOException exception) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
exception.getMessage(),
() -> new IllegalStateException(exception.getMessage(), exception));
handleExceptionAndSummary(exception, () -> new IllegalStateException(exception.getMessage(), exception));
}
}

Expand Down
Expand Up @@ -20,7 +20,6 @@

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;
Expand Down Expand Up @@ -51,9 +50,7 @@ public void run() {
null,
true);
} catch (IOException exception) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
exception.getMessage(),
() -> new GradleException("Failure in getting logs", exception));
throw new GradleException("Failure in getting logs", exception);
}
}

Expand Down
Expand Up @@ -16,7 +16,6 @@
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;
Expand Down Expand Up @@ -45,9 +44,7 @@ public void run() {
jKubeServiceHub.getBuildService()
.push(resolvedImages, kubernetesExtension.getPushRetriesOrDefault(), initRegistryConfig(), kubernetesExtension.getSkipTagOrDefault());
} catch (JKubeServiceException e) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
e.getMessage(),
() -> new IllegalStateException("Error in pushing image: " + e.getMessage(), e));
handleExceptionAndSummary(e, () -> new IllegalStateException("Error in pushing image: " + e.getMessage(), e));
}
}

Expand Down
Expand Up @@ -19,7 +19,6 @@
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;
Expand Down Expand Up @@ -89,13 +88,11 @@ public void run() {
ResourceClassifier resourceClassifier = kubernetesExtension.getResourceClassifier();
KubernetesList resourceList = jKubeServiceHub.getResourceService().generateResources(kubernetesExtension.getPlatformMode(), enricherManager, kitLogger);
final File resourceClassifierDir = new File(kubernetesExtension.getResourceTargetDirectoryOrDefault(), resourceClassifier.getValue());
jKubeServiceHub.getResourceService().writeResources(resourceList, resourceClassifier, kitLogger);
jKubeServiceHub.getResourceService().writeResources(resourceList, resourceClassifier, kitLogger, jKubeServiceHub.getSummaryService());
validateIfRequired(resourceClassifierDir, resourceClassifier);
}
} catch (IOException e) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
e.getMessage(),
() -> new IllegalStateException("Failed to generate kubernetes descriptor", e));
handleExceptionAndSummary(e, () -> new IllegalStateException("Failed to generate kubernetes descriptor", e));
}
}

Expand Down
Expand Up @@ -14,7 +14,6 @@
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;
Expand Down Expand Up @@ -45,9 +44,7 @@ public void run() {
jKubeServiceHub.getUndeployService()
.undeploy(environmentResourceDirs, resources, findManifestsToUndeploy().toArray(new File[0]));
} catch (IOException e) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
e.getMessage(),
() -> new IllegalStateException(e.getMessage(), e));
handleExceptionAndSummary(e, () -> new IllegalStateException(e.getMessage(), e));
}
}

Expand Down
Expand Up @@ -23,7 +23,6 @@
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;
Expand Down Expand Up @@ -69,11 +68,11 @@ public void run() {
resources,
context);
} catch (KubernetesClientException kubernetesClientException) {
KubernetesResourceUtil.handleKubernetesClientException(kubernetesClientException, kitLogger, kubernetesExtension.getSummaryEnabledOrDefault());
IllegalStateException illegalStateException = KubernetesResourceUtil.handleKubernetesClientException(kubernetesClientException, kitLogger, jKubeServiceHub.getSummaryService());
printSummary();
throw illegalStateException;
} catch (Exception ioException) {
SummaryUtil.setFailureIfSummaryEnabledOrThrow(kubernetesExtension.getSummaryEnabledOrDefault(),
ioException.getMessage(),
() -> new IllegalStateException("An error has occurred while while trying to watch the resources", ioException));
handleExceptionAndSummary(ioException, () -> new IllegalStateException("An error has occurred while while trying to watch the resources", ioException));
}
}
}
Expand Down
Expand Up @@ -17,6 +17,7 @@
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
Expand All @@ -31,6 +32,7 @@

import org.eclipse.jkube.kit.common.JavaProject;

import org.gradle.StartParameter;
import org.gradle.api.Project;
import org.gradle.api.UnknownDomainObjectException;
import org.gradle.api.artifacts.Configuration;
Expand All @@ -41,6 +43,7 @@
import org.gradle.api.artifacts.result.ResolvedDependencyResult;
import org.gradle.api.internal.plugins.DefaultPluginContainer;
import org.gradle.api.internal.provider.DefaultProvider;
import org.gradle.api.invocation.Gradle;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.internal.deprecation.DeprecatableConfiguration;
import org.junit.Before;
Expand Down Expand Up @@ -320,6 +323,35 @@ public void canBeResolved_DeprecatedAndNullResolutionAlternativesAndResolvable_s
assertThat(result).isTrue();
}

@Test
public void getLastExecutingTask_whenTasksReturnedEmpty_shouldReturnNull() {
// Given + When
String task = GradleUtil.getLastExecutingTask(project, Collections.emptyMap());

// Then
assertThat(task).isNull();
}

@Test
public void getLastExecutingTask_whenTasksReturnsValidList_shouldReturnLastExecutingTask() {
// Given
Gradle gradle = mock(Gradle.class);
StartParameter startParameter = mock(StartParameter.class);
when(startParameter.getTaskNames()).thenReturn(Arrays.asList("k8sBuild", "k8sResource", "k8sApply"));
when(gradle.getStartParameter()).thenReturn(startParameter);
when(project.getGradle()).thenReturn(gradle);
Map<String, Integer> taskPrioritiesMap = new HashMap<>();
taskPrioritiesMap.put("k8sBuild", 1);
taskPrioritiesMap.put("k8sResource", 1);
taskPrioritiesMap.put("k8sApply", 2);

// When
String task = GradleUtil.getLastExecutingTask(project, taskPrioritiesMap);

// Then
assertThat(task).isEqualTo("k8sApply");
}

private static Function<String[], Configuration> configurationDependencyMock() {
return s -> {
final Configuration c = mock(Configuration.class, RETURNS_DEEP_STUBS);
Expand Down
Expand Up @@ -41,9 +41,9 @@
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.archive.ArchiveCompression;
import org.eclipse.jkube.kit.common.archive.JKubeTarArchiver;
import org.eclipse.jkube.kit.common.service.SummaryService;
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;
Expand Down Expand Up @@ -95,12 +95,13 @@ public static AssemblyManager getInstance() {
* @param buildConfig configuration for how to build the image
* @param log KitLogger used to display warning if permissions are to be normalized
* @param finalCustomizer finalCustomizer to be applied to the tar archive
* @param summaryService {@link SummaryService}
* @return file holding the path to the created assembly tar file
* @throws IOException IO exception
*/
public File createDockerTarArchive(
String imageName, final JKubeConfiguration configuration, final BuildConfiguration buildConfig, KitLogger log,
ArchiverCustomizer finalCustomizer) throws IOException {
ArchiverCustomizer finalCustomizer, SummaryService summaryService) throws IOException {

final BuildDirs buildDirs = createBuildDirs(imageName, configuration);
final List<ArchiverCustomizer> archiveCustomizers = new ArrayList<>();
Expand All @@ -110,7 +111,7 @@ public File createDockerTarArchive(

try {
if (buildConfig.isDockerFileMode()) {
SummaryUtil.setDockerFileImageSummary(imageName, buildConfig.getDockerFileFile().getAbsolutePath());
summaryService.setDockerFileImageSummary(imageName, buildConfig.getDockerFileFile().getAbsolutePath());
createDockerTarArchiveForDockerFile(buildConfig, assemblyConfig, configuration, buildDirs, log, archiveCustomizers);
} else {
createAssemblyArchive(assemblyConfig, configuration, buildDirs, buildConfig.getCompression(), layers);
Expand Down

0 comments on commit bfe7405

Please sign in to comment.