org.cloudfoundry.multiapps.controller.process.steps.RemoveNewApplicationsSuffixStep Maven / Gradle / Ivy
package org.cloudfoundry.multiapps.controller.process.steps;
import java.util.List;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import org.cloudfoundry.multiapps.controller.core.model.BlueGreenApplicationNameSuffix;
import org.cloudfoundry.multiapps.controller.persistence.model.ConfigurationSubscription;
import org.cloudfoundry.multiapps.controller.persistence.services.ConfigurationSubscriptionService;
import org.cloudfoundry.multiapps.controller.process.Messages;
import org.cloudfoundry.multiapps.controller.process.variables.Variables;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import com.sap.cloudfoundry.client.facade.CloudControllerClient;
@Named("removeNewApplicationsSuffixStep")
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class RemoveNewApplicationsSuffixStep extends SyncFlowableStep {
@Inject
private ConfigurationSubscriptionService subscriptionService;
@Override
protected StepPhase executeStep(ProcessContext context) {
if (!context.getVariable(Variables.KEEP_ORIGINAL_APP_NAMES_AFTER_DEPLOY)) {
return StepPhase.DONE;
}
List appsToProcess = context.getVariable(Variables.APPS_TO_DEPLOY);
CloudControllerClient client = context.getControllerClient();
for (String appName : appsToProcess) {
String newName = BlueGreenApplicationNameSuffix.removeSuffix(appName);
getStepLogger().info(Messages.RENAMING_APPLICATION_0_TO_1, appName, newName);
client.rename(appName, newName);
}
String mtaId = context.getVariable(Variables.MTA_ID);
String spaceId = context.getVariable(Variables.SPACE_GUID);
updateConfigurationSubscribers(appsToProcess, mtaId, spaceId);
return StepPhase.DONE;
}
private void updateConfigurationSubscribers(List appsToProcess, String mtaId, String spaceId) {
List subscriptions = subscriptionService.createQuery()
.mtaId(mtaId)
.spaceId(spaceId)
.list();
for (ConfigurationSubscription subscription : subscriptions) {
if (appsToProcess.contains(subscription.getAppName())) {
String newAppName = BlueGreenApplicationNameSuffix.removeSuffix(subscription.getAppName());
getStepLogger().debug(Messages.UPDATING_CONFIGURATION_SUBSCRIPTION_0_WITH_NAME_1, subscription.getAppName(), newAppName);
updateConfigurationSubscription(subscription, newAppName);
}
}
}
private void updateConfigurationSubscription(ConfigurationSubscription subscription, String newAppName) {
ConfigurationSubscription newSubscription = createNewSubscription(subscription, newAppName);
subscriptionService.update(subscription, newSubscription);
}
private ConfigurationSubscription createNewSubscription(ConfigurationSubscription subscription, String newAppName) {
return new ConfigurationSubscription(subscription.getId(),
subscription.getMtaId(),
subscription.getSpaceId(),
newAppName,
subscription.getFilter(),
subscription.getModuleDto(),
subscription.getResourceDto(),
subscription.getModuleId(),
subscription.getResourceId());
}
@Override
protected String getStepErrorMessage(ProcessContext context) {
return Messages.ERROR_RENAMING_NEW_APPLICATIONS;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy