Skip to content

Commit 8c2c388

Browse files
authored
fix(kubernetes): tolerate an empty manifest in KubernetesDeployManifestOperation (#6337)
in case the result of a bake stage is empty. Without this there's: java.lang.NullPointerException at com.netflix.spinnaker.clouddriver.kubernetes.op.manifest.KubernetesDeployManifestOperation.getManifestsFromDescription(KubernetesDeployManifestOperation.java:234) at com.netflix.spinnaker.clouddriver.kubernetes.op.manifest.KubernetesDeployManifestOperation.operate(KubernetesDeployManifestOperation.java:75) at com.netflix.spinnaker.clouddriver.kubernetes.op.manifest.KubernetesDeployManifestOperation.operate(KubernetesDeployManifestOperation.java:48) because KubernetesDeployManifestDescription.getManifestsFromDescription assumes that description.getManifest() never returns null.
1 parent c4df136 commit 8c2c388

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

clouddriver-kubernetes/src/main/java/com/netflix/spinnaker/clouddriver/kubernetes/op/manifest/KubernetesDeployManifestOperation.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,16 @@ private List<KubernetesManifest> getManifestsFromDescription() {
228228
// check `manifest` for backwards compatibility until all existing stages have been updated.
229229
@SuppressWarnings("deprecation")
230230
KubernetesManifest manifest = description.getManifest();
231-
log.warn(
232-
"Relying on deprecated single manifest input (account: {}, kind: {}, name: {})",
233-
accountName,
234-
manifest.getKind(),
235-
manifest.getName());
236-
inputManifests = ImmutableList.of(manifest);
231+
232+
// manifest may be null as well, so check
233+
if (manifest != null) {
234+
log.warn(
235+
"Relying on deprecated single manifest input (account: {}, kind: {}, name: {})",
236+
accountName,
237+
manifest.getKind(),
238+
manifest.getName());
239+
inputManifests = ImmutableList.of(manifest);
240+
}
237241
}
238242
inputManifests = inputManifests.stream().filter(Objects::nonNull).collect(Collectors.toList());
239243
return inputManifests;

clouddriver-kubernetes/src/test/java/com/netflix/spinnaker/clouddriver/kubernetes/op/KubernetesDeployManifestOperationTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,13 @@ void replaceStrategyWithLabelSelector() {
503503
anyString());
504504
}
505505

506+
@Test
507+
void deployEmptyResource() {
508+
KubernetesDeployManifestDescription deployManifestDescription =
509+
baseDeployDescription("deploy/empty-resource.yml");
510+
deploy(deployManifestDescription);
511+
}
512+
506513
private static KubernetesDeployManifestDescription baseDeployDescription(String manifest) {
507514
return baseDeployDescription(manifest, false);
508515
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

0 commit comments

Comments
 (0)