Skip to content

Commit ef849d9

Browse files
authored
Revert "remove idle suffix from bg deploy (#1697)" (#1765)
This reverts commit 9e41603.
1 parent 04e9266 commit ef849d9

File tree

12 files changed

+246
-182
lines changed

12 files changed

+246
-182
lines changed

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/Messages.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public final class Messages {
178178
public static final String THREAD_MONITOR_CACHE_TIMEOUT = "Flowable thread monitor cache timeout: {0} seconds";
179179
public static final String SPACE_DEVELOPERS_CACHE_TIME_IN_SECONDS = "Cache for list of space developers per SpaceGUID: {0} seconds";
180180
public static final String APP_SHUTDOWN_REQUEST = "Application with id:\"{0}\", instance id:\"{1}\", instance index:\"{2}\", is requested to shutdown. Timeout to wait before shutdown of Flowable job executor:\"{3}\" seconds.";
181-
public static final String APP_SUCCESSFULLY_SHUTDOWN = "Application with id:\"{0}\", instance id:\"{1}\", instance index:\"{2}\", is shutdown. Timeout to wait before shutdown of Flowable job executor:\"{3}\" seconds.";
181+
public static final String APP_SHUTDOWNED = "Application with id:\"{0}\", instance id:\"{1}\", instance index:\"{2}\", is shutdowned. Timeout to wait before shutdown of Flowable job executor:\"{3}\" seconds.";
182182
public static final String APP_SHUTDOWN_STATUS_MONITOR = "Monitor shutdown status of application with id:\"{0}\", instance id:\"{1}\", instance index:\"{2}\". Status:\"{3}\".";
183183
public static final String CONTROLLER_CLIENT_SSL_HANDSHAKE_TIMEOUT_IN_SECONDS = "Controller client SSL handshake timeout in seconds: {0}";
184184
public static final String CONTROLLER_CLIENT_CONNECT_TIMEOUT_IN_SECONDS = "Controller client connect timeout in seconds: {0}";

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/detect/AppSuffixDeterminer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public AppSuffixDeterminer(boolean keepOriginalNamesAfterDeploy, boolean isAfter
1010
this.isAfterResumePhase = isAfterResumePhase;
1111
}
1212

13-
public boolean shouldAppendIdleSuffix() {
13+
public boolean shouldAppendApplicationSuffix() {
1414
return keepOriginalNamesAfterDeploy && isAfterResumePhase;
1515
}
1616
}

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/v2/ApplicationCloudModelBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ private DeployedMtaApplication findDeployedApplication(String moduleName, Deploy
152152

153153
private String getApplicationName(Module module) {
154154
String applicationName = NameUtil.getApplicationName(module);
155-
if (appSuffixDeterminer.shouldAppendIdleSuffix()) {
155+
if (appSuffixDeterminer.shouldAppendApplicationSuffix()) {
156156
applicationName += BlueGreenApplicationNameSuffix.IDLE.asSuffix();
157157
}
158158
return applicationName;
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package org.cloudfoundry.multiapps.controller.core.cf.detect;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
35
import java.util.stream.Stream;
46

57
import org.junit.jupiter.params.ParameterizedTest;
68
import org.junit.jupiter.params.provider.Arguments;
79
import org.junit.jupiter.params.provider.MethodSource;
810

9-
import static org.junit.jupiter.api.Assertions.assertEquals;
10-
1111
class AppSuffixDeterminerTest {
1212

1313
static Stream<Arguments> testAppSuffixDeterminer() {
1414
return Stream.of(
15+
//@formatter:off
1516
// (1) Keep original app names is not set and the process is not after resume phase
1617
Arguments.of(false, false, false),
1718
// (2) Keep original app names is set but the process is not after resume phase
@@ -20,13 +21,14 @@ static Stream<Arguments> testAppSuffixDeterminer() {
2021
Arguments.of(false, true, false),
2122
// (4) Keep original app names is set and the process is after resume phase
2223
Arguments.of(true, true, true)
24+
//@formatter:on
2325
);
2426
}
2527

2628
@ParameterizedTest
2729
@MethodSource
2830
void testAppSuffixDeterminer(boolean keepOriginalNamesAfterDeploy, boolean isAfterResumePhase, boolean shouldAppendApplicationSuffix) {
2931
AppSuffixDeterminer appSuffixDeterminer = new AppSuffixDeterminer(keepOriginalNamesAfterDeploy, isAfterResumePhase);
30-
assertEquals(shouldAppendApplicationSuffix, appSuffixDeterminer.shouldAppendIdleSuffix());
32+
assertEquals(shouldAppendApplicationSuffix, appSuffixDeterminer.shouldAppendApplicationSuffix());
3133
}
3234
}

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ public class Messages {
161161
public static final String ERROR_MONITORING_OPERATIONS_OVER_SERVICES = "Error monitoring operations over services";
162162
public static final String ERROR_DELETING_REMAINING_FILE_PARTS = "Error deleting remaining file parts";
163163
public static final String ERROR_DETECTING_APPLICATIONS_TO_RENAME = "Error detecting applications to rename";
164+
public static final String ERROR_RENAMING_NEW_APPLICATIONS = "Error renaming new applications";
164165
public static final String ERROR_MONITORING_CREATION_OR_UPDATE_OF_SERVICES = "Error monitoring creation or update of services";
165166
public static final String ERROR_MONITORING_DELETION_OF_SERVICES = "Error monitoring deletion of services";
166167
public static final String SERVICE_IS_ALREADY_DELETED = "Service \"{0}\" is already deleted";

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/CreateOrUpdateAppStep.java

Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClient;
1919
import org.cloudfoundry.multiapps.controller.client.facade.CloudCredentials;
2020
import org.cloudfoundry.multiapps.controller.client.facade.domain.CloudApplication;
21-
import org.cloudfoundry.multiapps.controller.client.facade.domain.ImmutableCloudApplication;
2221
import org.cloudfoundry.multiapps.controller.client.facade.domain.ImmutableStaging;
2322
import org.cloudfoundry.multiapps.controller.client.facade.domain.Staging;
2423
import org.cloudfoundry.multiapps.controller.client.facade.dto.ApplicationToCreateDto;
@@ -29,11 +28,8 @@
2928
import org.cloudfoundry.multiapps.controller.core.cf.clients.AppBoundServiceInstanceNamesGetter;
3029
import org.cloudfoundry.multiapps.controller.core.cf.clients.WebClientFactory;
3130
import org.cloudfoundry.multiapps.controller.core.helpers.ApplicationFileDigestDetector;
32-
import org.cloudfoundry.multiapps.controller.core.model.BlueGreenApplicationNameSuffix;
3331
import org.cloudfoundry.multiapps.controller.core.security.token.TokenService;
3432
import org.cloudfoundry.multiapps.controller.core.util.ApplicationConfiguration;
35-
import org.cloudfoundry.multiapps.controller.persistence.model.ConfigurationSubscription;
36-
import org.cloudfoundry.multiapps.controller.persistence.services.ConfigurationSubscriptionService;
3733
import org.cloudfoundry.multiapps.controller.persistence.services.FileStorageException;
3834
import org.cloudfoundry.multiapps.controller.process.Messages;
3935
import org.cloudfoundry.multiapps.controller.process.util.ApplicationAttributeUpdater;
@@ -63,8 +59,6 @@ public class CreateOrUpdateAppStep extends SyncFlowableStep {
6359
private WebClientFactory webClientFactory;
6460
@Inject
6561
private ApplicationConfiguration configuration;
66-
@Inject
67-
private ConfigurationSubscriptionService subscriptionService;
6862

6963
@Override
7064
protected StepPhase executeStep(ProcessContext context) throws FileStorageException {
@@ -100,9 +94,7 @@ protected AppBoundServiceInstanceNamesGetter getAppBoundServiceInstanceNamesGett
10094
return new AppBoundServiceInstanceNamesGetter(configuration, webClientFactory, credentials, correlationId);
10195
}
10296

103-
private StepFlowHandler createStepFlowHandler(ProcessContext context,
104-
CloudControllerClient client,
105-
CloudApplicationExtended app,
97+
private StepFlowHandler createStepFlowHandler(ProcessContext context, CloudControllerClient client, CloudApplicationExtended app,
10698
CloudApplication existingApp) {
10799
if (existingApp == null) {
108100
return new CreateAppFlowHandler(context, client, app);
@@ -220,9 +212,7 @@ private class UpdateAppFlowHandler extends StepFlowHandler {
220212

221213
final CloudApplication existingApp;
222214

223-
public UpdateAppFlowHandler(ProcessContext context,
224-
CloudControllerClient client,
225-
CloudApplicationExtended app,
215+
public UpdateAppFlowHandler(ProcessContext context, CloudControllerClient client, CloudApplicationExtended app,
226216
CloudApplication existingApp) {
227217
super(context, client, app);
228218
this.existingApp = existingApp;
@@ -240,9 +230,7 @@ public void handleApplicationAttributes() {
240230

241231
reportApplicationUpdateStatus(app, arePropertiesChanged);
242232
context.setVariable(Variables.VCAP_APP_PROPERTIES_CHANGED, arePropertiesChanged);
243-
244233
updateApplicationEnvironment();
245-
updateApplicationName();
246234
}
247235

248236
private void updateApplicationEnvironment() {
@@ -290,31 +278,6 @@ private UpdateStrategy getEnvUpdateStrategy() {
290278
.shouldKeepExistingEnv() ? UpdateStrategy.MERGE : UpdateStrategy.REPLACE;
291279
}
292280

293-
public void updateApplicationName() {
294-
boolean processIsBlueGreenWithIdleSuffix = StepsUtil.getAppSuffixDeterminer(context)
295-
.shouldAppendIdleSuffix();
296-
if (!processIsBlueGreenWithIdleSuffix) {
297-
return;
298-
}
299-
300-
String oldName = existingApp.getName();
301-
String newName = BlueGreenApplicationNameSuffix.removeSuffix(oldName);
302-
if (oldName.equals(newName)) {
303-
getStepLogger().info(Messages.THE_DETECTED_APPLICATION_HAS_THE_SAME_NAME_AS_THE_NEW_ONE);
304-
return;
305-
}
306-
307-
getStepLogger().info(Messages.RENAMING_APPLICATION_0_TO_1, oldName, newName);
308-
client.rename(oldName, newName);
309-
310-
context.setVariable(Variables.EXISTING_APP, ImmutableCloudApplication.copyOf(existingApp)
311-
.withName(newName));
312-
context.setVariable(Variables.APP_TO_PROCESS, ImmutableCloudApplicationExtended.copyOf(app)
313-
.withName(newName));
314-
315-
updateConfigurationSubscribers(oldName, newName);
316-
}
317-
318281
@Override
319282
public void handleApplicationServices() {
320283
if (context.getVariable(Variables.SHOULD_SKIP_SERVICE_REBINDING)) {
@@ -334,40 +297,6 @@ public void printStepEndMessage() {
334297
getStepLogger().debug(Messages.APP_UPDATED, app.getName());
335298
}
336299

337-
private void updateConfigurationSubscribers(String oldAppName, String newAppName) {
338-
String mtaId = context.getVariable(Variables.MTA_ID);
339-
String spaceGuid = context.getVariable(Variables.SPACE_GUID);
340-
341-
List<ConfigurationSubscription> subscriptions = subscriptionService.createQuery()
342-
.mtaId(mtaId)
343-
.spaceId(spaceGuid)
344-
.list();
345-
for (ConfigurationSubscription subscription : subscriptions) {
346-
if (oldAppName.equals(subscription.getAppName())) {
347-
getStepLogger().debug(Messages.UPDATING_CONFIGURATION_SUBSCRIPTION_0_WITH_NAME_1, subscription.getAppName(),
348-
newAppName);
349-
updateConfigurationSubscription(subscription, newAppName);
350-
}
351-
}
352-
}
353-
354-
private void updateConfigurationSubscription(ConfigurationSubscription subscription, String newAppName) {
355-
ConfigurationSubscription newSubscription = createNewSubscription(subscription, newAppName);
356-
subscriptionService.update(subscription, newSubscription);
357-
}
358-
359-
private ConfigurationSubscription createNewSubscription(ConfigurationSubscription subscription, String newAppName) {
360-
return new ConfigurationSubscription(subscription.getId(),
361-
subscription.getMtaId(),
362-
subscription.getSpaceId(),
363-
newAppName,
364-
subscription.getFilter(),
365-
subscription.getModuleDto(),
366-
subscription.getResourceDto(),
367-
subscription.getModuleId(),
368-
subscription.getResourceId());
369-
}
370-
371300
private List<String> getMtaAndExistingServices() {
372301
var serviceNamesGetter = getAppBoundServiceInstanceNamesGetter(context);
373302
return Stream.of(app.getServices(), serviceNamesGetter.getServiceInstanceNamesBoundToApp(existingApp.getGuid()))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.cloudfoundry.multiapps.controller.process.steps;
2+
3+
import java.util.List;
4+
5+
import jakarta.inject.Inject;
6+
import jakarta.inject.Named;
7+
import org.cloudfoundry.multiapps.controller.client.facade.CloudControllerClient;
8+
import org.cloudfoundry.multiapps.controller.core.model.BlueGreenApplicationNameSuffix;
9+
import org.cloudfoundry.multiapps.controller.persistence.model.ConfigurationSubscription;
10+
import org.cloudfoundry.multiapps.controller.persistence.services.ConfigurationSubscriptionService;
11+
import org.cloudfoundry.multiapps.controller.process.Messages;
12+
import org.cloudfoundry.multiapps.controller.process.variables.Variables;
13+
import org.springframework.beans.factory.config.BeanDefinition;
14+
import org.springframework.context.annotation.Scope;
15+
16+
@Named("removeNewApplicationsSuffixStep")
17+
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
18+
public class RemoveNewApplicationsSuffixStep extends SyncFlowableStep {
19+
20+
@Inject
21+
private ConfigurationSubscriptionService subscriptionService;
22+
23+
@Override
24+
protected StepPhase executeStep(ProcessContext context) {
25+
if (!context.getVariable(Variables.KEEP_ORIGINAL_APP_NAMES_AFTER_DEPLOY)) {
26+
return StepPhase.DONE;
27+
}
28+
29+
List<String> appsToProcess = context.getVariable(Variables.APPS_TO_DEPLOY);
30+
CloudControllerClient client = context.getControllerClient();
31+
32+
for (String appName : appsToProcess) {
33+
String newName = BlueGreenApplicationNameSuffix.removeSuffix(appName);
34+
getStepLogger().info(Messages.RENAMING_APPLICATION_0_TO_1, appName, newName);
35+
client.rename(appName, newName);
36+
}
37+
38+
String mtaId = context.getVariable(Variables.MTA_ID);
39+
String spaceId = context.getVariable(Variables.SPACE_GUID);
40+
updateConfigurationSubscribers(appsToProcess, mtaId, spaceId);
41+
42+
return StepPhase.DONE;
43+
}
44+
45+
private void updateConfigurationSubscribers(List<String> appsToProcess, String mtaId, String spaceId) {
46+
List<ConfigurationSubscription> subscriptions = subscriptionService.createQuery()
47+
.mtaId(mtaId)
48+
.spaceId(spaceId)
49+
.list();
50+
for (ConfigurationSubscription subscription : subscriptions) {
51+
if (appsToProcess.contains(subscription.getAppName())) {
52+
String newAppName = BlueGreenApplicationNameSuffix.removeSuffix(subscription.getAppName());
53+
getStepLogger().debug(Messages.UPDATING_CONFIGURATION_SUBSCRIPTION_0_WITH_NAME_1, subscription.getAppName(), newAppName);
54+
updateConfigurationSubscription(subscription, newAppName);
55+
}
56+
}
57+
}
58+
59+
private void updateConfigurationSubscription(ConfigurationSubscription subscription, String newAppName) {
60+
ConfigurationSubscription newSubscription = createNewSubscription(subscription, newAppName);
61+
subscriptionService.update(subscription, newSubscription);
62+
}
63+
64+
private ConfigurationSubscription createNewSubscription(ConfigurationSubscription subscription, String newAppName) {
65+
return new ConfigurationSubscription(subscription.getId(), subscription.getMtaId(), subscription.getSpaceId(), newAppName,
66+
subscription.getFilter(), subscription.getModuleDto(), subscription.getResourceDto(),
67+
subscription.getModuleId(), subscription.getResourceId());
68+
}
69+
70+
@Override
71+
protected String getStepErrorMessage(ProcessContext context) {
72+
return Messages.ERROR_RENAMING_NEW_APPLICATIONS;
73+
}
74+
75+
}

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/StepsUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ static ApplicationCloudModelBuilder getApplicationCloudModelBuilder(ProcessConte
216216
shouldApplyIncrementalInstancesUpdate(context));
217217
}
218218

219-
public static AppSuffixDeterminer getAppSuffixDeterminer(ProcessContext context) {
219+
static AppSuffixDeterminer getAppSuffixDeterminer(ProcessContext context) {
220220
boolean keepOriginalNamesAfterDeploy = context.getVariable(Variables.KEEP_ORIGINAL_APP_NAMES_AFTER_DEPLOY);
221221
boolean isAfterResumePhase = context.getVariable(Variables.PHASE) == Phase.AFTER_RESUME;
222222
return new AppSuffixDeterminer(keepOriginalNamesAfterDeploy, isAfterResumePhase);

0 commit comments

Comments
 (0)