Skip to content

Commit 45079d1

Browse files
Add fail-on-service-update parameter
LMCROSSITXSADEPLOY-3200
1 parent 0f9d818 commit 45079d1

File tree

22 files changed

+269
-98
lines changed

22 files changed

+269
-98
lines changed

multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/lib/domain/CloudServiceInstanceExtended.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package org.cloudfoundry.multiapps.controller.client.lib.domain;
22

3-
import org.cloudfoundry.multiapps.common.Nullable;
4-
import org.immutables.value.Value;
5-
63
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
74
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
85
import com.sap.cloudfoundry.client.facade.domain.CloudServiceInstance;
6+
import org.cloudfoundry.multiapps.common.Nullable;
7+
import org.immutables.value.Value;
98

109
@Value.Immutable
1110
@JsonSerialize(as = ImmutableCloudServiceInstanceExtended.class)
@@ -45,4 +44,19 @@ public boolean shouldSkipSyslogUrlUpdate() {
4544
return false;
4645
}
4746

47+
@Value.Default
48+
public boolean shouldFailOnParametersUpdateFailure() {
49+
return false;
50+
}
51+
52+
@Value.Default
53+
public boolean shouldFailOnPlanUpdateFailure() {
54+
return false;
55+
}
56+
57+
@Value.Default
58+
public boolean shouldFailOnTagsUpdateFailure() {
59+
return false;
60+
}
61+
4862
}

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.Objects;
88
import java.util.TreeMap;
99
import java.util.stream.Collectors;
10-
1110
import org.cloudfoundry.client.v3.serviceinstances.ServiceInstanceType;
1211
import org.cloudfoundry.multiapps.common.ContentException;
1312
import org.cloudfoundry.multiapps.controller.client.lib.domain.CloudServiceInstanceExtended;
@@ -85,6 +84,10 @@ protected CloudServiceInstanceExtended createManagedService(Resource resource, C
8584
.shouldSkipTagsUpdate(commonServiceParameters.shouldSkipTagsUpdate())
8685
.shouldSkipPlanUpdate(commonServiceParameters.shouldSkipPlanUpdate())
8786
.shouldSkipSyslogUrlUpdate(commonServiceParameters.shouldSkipSyslogUrlUpdate())
87+
.shouldFailOnParametersUpdateFailure(
88+
commonServiceParameters.failOnServiceParametersUpdateFailure())
89+
.shouldFailOnPlanUpdateFailure(commonServiceParameters.failOnServicePlanUpdateFailure())
90+
.shouldFailOnTagsUpdateFailure(commonServiceParameters.failOnServiceTagsUpdateFailure())
8891
.v3Metadata(ServiceMetadataBuilder.build(deploymentDescriptor, namespace, resource))
8992
.build();
9093
}
@@ -113,6 +116,10 @@ protected CloudServiceInstanceExtended createUserProvidedService(Resource resour
113116
.shouldSkipTagsUpdate(commonServiceParameters.shouldSkipTagsUpdate())
114117
.shouldSkipPlanUpdate(commonServiceParameters.shouldSkipPlanUpdate())
115118
.shouldSkipSyslogUrlUpdate(commonServiceParameters.shouldSkipSyslogUrlUpdate())
119+
.shouldFailOnParametersUpdateFailure(
120+
commonServiceParameters.failOnServiceParametersUpdateFailure())
121+
.shouldFailOnPlanUpdateFailure(commonServiceParameters.failOnServicePlanUpdateFailure())
122+
.shouldFailOnTagsUpdateFailure(commonServiceParameters.failOnServiceTagsUpdateFailure())
116123
.v3Metadata(ServiceMetadataBuilder.build(deploymentDescriptor, namespace, resource))
117124
.build();
118125
}
@@ -126,6 +133,10 @@ protected CloudServiceInstanceExtended createExistingService(Resource resource,
126133
.shouldSkipTagsUpdate(commonServiceParameters.shouldSkipTagsUpdate())
127134
.shouldSkipPlanUpdate(commonServiceParameters.shouldSkipPlanUpdate())
128135
.shouldSkipSyslogUrlUpdate(commonServiceParameters.shouldSkipSyslogUrlUpdate())
136+
.shouldFailOnParametersUpdateFailure(
137+
commonServiceParameters.failOnServiceParametersUpdateFailure())
138+
.shouldFailOnPlanUpdateFailure(commonServiceParameters.failOnServicePlanUpdateFailure())
139+
.shouldFailOnTagsUpdateFailure(commonServiceParameters.failOnServiceTagsUpdateFailure())
129140
.v3Metadata(ServiceMetadataBuilder.build(deploymentDescriptor, namespace, resource))
130141
.build();
131142
}
@@ -153,13 +164,17 @@ protected String getInvalidServiceConfigTypeErrorMessage(String serviceName, Obj
153164
protected static class CommonServiceParameters {
154165
protected final Resource resource;
155166
private final Map<String, Boolean> shouldSkipUpdates;
167+
private final Map<String, Boolean> failOnServiceUpdateFailure;
156168

157169
@SuppressWarnings("unchecked")
158170
protected CommonServiceParameters(Resource resource) {
159171
this.resource = resource;
160172
this.shouldSkipUpdates = (Map<String, Boolean>) resource.getParameters()
161173
.getOrDefault(SupportedParameters.SKIP_SERVICE_UPDATES,
162174
Collections.emptyMap());
175+
failOnServiceUpdateFailure = (Map<String, Boolean>) resource.getParameters()
176+
.getOrDefault(SupportedParameters.FAIL_ON_SERVICE_UPDATE,
177+
Collections.emptyMap());
163178
}
164179

165180
private String getServiceName() {
@@ -186,6 +201,18 @@ private boolean shouldSkipSyslogUrlUpdate() {
186201
return shouldSkipUpdates.getOrDefault("syslog-drain-url", false);
187202
}
188203

204+
private boolean failOnServiceParametersUpdateFailure() {
205+
return failOnServiceUpdateFailure.getOrDefault("parameters", false);
206+
}
207+
208+
private boolean failOnServiceTagsUpdateFailure() {
209+
return failOnServiceUpdateFailure.getOrDefault("tags", false);
210+
}
211+
212+
private boolean failOnServicePlanUpdateFailure() {
213+
return failOnServiceUpdateFailure.getOrDefault("plan", false);
214+
}
215+
189216
}
190217

191218
}

multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/SupportedParameters.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ public class SupportedParameters {
152152
public static final String DEFAULT_XS_APP_NAME = "default-xsappname";
153153
public static final String TYPE = "type";
154154
public static final String SKIP_SERVICE_UPDATES = "skip-service-updates";
155+
public static final String FAIL_ON_SERVICE_UPDATE = "fail-on-service-update";
155156
public static final String SYSLOG_DRAIN_URL = "syslog-drain-url";
156157
public static final String SERVICE_GUID = "service-guid";
157158

multiapps-controller-core/src/test/resources/mta/devxdi/services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
"shouldSkipParametersUpdate" : false,
1919
"shouldSkipPlanUpdate" : false,
2020
"shouldSkipTagsUpdate" : false,
21-
"shouldSkipSyslogUrlUpdate" : false
21+
"shouldSkipSyslogUrlUpdate" : false,
22+
"shouldFailOnParametersUpdateFailure" : false,
23+
"shouldFailOnPlanUpdateFailure" : false,
24+
"shouldFailOnTagsUpdateFailure" : false
2225
}, {
2326
"isOptional" : false,
2427
"isManaged" : true,
@@ -42,5 +45,8 @@
4245
"shouldSkipParametersUpdate" : false,
4346
"shouldSkipPlanUpdate" : false,
4447
"shouldSkipTagsUpdate" : false,
45-
"shouldSkipSyslogUrlUpdate" : false
48+
"shouldSkipSyslogUrlUpdate" : false,
49+
"shouldFailOnParametersUpdateFailure" : false,
50+
"shouldFailOnPlanUpdateFailure" : false,
51+
"shouldFailOnTagsUpdateFailure" : false
4652
} ]

multiapps-controller-core/src/test/resources/mta/devxdi/xs2-services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
"shouldSkipParametersUpdate" : false,
1919
"shouldSkipPlanUpdate" : false,
2020
"shouldSkipTagsUpdate" : false,
21-
"shouldSkipSyslogUrlUpdate" : false
21+
"shouldSkipSyslogUrlUpdate" : false,
22+
"shouldFailOnParametersUpdateFailure" : false,
23+
"shouldFailOnPlanUpdateFailure" : false,
24+
"shouldFailOnTagsUpdateFailure" : false
2225
}, {
2326
"isOptional" : false,
2427
"isManaged" : true,
@@ -42,5 +45,8 @@
4245
"shouldSkipParametersUpdate" : false,
4346
"shouldSkipPlanUpdate" : false,
4447
"shouldSkipTagsUpdate" : false,
45-
"shouldSkipSyslogUrlUpdate" : false
48+
"shouldSkipSyslogUrlUpdate" : false,
49+
"shouldFailOnParametersUpdateFailure" : false,
50+
"shouldFailOnPlanUpdateFailure" : false,
51+
"shouldFailOnTagsUpdateFailure" : false
4652
} ]

multiapps-controller-core/src/test/resources/mta/devxwebide/services.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
"shouldSkipParametersUpdate": false,
2020
"shouldSkipTagsUpdate": false,
2121
"shouldSkipPlanUpdate": false,
22-
"shouldSkipSyslogUrlUpdate": false
22+
"shouldSkipSyslogUrlUpdate": false,
23+
"shouldFailOnParametersUpdateFailure" : false,
24+
"shouldFailOnPlanUpdateFailure" : false,
25+
"shouldFailOnTagsUpdateFailure" : false
2326
}
2427
]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services-ns-1.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
"shouldSkipParametersUpdate" : false,
2424
"shouldSkipPlanUpdate" : false,
2525
"shouldSkipTagsUpdate" : false,
26-
"shouldSkipSyslogUrlUpdate" : false
26+
"shouldSkipSyslogUrlUpdate" : false,
27+
"shouldFailOnParametersUpdateFailure" : false,
28+
"shouldFailOnPlanUpdateFailure" : false,
29+
"shouldFailOnTagsUpdateFailure" : false
2730
}, {
2831
"isOptional" : false,
2932
"isManaged" : true,
@@ -52,5 +55,8 @@
5255
"shouldSkipParametersUpdate" : false,
5356
"shouldSkipPlanUpdate" : false,
5457
"shouldSkipTagsUpdate" : false,
55-
"shouldSkipSyslogUrlUpdate" : false
58+
"shouldSkipSyslogUrlUpdate" : false,
59+
"shouldFailOnParametersUpdateFailure" : false,
60+
"shouldFailOnPlanUpdateFailure" : false,
61+
"shouldFailOnTagsUpdateFailure" : false
5662
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services-ns-2.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
"shouldSkipParametersUpdate" : false,
2424
"shouldSkipPlanUpdate" : false,
2525
"shouldSkipTagsUpdate" : false,
26-
"shouldSkipSyslogUrlUpdate" : false
26+
"shouldSkipSyslogUrlUpdate" : false,
27+
"shouldFailOnParametersUpdateFailure" : false,
28+
"shouldFailOnPlanUpdateFailure" : false,
29+
"shouldFailOnTagsUpdateFailure" : false
2730
}, {
2831
"isOptional" : false,
2932
"isManaged" : true,
@@ -52,5 +55,8 @@
5255
"shouldSkipParametersUpdate" : false,
5356
"shouldSkipPlanUpdate" : false,
5457
"shouldSkipTagsUpdate" : false,
55-
"shouldSkipSyslogUrlUpdate" : false
58+
"shouldSkipSyslogUrlUpdate" : false,
59+
"shouldFailOnParametersUpdateFailure" : false,
60+
"shouldFailOnPlanUpdateFailure" : false,
61+
"shouldFailOnTagsUpdateFailure" : false
5662
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services-ns-3.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
"shouldSkipParametersUpdate" : false,
2424
"shouldSkipPlanUpdate" : false,
2525
"shouldSkipTagsUpdate" : false,
26-
"shouldSkipSyslogUrlUpdate" : false
26+
"shouldSkipSyslogUrlUpdate" : false,
27+
"shouldFailOnParametersUpdateFailure" : false,
28+
"shouldFailOnPlanUpdateFailure" : false,
29+
"shouldFailOnTagsUpdateFailure" : false
2730
}, {
2831
"isOptional" : false,
2932
"isManaged" : true,
@@ -52,5 +55,8 @@
5255
"shouldSkipParametersUpdate" : false,
5356
"shouldSkipPlanUpdate" : false,
5457
"shouldSkipTagsUpdate" : false,
55-
"shouldSkipSyslogUrlUpdate" : false
58+
"shouldSkipSyslogUrlUpdate" : false,
59+
"shouldFailOnParametersUpdateFailure" : false,
60+
"shouldFailOnPlanUpdateFailure" : false,
61+
"shouldFailOnTagsUpdateFailure" : false
5662
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services-patch-ns.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
"shouldSkipParametersUpdate" : false,
2424
"shouldSkipPlanUpdate" : false,
2525
"shouldSkipTagsUpdate" : false,
26-
"shouldSkipSyslogUrlUpdate" : false
26+
"shouldSkipSyslogUrlUpdate" : false,
27+
"shouldFailOnParametersUpdateFailure" : false,
28+
"shouldFailOnPlanUpdateFailure" : false,
29+
"shouldFailOnTagsUpdateFailure" : false
2730
}, {
2831
"isOptional" : false,
2932
"isManaged" : true,
@@ -52,5 +55,8 @@
5255
"shouldSkipParametersUpdate" : false,
5356
"shouldSkipPlanUpdate" : false,
5457
"shouldSkipTagsUpdate" : false,
55-
"shouldSkipSyslogUrlUpdate" : false
58+
"shouldSkipSyslogUrlUpdate" : false,
59+
"shouldFailOnParametersUpdateFailure" : false,
60+
"shouldFailOnPlanUpdateFailure" : false,
61+
"shouldFailOnTagsUpdateFailure" : false
5662
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services-patch.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"shouldSkipParametersUpdate" : false,
2222
"shouldSkipPlanUpdate" : false,
2323
"shouldSkipTagsUpdate" : false,
24-
"shouldSkipSyslogUrlUpdate" : false
24+
"shouldSkipSyslogUrlUpdate" : false,
25+
"shouldFailOnParametersUpdateFailure" : false,
26+
"shouldFailOnPlanUpdateFailure" : false,
27+
"shouldFailOnTagsUpdateFailure" : false
2528
}, {
2629
"isOptional" : false,
2730
"isManaged" : true,
@@ -48,5 +51,8 @@
4851
"shouldSkipParametersUpdate" : false,
4952
"shouldSkipPlanUpdate" : false,
5053
"shouldSkipTagsUpdate" : false,
51-
"shouldSkipSyslogUrlUpdate" : false
54+
"shouldSkipSyslogUrlUpdate" : false,
55+
"shouldFailOnParametersUpdateFailure" : false,
56+
"shouldFailOnPlanUpdateFailure" : false,
57+
"shouldFailOnTagsUpdateFailure" : false
5258
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"shouldSkipParametersUpdate" : false,
2222
"shouldSkipPlanUpdate" : false,
2323
"shouldSkipTagsUpdate" : false,
24-
"shouldSkipSyslogUrlUpdate" : false
24+
"shouldSkipSyslogUrlUpdate" : false,
25+
"shouldFailOnParametersUpdateFailure" : false,
26+
"shouldFailOnPlanUpdateFailure" : false,
27+
"shouldFailOnTagsUpdateFailure" : false
2528
}, {
2629
"isOptional" : false,
2730
"isManaged" : true,
@@ -48,5 +51,8 @@
4851
"shouldSkipParametersUpdate" : false,
4952
"shouldSkipPlanUpdate" : false,
5053
"shouldSkipTagsUpdate" : false,
51-
"shouldSkipSyslogUrlUpdate" : false
54+
"shouldSkipSyslogUrlUpdate" : false,
55+
"shouldFailOnParametersUpdateFailure" : false,
56+
"shouldFailOnPlanUpdateFailure" : false,
57+
"shouldFailOnTagsUpdateFailure" : false
5258
} ]

multiapps-controller-core/src/test/resources/mta/javahelloworld/xs2-services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"shouldSkipParametersUpdate" : false,
2222
"shouldSkipPlanUpdate" : false,
2323
"shouldSkipTagsUpdate" : false,
24-
"shouldSkipSyslogUrlUpdate" : false
24+
"shouldSkipSyslogUrlUpdate" : false,
25+
"shouldFailOnParametersUpdateFailure" : false,
26+
"shouldFailOnPlanUpdateFailure" : false,
27+
"shouldFailOnTagsUpdateFailure" : false
2528
}, {
2629
"isOptional" : false,
2730
"isManaged" : true,
@@ -51,5 +54,8 @@
5154
"shouldSkipParametersUpdate" : false,
5255
"shouldSkipPlanUpdate" : false,
5356
"shouldSkipTagsUpdate" : false,
54-
"shouldSkipSyslogUrlUpdate" : false
57+
"shouldSkipSyslogUrlUpdate" : false,
58+
"shouldFailOnParametersUpdateFailure" : false,
59+
"shouldFailOnPlanUpdateFailure" : false,
60+
"shouldFailOnTagsUpdateFailure" : false
5561
} ]

multiapps-controller-core/src/test/resources/mta/sample/services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"shouldSkipParametersUpdate" : false,
2222
"shouldSkipPlanUpdate" : false,
2323
"shouldSkipTagsUpdate" : false,
24-
"shouldSkipSyslogUrlUpdate" : false
24+
"shouldSkipSyslogUrlUpdate" : false,
25+
"shouldFailOnParametersUpdateFailure" : false,
26+
"shouldFailOnPlanUpdateFailure" : false,
27+
"shouldFailOnTagsUpdateFailure" : false
2528
}, {
2629
"isOptional" : false,
2730
"isManaged" : true,
@@ -46,5 +49,8 @@
4649
"shouldSkipParametersUpdate" : false,
4750
"shouldSkipPlanUpdate" : false,
4851
"shouldSkipTagsUpdate" : false,
49-
"shouldSkipSyslogUrlUpdate" : false
52+
"shouldSkipSyslogUrlUpdate" : false,
53+
"shouldFailOnParametersUpdateFailure" : false,
54+
"shouldFailOnPlanUpdateFailure" : false,
55+
"shouldFailOnTagsUpdateFailure" : false
5056
} ]

multiapps-controller-core/src/test/resources/mta/shine/services.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626
"shouldSkipParametersUpdate" : false,
2727
"shouldSkipPlanUpdate" : false,
2828
"shouldSkipTagsUpdate" : false,
29-
"shouldSkipSyslogUrlUpdate" : false
29+
"shouldSkipSyslogUrlUpdate" : false,
30+
"shouldFailOnParametersUpdateFailure" : false,
31+
"shouldFailOnPlanUpdateFailure" : false,
32+
"shouldFailOnTagsUpdateFailure" : false
3033
}, {
3134
"isOptional" : false,
3235
"isManaged" : true,
@@ -53,5 +56,8 @@
5356
"shouldSkipParametersUpdate" : false,
5457
"shouldSkipPlanUpdate" : false,
5558
"shouldSkipTagsUpdate" : false,
56-
"shouldSkipSyslogUrlUpdate" : false
59+
"shouldSkipSyslogUrlUpdate" : false,
60+
"shouldFailOnParametersUpdateFailure" : false,
61+
"shouldFailOnPlanUpdateFailure" : false,
62+
"shouldFailOnTagsUpdateFailure" : false
5763
} ]

0 commit comments

Comments
 (0)