func describeBuildStatus(build *buildapi.Build, t *util.Time, parentName string) string { if t == nil { ts := buildTimestamp(build) t = &ts } var time string if t.IsZero() { time = "<unknown>" } else { time = strings.ToLower(formatRelativeTime(t.Time)) } name := build.Name prefix := parentName + "-" if strings.HasPrefix(name, prefix) { name = name[len(prefix):] } revision := describeSourceRevision(build.Parameters.Revision) if len(revision) != 0 { revision = fmt.Sprintf(" - %s", revision) } switch build.Status { case buildapi.BuildStatusComplete: return fmt.Sprintf("build %s succeeded %s ago%s", name, time, revision) case buildapi.BuildStatusError: return fmt.Sprintf("build %s stopped with an error %s ago%s", name, time, revision) case buildapi.BuildStatusFailed: return fmt.Sprintf("build %s failed %s ago%s", name, time, revision) default: status := strings.ToLower(string(build.Status)) return fmt.Sprintf("build %s %s for %s%s", name, status, time, revision) } }
func printImageStream(stream *imageapi.ImageStream, w io.Writer, withNamespace, wide bool, columnLabels []string) error { tags := "" set := util.NewStringSet() var latest util.Time for tag, list := range stream.Status.Tags { set.Insert(tag) if len(list.Items) > 0 { if list.Items[0].Created.After(latest.Time) { latest = list.Items[0].Created } } } latestTime := "" if !latest.IsZero() { latestTime = fmt.Sprintf("%s ago", formatRelativeTime(latest.Time)) } tags = strings.Join(set.List(), ",") _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", stream.Name, stream.Status.DockerImageRepository, tags, latestTime) return err }
func describeBuildPhase(build *buildapi.Build, t *util.Time, parentName string, pushTargetResolved bool) string { imageStreamFailure := "" // if we're using an image stream and that image stream is the internal registry and that registry doesn't exist if (build.Spec.Output.To != nil) && !pushTargetResolved { imageStreamFailure = " (can't push to image)" } if t == nil { ts := buildTimestamp(build) t = &ts } var time string if t.IsZero() { time = "<unknown>" } else { time = strings.ToLower(formatRelativeTime(t.Time)) } name := build.Name prefix := parentName + "-" if strings.HasPrefix(name, prefix) { name = name[len(prefix):] } revision := describeSourceRevision(build.Spec.Revision) if len(revision) != 0 { revision = fmt.Sprintf(" - %s", revision) } switch build.Status.Phase { case buildapi.BuildPhaseComplete: return fmt.Sprintf("build %s succeeded %s ago%s%s", name, time, revision, imageStreamFailure) case buildapi.BuildPhaseError: return fmt.Sprintf("build %s stopped with an error %s ago%s%s", name, time, revision, imageStreamFailure) case buildapi.BuildPhaseFailed: return fmt.Sprintf("build %s failed %s ago%s%s", name, time, revision, imageStreamFailure) default: status := strings.ToLower(string(build.Status.Phase)) return fmt.Sprintf("build %s %s for %s%s%s", name, status, time, revision, imageStreamFailure) } }