Skip to content

Commit 20d5edd

Browse files
committed
Fixed bug
1 parent 5fd41eb commit 20d5edd

File tree

10 files changed

+78
-15
lines changed

10 files changed

+78
-15
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,11 @@ public final class Messages {
194194
public static final String LIST_OPERATION_ACTIONS_AUDIT_LOG_MESSAGE = "List operation action in space with id: {0}";
195195
public static final String EXECUTE_OPERATION_AUDIT_LOG_MESSAGE = "Execute operation in space with id: {0}";
196196
public static final String GET_OPERATION_LOGS_AUDIT_LOG_MESSAGE = "Get operation logs in space with id: {0}";
197-
public static final String GET_OPERATION_LOG_CONTENT_AUDIT_LOG_MESSAGE = "Get operation log content in space with id: {0}";
197+
public static final String GET_OPERATION_LOG_CONTENT_AUDIT_LOG_MESSAGE = "Get operation log content in space with id: {0}";
198198
public static final String START_OPERATION_AUDIT_LOG_MESSAGE = "Start {0} operation in space with id: {1}";
199199
public static final String GET_INFO_FOR_OPERATION = "Get info for operation in space with id: {0}";
200200

201-
public static final String LIST_MTA_AUDIT_LOG_MESSAGE = "List MTA in space with id: {0}";
201+
public static final String LIST_MTA_AUDIT_LOG_MESSAGE = "List MTA in space with id: {0}";
202202
public static final String GET_MTA_AUDIT_LOG_MESSAGE = "Get MTA in space with id: {0}";
203203

204204
public static final String GET_INFO_FOR_API_AUDIT_LOG_CONFIG = "Get information for api";
@@ -207,7 +207,6 @@ public final class Messages {
207207

208208
public static final String FETCH_TOKEN_AUDIT_LOG_CONFIG = "Access token fetch";
209209

210-
211210
// Audit log configuration
212211
public static final String GET_CSRF_TOKEN_AUDIT_LOG_CONFIG = "CSRF token get ";
213212

@@ -227,11 +226,12 @@ public final class Messages {
227226
public static final String START_OPERATION_AUDIT_LOG_CONFIG = "Operation start";
228227
public static final String GET_OPERATION_INFO_AUDIT_LOG_CONFIG = "Operation info";
229228

230-
public static final String MTA_INFO_AUDIT_LOG_CONFIG= "MTA info";
229+
public static final String MTA_INFO_AUDIT_LOG_CONFIG = "MTA info";
231230
public static final String MTA_LIST_AUDIT_LOG_CONFIG = "MTA list";
232231

233-
public static final String API_INFO_AUDIT_LOG_CONFIG= "Api info";
232+
public static final String API_INFO_AUDIT_LOG_CONFIG = "Api info";
234233
public static final String IGNORING_NAMESPACE_PARAMETERS = "Ignoring parameter \"{0}\" , as the MTA is not deployed with namespace!";
234+
public static final String NAMESPACE_PARSING_ERROR_MESSAGE = "Cannot parse \"{0}\" flag - expected a boolean format.";
235235

236236
private Messages() {
237237
}

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/util/NamespaceValidationUtil.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.util.Map;
1010
import java.util.Objects;
1111

12+
import static java.text.MessageFormat.format;
13+
1214
public class NamespaceValidationUtil {
1315
private static final Logger LOGGER = LoggerFactory.getLogger(NamespaceValidationUtil.class);
1416
private String namespace;
@@ -34,7 +36,7 @@ public boolean shouldApplyNamespaceResultValue(final Map<String, Object> related
3436
Objects.requireNonNullElse(applyNamespaceModuleLevel,
3537
applyNamespaceGlobalLevel));
3638
if (namespace == null && applyNamespaceResult) {
37-
LOGGER.warn(Messages.IGNORING_NAMESPACE_PARAMETERS, SupportedParameters.NAMESPACE);
39+
LOGGER.warn(format(Messages.IGNORING_NAMESPACE_PARAMETERS, SupportedParameters.NAMESPACE));
3840
}
3941
return applyNamespaceResult;
4042
}

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/validators/parameters/HostValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public boolean isValid(Object routePart, final Map<String, Object> context) {
2222
if (!super.isValid(routePart, context)) {
2323
return false;
2424
}
25-
if (shouldApplyNamespace(context)) {
25+
if (shouldApplyNamespace(context) && getNamespace() != null) {
2626
return ((String) routePart).startsWith(getNamespace());
2727
}
2828
return true;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public class Messages {
6868
public static final String ERROR_WHILE_STARTING_ASYNC_UPLOAD_OF_APP_WITH_NAME_0 = "Error while starting async upload of app with name {0}";
6969
public static final String REQUIRED_APPLICATION_TO_POLL_0_NOT_FOUND = "Required application to poll: \"{0}\" not found";
7070
public static final String NOT_INTEGER_PARAMETER_VALUE = "Value \"{0}\" of parameter \"{1}\" is not integer";
71+
public static final String NOT_BOOLEAN_PARAMETER_VALUE = "Value \"{0}\" of parameter \"{1}\" is not boolean";
7172
// Audit log messages
7273

7374
// ERROR log messages
@@ -730,6 +731,8 @@ public class Messages {
730731

731732
// Not log messages
732733
public static final String SERVICE_TYPE = "{0}/{1}";
734+
public static final String PARSE_NULL_STRING_ERROR = "Cannot parse null string";
735+
public static final String INVALID_BOOLEAN_VALUE = "Invalid boolean value: must be 'true' or 'false'";
733736

734737
protected Messages() {
735738
}

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/metadata/BlueGreenDeployMetadata.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.cloudfoundry.multiapps.controller.api.model.OperationMetadata;
66
import org.cloudfoundry.multiapps.controller.api.model.ParameterType;
77
import org.cloudfoundry.multiapps.controller.process.Constants;
8+
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.ApplyNamespaceParameterConverter;
89
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.TimeoutParameterConverter;
910
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.VersionRuleParameterConverter;
1011
import org.cloudfoundry.multiapps.controller.process.variables.Variables;
@@ -37,14 +38,17 @@ public static OperationMetadata getMetadata() {
3738
.addParameter(ImmutableParameterMetadata.builder()
3839
.id(Variables.APPLY_NAMESPACE_APP_NAMES.getName())
3940
.type(ParameterType.BOOLEAN)
41+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_NAMES))
4042
.build())
4143
.addParameter(ImmutableParameterMetadata.builder()
4244
.id(Variables.APPLY_NAMESPACE_SERVICE_NAMES.getName())
4345
.type(ParameterType.BOOLEAN)
46+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_SERVICE_NAMES))
4447
.build())
4548
.addParameter(ImmutableParameterMetadata.builder()
4649
.id(Variables.APPLY_NAMESPACE_APP_ROUTES.getName())
4750
.type(ParameterType.BOOLEAN)
51+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_ROUTES))
4852
.build())
4953
.addParameter(ImmutableParameterMetadata.builder()
5054
.id(Variables.VERSION_RULE.getName())

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/metadata/CtsDeployMetadata.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.cloudfoundry.multiapps.controller.api.model.OperationMetadata;
66
import org.cloudfoundry.multiapps.controller.api.model.ParameterType;
77
import org.cloudfoundry.multiapps.controller.process.Constants;
8+
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.ApplyNamespaceParameterConverter;
89
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.DeployStrategyParameterConverter;
910
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.TimeoutParameterConverter;
1011
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.VersionRuleParameterConverter;
@@ -39,14 +40,17 @@ public static OperationMetadata getMetadata() {
3940
.addParameter(ImmutableParameterMetadata.builder()
4041
.id(Variables.APPLY_NAMESPACE_APP_NAMES.getName())
4142
.type(ParameterType.BOOLEAN)
43+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_NAMES))
4244
.build())
4345
.addParameter(ImmutableParameterMetadata.builder()
4446
.id(Variables.APPLY_NAMESPACE_SERVICE_NAMES.getName())
4547
.type(ParameterType.BOOLEAN)
48+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_SERVICE_NAMES))
4649
.build())
4750
.addParameter(ImmutableParameterMetadata.builder()
4851
.id(Variables.APPLY_NAMESPACE_APP_ROUTES.getName())
4952
.type(ParameterType.BOOLEAN)
53+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_ROUTES))
5054
.build())
5155
.addParameter(ImmutableParameterMetadata.builder()
5256
.id(Variables.VERSION_RULE.getName())

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/metadata/DeployMetadata.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.cloudfoundry.multiapps.controller.api.model.OperationMetadata;
66
import org.cloudfoundry.multiapps.controller.api.model.ParameterType;
77
import org.cloudfoundry.multiapps.controller.process.Constants;
8+
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.ApplyNamespaceParameterConverter;
89
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.TimeoutParameterConverter;
910
import org.cloudfoundry.multiapps.controller.process.metadata.parameters.VersionRuleParameterConverter;
1011
import org.cloudfoundry.multiapps.controller.process.variables.Variables;
@@ -37,14 +38,17 @@ public static OperationMetadata getMetadata() {
3738
.addParameter(ImmutableParameterMetadata.builder()
3839
.id(Variables.APPLY_NAMESPACE_APP_NAMES.getName())
3940
.type(ParameterType.BOOLEAN)
41+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_NAMES))
4042
.build())
4143
.addParameter(ImmutableParameterMetadata.builder()
4244
.id(Variables.APPLY_NAMESPACE_SERVICE_NAMES.getName())
4345
.type(ParameterType.BOOLEAN)
46+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_SERVICE_NAMES))
4447
.build())
4548
.addParameter(ImmutableParameterMetadata.builder()
4649
.id(Variables.APPLY_NAMESPACE_APP_ROUTES.getName())
4750
.type(ParameterType.BOOLEAN)
51+
.customConverter(new ApplyNamespaceParameterConverter(Variables.APPLY_NAMESPACE_APP_ROUTES))
4852
.build())
4953
.addParameter(ImmutableParameterMetadata.builder()
5054
.id(Variables.VERSION_RULE.getName())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.cloudfoundry.multiapps.controller.process.metadata.parameters;
2+
3+
import org.cloudfoundry.multiapps.common.ContentException;
4+
import org.cloudfoundry.multiapps.controller.api.model.parameters.ParameterConverter;
5+
import org.cloudfoundry.multiapps.controller.process.Messages;
6+
import org.cloudfoundry.multiapps.controller.process.variables.Variable;
7+
8+
import java.text.MessageFormat;
9+
10+
public class ApplyNamespaceParameterConverter implements ParameterConverter {
11+
private final Variable<Boolean> applyNamespace;
12+
13+
public ApplyNamespaceParameterConverter(Variable<Boolean> applyNamespace) {
14+
this.applyNamespace = applyNamespace;
15+
}
16+
17+
@Override
18+
public Boolean convert(Object value) {
19+
try {
20+
return parseBoolean(String.valueOf(value));
21+
} catch (NumberFormatException e) {
22+
throw new ContentException(e, MessageFormat.format(Messages.NOT_BOOLEAN_PARAMETER_VALUE, value, applyNamespace.getName()));
23+
}
24+
}
25+
26+
private boolean parseBoolean(String value) {
27+
if (value == null) {
28+
throw new IllegalArgumentException(Messages.PARSE_NULL_STRING_ERROR);
29+
}
30+
31+
String lowerValue = value.trim()
32+
.toLowerCase();
33+
34+
return switch (lowerValue) {
35+
case "true" -> true;
36+
case "false" -> false;
37+
default -> throw new IllegalArgumentException(Messages.INVALID_BOOLEAN_VALUE);
38+
};
39+
}
40+
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ private SystemParameters createSystemParameters(ProcessContext context, String d
104104
String namespace = context.getVariable(Variables.MTA_NAMESPACE);
105105
String timestamp = context.getVariable(Variables.TIMESTAMP);
106106
Boolean applyNamespaceProcessVariable = context.getVariable(Variables.APPLY_NAMESPACE_APP_ROUTES);
107-
getStepLogger().info("HEY: " + namespace + " RES: " + applyNamespaceProcessVariable);
108107
NamespaceGlobalParameters namespaceGlobalParameters = new NamespaceGlobalParameters(descriptor);
109108
boolean applyNamespaceGlobalLevel = namespaceGlobalParameters.getApplyNamespaceAppRoutesParameter();
110109

multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/NamespaceGlobalParameters.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package org.cloudfoundry.multiapps.controller.process.util;
22

3+
import org.cloudfoundry.multiapps.common.ContentException;
34
import org.cloudfoundry.multiapps.controller.core.model.SupportedParameters;
45
import org.cloudfoundry.multiapps.mta.model.DeploymentDescriptor;
56

67
import java.util.Collections;
78
import java.util.Map;
89

10+
import static org.cloudfoundry.multiapps.controller.core.Messages.NAMESPACE_PARSING_ERROR_MESSAGE;
11+
912
public class NamespaceGlobalParameters extends GlobalParameters {
10-
private final Map<String, Boolean> applyNamespaceGlobalLevel;
13+
private final Map<String, Object> applyNamespaceGlobalLevel;
1114

1215
public NamespaceGlobalParameters(DeploymentDescriptor deploymentDescriptor) {
1316
super(deploymentDescriptor);
14-
applyNamespaceGlobalLevel = (Map<String, Boolean>) deploymentDescriptor.getParameters()
15-
.getOrDefault(SupportedParameters.APPLY_NAMESPACE,
16-
Collections.emptyMap());
17+
applyNamespaceGlobalLevel = (Map<String, Object>) deploymentDescriptor.getParameters()
18+
.getOrDefault(SupportedParameters.APPLY_NAMESPACE,
19+
Collections.emptyMap());
1720
}
1821

1922
public boolean getApplyNamespaceAppNamesParameter() {
@@ -29,9 +32,13 @@ public boolean getApplyNamespaceAppRoutesParameter() {
2932

3033
}
3134

32-
private boolean getApplyNamespace(String supportedParameters) {
33-
if (!applyNamespaceGlobalLevel.equals(Collections.emptyMap())) {
34-
return applyNamespaceGlobalLevel.getOrDefault(supportedParameters, true);
35+
private boolean getApplyNamespace(String applyNamespaceFlagName) {
36+
if (!applyNamespaceGlobalLevel.isEmpty()) {
37+
Object value = applyNamespaceGlobalLevel.get(applyNamespaceFlagName);
38+
if (value != null && !(value instanceof Boolean)) {
39+
throw new ContentException(NAMESPACE_PARSING_ERROR_MESSAGE, applyNamespaceFlagName);
40+
}
41+
return (boolean) applyNamespaceGlobalLevel.getOrDefault(applyNamespaceFlagName, true);
3542
}
3643
return true;
3744
}

0 commit comments

Comments
 (0)