func describeBuildInPipeline(build *buildapi.BuildConfig, baseImage graph.ImageTagLocation) string { switch build.Parameters.Strategy.Type { case buildapi.DockerBuildStrategyType: // TODO: handle case where no source repo source, ok := describeSourceInPipeline(&build.Parameters.Source) if !ok { return "docker build; no source set" } return fmt.Sprintf("docker build of %s", source) case buildapi.SourceBuildStrategyType: source, ok := describeSourceInPipeline(&build.Parameters.Source) if !ok { return fmt.Sprintf("unconfigured source build %s", build.Name) } if baseImage == nil { return fmt.Sprintf("%s; no image set", source) } return fmt.Sprintf("builds %s with %s", source, baseImage.ImageSpec()) case buildapi.CustomBuildStrategyType: source, ok := describeSourceInPipeline(&build.Parameters.Source) if !ok { return fmt.Sprintf("custom build %s", build.Name) } return fmt.Sprintf("custom build of %s", source) default: return fmt.Sprintf("unrecognized build %s", build.Name) } }
func describeImageTagInPipeline(image graph.ImageTagLocation, namespace string) string { switch t := image.(type) { case *graph.ImageStreamTagNode: if t.ImageStream.Namespace != namespace { return image.ImageSpec() } return fmt.Sprintf("%s:%s", t.ImageStream.Name, image.ImageTag()) default: return image.ImageSpec() } }