// NewDeploymentConfigPipeline returns the DeploymentConfigPipeline and a set of all the NodeIDs covered by the DeploymentConfigPipeline func NewDeploymentConfigPipeline(g osgraph.Graph, dcNode *deploygraph.DeploymentConfigNode) (DeploymentConfigPipeline, IntSet) { covered := IntSet{} covered.Insert(dcNode.ID()) dcPipeline := DeploymentConfigPipeline{} dcPipeline.Deployment = dcNode // for everything that can trigger a deployment, create an image pipeline and add it to the list for _, istNode := range g.PredecessorNodesByEdgeKind(dcNode, deployedges.TriggersDeploymentEdgeKind) { imagePipeline, covers := NewImagePipelineFromImageTagLocation(g, istNode, istNode.(ImageTagLocation)) covered.Insert(covers.List()...) dcPipeline.Images = append(dcPipeline.Images, imagePipeline) } // for image that we use, create an image pipeline and add it to the list for _, tagNode := range g.PredecessorNodesByEdgeKind(dcNode, deployedges.UsedInDeploymentEdgeKind) { imagePipeline, covers := NewImagePipelineFromImageTagLocation(g, tagNode, tagNode.(ImageTagLocation)) covered.Insert(covers.List()...) dcPipeline.Images = append(dcPipeline.Images, imagePipeline) } dcPipeline.ActiveDeployment, dcPipeline.InactiveDeployments = deployedges.RelevantDeployments(g, dcNode) return dcPipeline, covered }
// TODO kill this. It should be based on an edge traversal to loaded replication controllers func JoinDeployments(node *deploygraph.DeploymentConfigNode, deploys []kapi.ReplicationController) { matches := []*kapi.ReplicationController{} for i := range deploys { if belongsToDeploymentConfig(node.DeploymentConfig, &deploys[i]) { matches = append(matches, &deploys[i]) } } if len(matches) == 0 { return } sort.Sort(RecentDeploymentReferences(matches)) if node.DeploymentConfig.LatestVersion == deployutil.DeploymentVersionFor(matches[0]) { node.ActiveDeployment = matches[0] node.Deployments = matches[1:] return } node.Deployments = matches }