// NewImagePipeline attempts to locate a build flow from the provided node. If no such // build flow can be located, false is returned. func NewImagePipelineFromBuildConfigNode(g osgraph.Graph, bcNode *buildgraph.BuildConfigNode) (ImagePipeline, IntSet) { covered := IntSet{} covered.Insert(bcNode.ID()) flow := ImagePipeline{} base, src, coveredInputs, scheduled, _ := findBuildInputs(g, bcNode) covered.Insert(coveredInputs.List()...) flow.BaseImage = base flow.Source = src flow.Build = bcNode flow.ScheduledImport = scheduled flow.LastSuccessfulBuild, flow.LastUnsuccessfulBuild, flow.ActiveBuilds = buildedges.RelevantBuilds(g, flow.Build) flow.Image = findBuildOutput(g, bcNode) // we should have at most one for _, buildOutputNode := range g.SuccessorNodesByEdgeKind(bcNode, buildedges.BuildOutputEdgeKind) { // this will handle the imagestream tag case for _, input := range g.SuccessorNodesByEdgeKind(buildOutputNode, imageedges.ReferencedImageStreamGraphEdgeKind) { imageStreamNode := input.(*imagegraph.ImageStreamNode) flow.DestinationResolved = (len(imageStreamNode.Status.DockerImageRepository) != 0) } // this will handle the imagestream image case for _, input := range g.SuccessorNodesByEdgeKind(buildOutputNode, imageedges.ReferencedImageStreamImageGraphEdgeKind) { imageStreamNode := input.(*imagegraph.ImageStreamNode) flow.DestinationResolved = (len(imageStreamNode.Status.DockerImageRepository) != 0) } // TODO handle the DockerImage case } return flow, covered }
// NewImagePipeline attempts to locate a build flow from the provided node. If no such // build flow can be located, false is returned. func NewImagePipelineFromBuildConfigNode(g osgraph.Graph, bcNode *buildgraph.BuildConfigNode) (ImagePipeline, IntSet) { covered := IntSet{} covered.Insert(bcNode.ID()) flow := ImagePipeline{} base, src, coveredInputs, _ := findBuildInputs(g, bcNode) covered.Insert(coveredInputs.List()...) flow.Build = bcNode flow.BaseImage = base flow.Source = src return flow, covered }
// NewImagePipeline attempts to locate a build flow from the provided node. If no such // build flow can be located, false is returned. func NewImagePipelineFromBuildConfigNode(g osgraph.Graph, bcNode *buildgraph.BuildConfigNode) (ImagePipeline, IntSet) { covered := IntSet{} covered.Insert(bcNode.ID()) flow := ImagePipeline{} base, src, coveredInputs, _ := findBuildInputs(g, bcNode) covered.Insert(coveredInputs.List()...) flow.BaseImage = base flow.Source = src flow.Build = bcNode flow.LastSuccessfulBuild, flow.LastUnsuccessfulBuild, flow.ActiveBuilds = buildedges.RelevantBuilds(g, flow.Build) return flow, covered }