Skip to content

Commit

Permalink
feat(bake/manifest): allow multiple input artifacts (#251)
Browse files Browse the repository at this point in the history
  • Loading branch information
lwander committed Apr 23, 2018
1 parent 0d65954 commit bddfd19
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
public class BakeManifestRequest {
TemplateRenderer templateRenderer;
String outputName;
Artifact inputArtifact;
List<Artifact> values;
List<Artifact> inputArtifacts;
Map<String, Object> overrides;

enum TemplateRenderer {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.netflix.spinnaker.rosco.manifests.helm;

import com.netflix.spinnaker.kork.artifacts.model.Artifact;
import com.netflix.spinnaker.rosco.jobs.BakeRecipe;
import com.netflix.spinnaker.rosco.manifests.BakeManifestRequest;
import com.netflix.spinnaker.rosco.manifests.TemplateUtils;
Expand All @@ -10,15 +11,27 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Component
public class HelmTemplateUtils extends TemplateUtils {
@Override
public BakeRecipe buildBakeRecipe(BakeManifestEnvironment env, BakeManifestRequest request) {
BakeRecipe result = super.buildBakeRecipe(env, request);
Path templatePath;
List<Path> valuePaths = new ArrayList<>();
List<Artifact> inputArtifacts = request.getInputArtifacts();
if (inputArtifacts == null || inputArtifacts.isEmpty()) {
throw new IllegalArgumentException("At least one input artifact must be provided to bake");
}

try {
templatePath = downloadArtifactToTmpFile(env, request.getInputArtifact());
templatePath = downloadArtifactToTmpFile(env, inputArtifacts.get(0));

// not a stream to keep exception handling cleaner
for (Artifact valueArtifact : inputArtifacts.subList(1, inputArtifacts.size())) {
valuePaths.add(downloadArtifactToTmpFile(env, valueArtifact));
}
} catch (IOException e) {
throw new IllegalStateException("Failed to fetch helm template: " + e.getMessage(), e);
}
Expand All @@ -38,6 +51,11 @@ public BakeRecipe buildBakeRecipe(BakeManifestEnvironment env, BakeManifestReque
}
}

if (!valuePaths.isEmpty()) {
command.add("--values");
command.add(String.join(",", valuePaths.stream().map(Path::toString).collect(Collectors.toList())));
}

result.setCommand(command);

return result;
Expand Down

0 comments on commit bddfd19

Please sign in to comment.