From 2c19bdabfb1e43f4ebdd1203678030423fb9003a Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Sat, 18 Apr 2015 18:33:16 -0400 Subject: [PATCH 1/2] Add build revision info to osc status --- pkg/cmd/cli/describe/projectstatus.go | 43 +++++++++++++++++-- pkg/cmd/cli/describe/projectstatus_test.go | 1 + .../new-project-two-deployment-configs.yaml | 11 +++++ 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/pkg/cmd/cli/describe/projectstatus.go b/pkg/cmd/cli/describe/projectstatus.go index 185167a43550..7436fd56911b 100644 --- a/pkg/cmd/cli/describe/projectstatus.go +++ b/pkg/cmd/cli/describe/projectstatus.go @@ -260,15 +260,52 @@ func describeBuildStatus(build *buildapi.Build, t *util.Time, parentName string) 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", name, time) + return fmt.Sprintf("build %s succeeded %s%s", name, time, revision) case buildapi.BuildStatusError: - return fmt.Sprintf("build %s stopped with an error %s", name, time) + return fmt.Sprintf("build %s stopped with an error %s%s", name, time, revision) default: status := strings.ToLower(string(build.Status)) - return fmt.Sprintf("build %s %s for %s", name, status, time) + return fmt.Sprintf("build %s %s for %s%s", name, status, time, revision) + } +} + +func describeSourceRevision(rev *buildapi.SourceRevision) string { + if rev == nil { + return "" + } + switch { + case rev.Git != nil: + author := describeSourceControlUser(rev.Git.Author) + if len(author) == 0 { + author = describeSourceControlUser(rev.Git.Committer) + } + if len(author) != 0 { + author = fmt.Sprintf(" (%s)", author) + } + commit := rev.Git.Commit + if len(commit) > 7 { + commit = commit[:7] + } + return fmt.Sprintf("%s: %s%s", commit, rev.Git.Message, author) + default: + return "" + } +} + +func describeSourceControlUser(user buildapi.SourceControlUser) string { + if len(user.Name) == 0 { + return user.Email + } + if len(user.Email) == 0 { + return user.Name } + return fmt.Sprintf("%s <%s>", user.Name, user.Email) } func buildTimestamp(build *buildapi.Build) util.Time { diff --git a/pkg/cmd/cli/describe/projectstatus_test.go b/pkg/cmd/cli/describe/projectstatus_test.go index 76d7e339c715..345865a75592 100644 --- a/pkg/cmd/cli/describe/projectstatus_test.go +++ b/pkg/cmd/cli/describe/projectstatus_test.go @@ -112,6 +112,7 @@ func TestProjectStatus(t *testing.T) { "sinatra-app-example-b deploys", "with docker.io/openshift/ruby-20-centos7:latest", "build 1 running for about a minute", + "- 7a4f354: Prepare v1beta3 Template types (Roy Programmer )", "To see more information", }, Time: mustParseTime("2015-04-06T21:20:03Z"), diff --git a/test/fixtures/app-scenarios/new-project-two-deployment-configs.yaml b/test/fixtures/app-scenarios/new-project-two-deployment-configs.yaml index 82d0d216d466..8196f2355605 100644 --- a/test/fixtures/app-scenarios/new-project-two-deployment-configs.yaml +++ b/test/fixtures/app-scenarios/new-project-two-deployment-configs.yaml @@ -68,6 +68,17 @@ items: clean: true image: openshift/ruby-20-centos7 type: STI + revision: + type: git + git: + commit: 7a4f354721b0c9717e46f2e132b269b495d43e2b + message: Prepare v1beta3 Template types + commiter: + name: openshiftbot + email: openshiftbot@redhat.com + author: + name: Roy Programmer + email: someguy@outhere.com startTimestamp: 2015-04-06T21:19:03Z status: Running - apiVersion: v1beta1 From d8199b4396f77e40a8460e2dbe1ac923ab9d30d8 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Sun, 19 Apr 2015 12:41:07 -0400 Subject: [PATCH 2/2] Improve display of standalone build configs In osc status --- pkg/cmd/cli/describe/projectstatus.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/pkg/cmd/cli/describe/projectstatus.go b/pkg/cmd/cli/describe/projectstatus.go index 7436fd56911b..584e04f5f7f0 100644 --- a/pkg/cmd/cli/describe/projectstatus.go +++ b/pkg/cmd/cli/describe/projectstatus.go @@ -83,7 +83,8 @@ func (d *ProjectStatusDescriber) Describe(namespace, name string) (string, error for _, group := range groups { if len(group.Builds) != 0 { for _, build := range group.Builds { - printLines(out, indent, 0, describeImageInPipeline(build, namespace)) + fmt.Fprintln(out) + printLines(out, indent, 0, describeStandaloneBuildGroup(build, namespace)...) printLines(out, indent, 1, describeAdditionalBuildDetail(build.Build, true)...) } continue @@ -147,6 +148,21 @@ func describeDeploymentInServiceGroup(deploy graph.DeploymentFlow) []string { return lines } +func describeStandaloneBuildGroup(pipeline graph.ImagePipeline, namespace string) []string { + switch { + case pipeline.Build != nil: + lines := []string{fmt.Sprintf("%s %s", pipeline.Build.BuildConfig.Name, describeBuildInPipeline(pipeline.Build.BuildConfig, pipeline.BaseImage))} + if pipeline.Image != nil { + lines = append(lines, fmt.Sprintf("pushes to %s", describeImageTagInPipeline(pipeline.Image, namespace))) + } + return lines + case pipeline.Image != nil: + return []string{describeImageTagInPipeline(pipeline.Image, namespace)} + default: + return []string{""} + } +} + func describeImageInPipeline(pipeline graph.ImagePipeline, namespace string) string { switch { case pipeline.Image != nil && pipeline.Build != nil: @@ -266,9 +282,9 @@ func describeBuildStatus(build *buildapi.Build, t *util.Time, parentName string) } switch build.Status { case buildapi.BuildStatusComplete: - return fmt.Sprintf("build %s succeeded %s%s", name, time, revision) + 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%s", name, time, revision) + return fmt.Sprintf("build %s stopped with an error %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)