From 74d238059f932b97af60b5d761f2806579d423e4 Mon Sep 17 00:00:00 2001 From: stiv03 Date: Wed, 1 Oct 2025 13:45:28 +0300 Subject: [PATCH 1/4] add fallback if SERVICE_TO_UNBIND_BIND is null for undeploy --- ...eBindingUnbindingOperationBaseExecution.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java index 853fd94bbb..3e4081d808 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java @@ -8,6 +8,7 @@ import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClient; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudApplication; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudAsyncJob; +import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudServiceBinding; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudServiceInstance; import org.cloudfoundry.multiapps.controller.client.lib.domain.CloudServiceInstanceExtended; import org.cloudfoundry.multiapps.controller.process.Messages; @@ -40,14 +41,22 @@ protected Consumer getOnCompleteHandler(ProcessContext context) { @Override protected Consumer getOnErrorHandler(ProcessContext context) { CloudApplication app = context.getVariable(Variables.APP_TO_PROCESS); + CloudControllerClient client = context.getControllerClient(); + String serviceInstanceName = context.getVariable(Variables.SERVICE_TO_UNBIND_BIND); + if (serviceInstanceName == null) { + CloudServiceBinding serviceBinding = context.getVariable(Variables.SERVICE_BINDING_TO_DELETE); + if (serviceBinding != null) { + serviceInstanceName = client.getServiceInstanceName(serviceBinding.getServiceInstanceGuid()); + } + } - CloudControllerClient client = context.getControllerClient(); - CloudServiceInstance serviceInstance = client.getServiceInstance(serviceInstanceName, false); + String finalServiceInstanceName = serviceInstanceName; - return serviceBindingJob -> context.getStepLogger() - .error(buildErrorMessage(app, serviceInstance, serviceInstanceName, serviceBindingJob)); + CloudServiceInstance serviceInstance = (serviceInstanceName != null) ? client.getServiceInstance(serviceInstanceName, false) : null; + return serviceBindingJob -> context.getStepLogger() + .error(buildErrorMessage(app, serviceInstance, finalServiceInstanceName, serviceBindingJob)); } private String buildErrorMessage(CloudApplication app, CloudServiceInstance serviceInstance, String serviceInstanceName, From 9cb893bcd56b2c91beb0a17913bf98d275e0fbc5 Mon Sep 17 00:00:00 2001 From: stiv03 Date: Thu, 2 Oct 2025 21:38:15 +0300 Subject: [PATCH 2/4] fix comments --- ...ceBindingUnbindingOperationBaseExecution.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java index 3e4081d808..52aaf62738 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java @@ -42,7 +42,15 @@ protected Consumer getOnCompleteHandler(ProcessContext context) { protected Consumer getOnErrorHandler(ProcessContext context) { CloudApplication app = context.getVariable(Variables.APP_TO_PROCESS); CloudControllerClient client = context.getControllerClient(); + String serviceInstanceName = resolveServiceInstanceName(context, client); + CloudServiceInstance serviceInstance = serviceInstanceName != null ? client.getServiceInstance(serviceInstanceName, false) : null; + + return serviceBindingJob -> context.getStepLogger() + .error(buildErrorMessage(app, serviceInstance, serviceInstanceName, serviceBindingJob)); + } + + private String resolveServiceInstanceName(ProcessContext context, CloudControllerClient client) { String serviceInstanceName = context.getVariable(Variables.SERVICE_TO_UNBIND_BIND); if (serviceInstanceName == null) { CloudServiceBinding serviceBinding = context.getVariable(Variables.SERVICE_BINDING_TO_DELETE); @@ -50,13 +58,7 @@ protected Consumer getOnErrorHandler(ProcessContext context) { serviceInstanceName = client.getServiceInstanceName(serviceBinding.getServiceInstanceGuid()); } } - - String finalServiceInstanceName = serviceInstanceName; - - CloudServiceInstance serviceInstance = (serviceInstanceName != null) ? client.getServiceInstance(serviceInstanceName, false) : null; - - return serviceBindingJob -> context.getStepLogger() - .error(buildErrorMessage(app, serviceInstance, finalServiceInstanceName, serviceBindingJob)); + return serviceInstanceName; } private String buildErrorMessage(CloudApplication app, CloudServiceInstance serviceInstance, String serviceInstanceName, From ae84d5aa9e2c36babe4b463d7b4dd52fa152eb96 Mon Sep 17 00:00:00 2001 From: stiv03 Date: Fri, 3 Oct 2025 13:31:19 +0300 Subject: [PATCH 3/4] retriving serviceInstanceName from SERVICE_TO_DELETE to avoid unnecessary http call --- ...erviceBindingUnbindingOperationBaseExecution.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java index 52aaf62738..56c8a0066d 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java @@ -8,7 +8,6 @@ import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClient; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudApplication; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudAsyncJob; -import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudServiceBinding; import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudServiceInstance; import org.cloudfoundry.multiapps.controller.client.lib.domain.CloudServiceInstanceExtended; import org.cloudfoundry.multiapps.controller.process.Messages; @@ -42,20 +41,19 @@ protected Consumer getOnCompleteHandler(ProcessContext context) { protected Consumer getOnErrorHandler(ProcessContext context) { CloudApplication app = context.getVariable(Variables.APP_TO_PROCESS); CloudControllerClient client = context.getControllerClient(); - String serviceInstanceName = resolveServiceInstanceName(context, client); - + String serviceInstanceName = resolveServiceInstanceName(context); CloudServiceInstance serviceInstance = serviceInstanceName != null ? client.getServiceInstance(serviceInstanceName, false) : null; return serviceBindingJob -> context.getStepLogger() .error(buildErrorMessage(app, serviceInstance, serviceInstanceName, serviceBindingJob)); } - private String resolveServiceInstanceName(ProcessContext context, CloudControllerClient client) { + private String resolveServiceInstanceName(ProcessContext context) { String serviceInstanceName = context.getVariable(Variables.SERVICE_TO_UNBIND_BIND); if (serviceInstanceName == null) { - CloudServiceBinding serviceBinding = context.getVariable(Variables.SERVICE_BINDING_TO_DELETE); - if (serviceBinding != null) { - serviceInstanceName = client.getServiceInstanceName(serviceBinding.getServiceInstanceGuid()); + String serviceInstanceToDelete = context.getVariable(Variables.SERVICE_TO_DELETE); + if (serviceInstanceToDelete != null) { + serviceInstanceName = serviceInstanceToDelete; } } return serviceInstanceName; From 1ce5156d2456d3320342304eee5b70c128f49549 Mon Sep 17 00:00:00 2001 From: stiv03 Date: Fri, 3 Oct 2025 14:58:51 +0300 Subject: [PATCH 4/4] refactoring --- .../PollServiceBindingUnbindingOperationBaseExecution.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java index 56c8a0066d..cc7110f74f 100644 --- a/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java +++ b/multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingUnbindingOperationBaseExecution.java @@ -51,10 +51,7 @@ protected Consumer getOnErrorHandler(ProcessContext context) { private String resolveServiceInstanceName(ProcessContext context) { String serviceInstanceName = context.getVariable(Variables.SERVICE_TO_UNBIND_BIND); if (serviceInstanceName == null) { - String serviceInstanceToDelete = context.getVariable(Variables.SERVICE_TO_DELETE); - if (serviceInstanceToDelete != null) { - serviceInstanceName = serviceInstanceToDelete; - } + return context.getVariable(Variables.SERVICE_TO_DELETE); } return serviceInstanceName; }