diff --git a/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/pipeline/manifest/DeployManifestStage.java b/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/pipeline/manifest/DeployManifestStage.java index 5389738a96..5d1ee99ef5 100644 --- a/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/pipeline/manifest/DeployManifestStage.java +++ b/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/pipeline/manifest/DeployManifestStage.java @@ -86,46 +86,44 @@ private void deleteOldManifests(Map parentContext, StageGraphBuilder graph) { private void addStagesForOldManifests( Map parentContext, StageGraphBuilder graph, String stageType) { - Map deployedManifest = getNewManifest(parentContext); + List> deployedManifests = getNewManifests(parentContext); String account = (String) parentContext.get("account"); Map manifestMoniker = (Map) parentContext.get("moniker"); String application = (String) manifestMoniker.get("app"); - Map manifestMetadata = (Map) deployedManifest.get("metadata"); - String manifestName = String.format("replicaSet %s", (String) manifestMetadata.get("name")); - String namespace = (String) manifestMetadata.get("namespace"); - Map annotations = (Map) manifestMetadata.get("annotations"); - String clusterName = (String) annotations.get("moniker.spinnaker.io/cluster"); - String cloudProvider = "kubernetes"; - - List previousManifestNames = - getOldManifestNames(application, account, clusterName, namespace, manifestName); - previousManifestNames.forEach( - name -> { - graph.append( - (stage) -> { - stage.setType(stageType); - Map context = stage.getContext(); - context.put("account", account); - context.put("app", application); - context.put("cloudProvider", cloudProvider); - context.put("manifestName", name); - context.put("location", namespace); + deployedManifests.forEach( + manifest -> { + Map manifestMetadata = (Map) manifest.get("metadata"); + String manifestName = + String.format("replicaSet %s", (String) manifestMetadata.get("name")); + String namespace = (String) manifestMetadata.get("namespace"); + Map annotations = (Map) manifestMetadata.get("annotations"); + String clusterName = (String) annotations.get("moniker.spinnaker.io/cluster"); + String cloudProvider = "kubernetes"; + + List previousManifestNames = + getOldManifestNames(application, account, clusterName, namespace, manifestName); + previousManifestNames.forEach( + name -> { + graph.append( + (stage) -> { + stage.setType(stageType); + Map context = stage.getContext(); + context.put("account", account); + context.put("app", application); + context.put("cloudProvider", cloudProvider); + context.put("manifestName", name); + context.put("location", namespace); + }); }); }); } - private Map getNewManifest(Map parentContext) { + private List> getNewManifests(Map parentContext) { List> manifests = (List>) parentContext.get("outputs.manifests"); - List> replicaSetManifests = - manifests.stream() - .filter(manifest -> manifest.get("kind").equals("ReplicaSet")) - .collect(Collectors.toList()); - if (replicaSetManifests.size() != 1) { - throw new IllegalArgumentException( - "Spinnaker can manage traffic for one ReplicaSet only. Please deploy one ReplicaSet manifest or disable rollout strategies."); - } - return replicaSetManifests.get(0); + return manifests.stream() + .filter(manifest -> manifest.get("kind").equals("ReplicaSet")) + .collect(Collectors.toList()); } private List getOldManifestNames(