From 85706a8ddd460b86eb6646a69a8614ce764e8f92 Mon Sep 17 00:00:00 2001 From: Yavor16 Date: Wed, 12 Aug 2026 15:05:11 +0300 Subject: [PATCH] Add resource active check for the CLS configuration --- ...lectCloudLoggingServiceParametersStep.java | 8 +++- ...CloudLoggingServiceParametersStepTest.java | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStep.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStep.java index 603d37b59c..f598a3c63e 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStep.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStep.java @@ -146,7 +146,7 @@ private boolean isCloudLoggingEnabled(DeploymentDescriptor deploymentDescriptor) .isEmpty() && deploymentDescriptor.getResources() .stream() - .anyMatch(CollectCloudLoggingServiceParametersStep::isCloudLoggingServiceResource); + .anyMatch(CollectCloudLoggingServiceParametersStep::isActiveCloudLoggingServiceResource); } protected LoggingConfiguration createLoggingServiceConfiguration(ProcessContext context, @@ -179,11 +179,15 @@ private void updateLoggingConfiguration(ProcessContext context, LoggingConfigura private Resource findCloudLoggingServiceResource(List resources) { return resources.stream() - .filter(CollectCloudLoggingServiceParametersStep::isCloudLoggingServiceResource) + .filter(CollectCloudLoggingServiceParametersStep::isActiveCloudLoggingServiceResource) .findFirst() .get(); } + private static boolean isActiveCloudLoggingServiceResource(Resource resource) { + return isCloudLoggingServiceResource(resource) && resource.isActive(); + } + private static boolean isCloudLoggingServiceResource(Resource resource) { ResourceType resourceType = CloudModelBuilderUtil.getResourceType(resource); return ResourceType.CLOUD_LOGGING_SERVICE.equals(resourceType); diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStepTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStepTest.java index 45ff919ad4..30f85c2fc1 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStepTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/CollectCloudLoggingServiceParametersStepTest.java @@ -242,6 +242,33 @@ void deploy_cloudLoggingResource_noUnsentEntries_doesNotForward() throws FileSto verify(operationLogsExporter, never()).sendLogsToCloudLoggingService(any(), Mockito. any()); } + @Test + void deploy_inactiveCloudLoggingResource_noExistingConfig_finishesWithoutSideEffects() { + prepareDeployContext(descriptorWithInactiveCloudLogging()); + + step.execute(execution); + + assertStepFinishedSuccessfully(); + assertNull(context.getVariable(Variables.EXTERNAL_LOGGING_SERVICE_CONFIGURATION)); + verify(loggingConfigurationQuery, never()).delete(); + verify(auditLog, never()).logDeleteLoggingConfiguration(any(), any(), any()); + verify(unsentProcessLogsProvider, never()).getUnsentProcessLogs(any()); + } + + @Test + void deploy_inactiveCloudLoggingResource_existingConfig_deletesExisting() { + LoggingConfiguration existing = buildConfig(); + stubExistingConfig(existing); + prepareDeployContext(descriptorWithInactiveCloudLogging()); + + step.execute(execution); + + assertStepFinishedSuccessfully(); + assertNull(context.getVariable(Variables.EXTERNAL_LOGGING_SERVICE_CONFIGURATION)); + verify(auditLog).logDeleteLoggingConfiguration(USER_NAME, SPACE_GUID, existing); + verify(loggingConfigurationQuery).delete(); + } + private void prepareDeployContext(DeploymentDescriptor descriptor) { when(processTypeParser.getProcessType(any())).thenReturn(ProcessType.DEPLOY); context.setVariable(Variables.DEPLOYMENT_DESCRIPTOR, descriptor); @@ -256,6 +283,16 @@ private static DeploymentDescriptor descriptorWithCloudLogging() { CLOUD_LOGGING_TYPE_PARAMETER)))); } + private static DeploymentDescriptor descriptorWithInactiveCloudLogging() { + return DeploymentDescriptor.createV3() + .setResources(List.of(Resource.createV3() + .setName("my-cls") + .setType(CLOUD_LOGGING_RESOURCE_TYPE) + .setActive(false) + .setParameters(Map.of(SupportedParameters.TYPE, + CLOUD_LOGGING_TYPE_PARAMETER)))); + } + private static DeploymentDescriptor descriptorWithoutCloudLogging() { return DeploymentDescriptor.createV3() .setResources(List.of(Resource.createV3()