From a18ba3130b7e547a24b15a8db2920c833ec9936d Mon Sep 17 00:00:00 2001 From: deads2k Date: Thu, 17 Dec 2015 09:54:04 -0500 Subject: [PATCH 1/2] correctly determine build pushability for status --- pkg/api/graph/graphview/image_pipeline.go | 12 ++ pkg/api/graph/test/bare-bc-can-push.yaml | 156 +++++++++++++++++++++ pkg/cmd/cli/describe/projectstatus_test.go | 13 ++ 3 files changed, 181 insertions(+) create mode 100644 pkg/api/graph/test/bare-bc-can-push.yaml diff --git a/pkg/api/graph/graphview/image_pipeline.go b/pkg/api/graph/graphview/image_pipeline.go index fb984dddfdec..f1f0d5f7019c 100644 --- a/pkg/api/graph/graphview/image_pipeline.go +++ b/pkg/api/graph/graphview/image_pipeline.go @@ -76,6 +76,18 @@ func NewImagePipelineFromBuildConfigNode(g osgraph.Graph, bcNode *buildgraph.Bui flow.Build = bcNode flow.LastSuccessfulBuild, flow.LastUnsuccessfulBuild, flow.ActiveBuilds = buildedges.RelevantBuilds(g, flow.Build) + // 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) + } + + // TODO handle the DockerImage case + } + return flow, covered } diff --git a/pkg/api/graph/test/bare-bc-can-push.yaml b/pkg/api/graph/test/bare-bc-can-push.yaml new file mode 100644 index 000000000000..af4383646a32 --- /dev/null +++ b/pkg/api/graph/test/bare-bc-can-push.yaml @@ -0,0 +1,156 @@ +apiVersion: v1 +items: +- apiVersion: v1 + kind: BuildConfig + metadata: + creationTimestamp: 2015-12-16T01:01:33Z + labels: + app: repo-base + name: repo-base + namespace: repo + resourceVersion: "1154628" + selfLink: /oapi/v1/namespaces/repo/buildconfigs/repo-base + uid: 8c7335e2-a390-11e5-94ad-74d43587d03d + spec: + output: + to: + kind: ImageStreamTag + name: repo-base:latest + resources: {} + source: + contextDir: base + git: + uri: https://github.com/redacted/repo-docker + type: Git + strategy: + dockerStrategy: + from: + kind: ImageStreamTag + name: fedora:23 + namespace: openshift + type: Docker + triggers: + - github: + secret: F2DrKO5Qh18YHLXGeMi6 + type: GitHub + - generic: + secret: F825qjppaFbaH5C5wg1A + type: Generic + - type: ConfigChange + - imageChange: + lastTriggeredImageID: library/fedora@sha256:1ff6a16a751bff06dc5043c6e7a54c02a41f69c53ab1158fe6e379a3cc67439f + type: ImageChange + status: + lastVersion: 8 +- apiVersion: v1 + kind: Build + metadata: + annotations: + openshift.io/build.number: "7" + openshift.io/build.pod-name: repo-base-7-build + creationTimestamp: 2015-12-17T01:58:20Z + labels: + app: repo-base + buildconfig: repo-base + openshift.io/build-config.name: repo-base + name: repo-base-7 + namespace: repo + resourceVersion: "1149556" + selfLink: /oapi/v1/namespaces/repo/builds/repo-base-7 + uid: a5ac0818-a461-11e5-9268-74d43587d03d + spec: + output: + pushSecret: + name: builder-dockercfg-jmiml + to: + kind: ImageStreamTag + name: repo-base:latest + resources: {} + serviceAccount: builder + source: + contextDir: base + git: + uri: https://github.com/redacted/repo-docker + type: Git + strategy: + dockerStrategy: + env: + - name: BUILD_LOGLEVEL + value: "8" + from: + kind: DockerImage + name: library/fedora@sha256:1ff6a16a751bff06dc5043c6e7a54c02a41f69c53ab1158fe6e379a3cc67439f + type: Docker + status: + completionTimestamp: 2015-12-17T02:00:03Z + config: + kind: BuildConfig + name: repo-base + namespace: repo + duration: 96000000000 + outputDockerImageReference: 172.30.201.81:5000/repo/repo-base:latest + phase: Failed + startTimestamp: 2015-12-17T01:58:27Z +- apiVersion: v1 + kind: Build + metadata: + annotations: + openshift.io/build.number: "8" + openshift.io/build.pod-name: repo-base-8-build + creationTimestamp: 2015-12-17T14:36:15Z + labels: + app: repo-base + buildconfig: repo-base + openshift.io/build-config.name: repo-base + name: repo-base-8 + namespace: repo + resourceVersion: "1154645" + selfLink: /oapi/v1/namespaces/repo/builds/repo-base-8 + uid: 8704b83b-a4cb-11e5-9268-74d43587d03d + spec: + output: + pushSecret: + name: builder-dockercfg-jmiml + to: + kind: ImageStreamTag + name: repo-base:latest + resources: {} + serviceAccount: builder + source: + contextDir: base + git: + uri: https://github.com/redacted/repo-docker + type: Git + strategy: + dockerStrategy: + from: + kind: DockerImage + name: library/fedora@sha256:1ff6a16a751bff06dc5043c6e7a54c02a41f69c53ab1158fe6e379a3cc67439f + type: Docker + status: + config: + kind: BuildConfig + name: repo-base + namespace: repo + duration: 1000000000 + outputDockerImageReference: 172.30.201.81:5000/repo/repo-base:latest + phase: Running + startTimestamp: 2015-12-17T14:36:24Z +- apiVersion: v1 + kind: ImageStream + metadata: + annotations: + openshift.io/image.dockerRepositoryCheck: 2015-12-16T01:04:08Z + creationTimestamp: 2015-12-16T01:04:08Z + labels: + app: repo-base + name: repo-base + namespace: repo + resourceVersion: "1139441" + selfLink: /oapi/v1/namespaces/repo/imagestreams/repo-base + uid: e8fde4ab-a390-11e5-94ad-74d43587d03d + spec: {} + status: + dockerImageRepository: 172.30.201.81:5000/repo/repo-base +kind: List +metadata: {} diff --git a/pkg/cmd/cli/describe/projectstatus_test.go b/pkg/cmd/cli/describe/projectstatus_test.go index ceceb288eebb..ec1c48e2cc0e 100644 --- a/pkg/cmd/cli/describe/projectstatus_test.go +++ b/pkg/cmd/cli/describe/projectstatus_test.go @@ -171,6 +171,19 @@ func TestProjectStatus(t *testing.T) { "bc/ruby-hello-world is pushing to imagestreamtag/ruby-hello-world:latest that is using is/ruby-hello-world, but the administrator has not configured the integrated Docker registry.", }, }, + "bare-bc-can-push": { + Path: "../../../../pkg/api/graph/test/bare-bc-can-push.yaml", + Extra: []runtime.Object{ + &projectapi.Project{ + ObjectMeta: kapi.ObjectMeta{Name: "example", Namespace: ""}, + }, + }, + ErrFn: func(err error) bool { return err == nil }, + Contains: []string{ + // this makes sure that status knows this can push + "#8 build running for 2 hours\n", + }, + }, "cyclical build": { Path: "../../../../pkg/api/graph/test/circular.yaml", Extra: []runtime.Object{ From e437530523e398bfc98c2164820e53ff541e71a0 Mon Sep 17 00:00:00 2001 From: deads2k Date: Thu, 17 Dec 2015 10:30:07 -0500 Subject: [PATCH 2/2] fix extra indentation for bare builds --- pkg/api/graph/test/bare-bc-can-push.yaml | 7 ------- pkg/cmd/cli/describe/projectstatus.go | 5 +++-- pkg/cmd/cli/describe/projectstatus_test.go | 4 ++-- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/pkg/api/graph/test/bare-bc-can-push.yaml b/pkg/api/graph/test/bare-bc-can-push.yaml index af4383646a32..6a8e9955efff 100644 --- a/pkg/api/graph/test/bare-bc-can-push.yaml +++ b/pkg/api/graph/test/bare-bc-can-push.yaml @@ -7,7 +7,6 @@ items: labels: app: repo-base name: repo-base - namespace: repo resourceVersion: "1154628" selfLink: /oapi/v1/namespaces/repo/buildconfigs/repo-base uid: 8c7335e2-a390-11e5-94ad-74d43587d03d @@ -27,7 +26,6 @@ items: from: kind: ImageStreamTag name: fedora:23 - namespace: openshift type: Docker triggers: - github: @@ -54,7 +52,6 @@ items: buildconfig: repo-base openshift.io/build-config.name: repo-base name: repo-base-7 - namespace: repo resourceVersion: "1149556" selfLink: /oapi/v1/namespaces/repo/builds/repo-base-7 uid: a5ac0818-a461-11e5-9268-74d43587d03d @@ -86,7 +83,6 @@ items: config: kind: BuildConfig name: repo-base - namespace: repo duration: 96000000000 outputDockerImageReference: 172.30.201.81:5000/repo/repo-base:latest phase: Failed @@ -103,7 +99,6 @@ items: buildconfig: repo-base openshift.io/build-config.name: repo-base name: repo-base-8 - namespace: repo resourceVersion: "1154645" selfLink: /oapi/v1/namespaces/repo/builds/repo-base-8 uid: 8704b83b-a4cb-11e5-9268-74d43587d03d @@ -131,7 +126,6 @@ items: config: kind: BuildConfig name: repo-base - namespace: repo duration: 1000000000 outputDockerImageReference: 172.30.201.81:5000/repo/repo-base:latest phase: Running @@ -145,7 +139,6 @@ items: labels: app: repo-base name: repo-base - namespace: repo resourceVersion: "1139441" selfLink: /oapi/v1/namespaces/repo/imagestreams/repo-base uid: e8fde4ab-a390-11e5-94ad-74d43587d03d diff --git a/pkg/cmd/cli/describe/projectstatus.go b/pkg/cmd/cli/describe/projectstatus.go index 35abad320fa8..29bf9a223190 100644 --- a/pkg/cmd/cli/describe/projectstatus.go +++ b/pkg/cmd/cli/describe/projectstatus.go @@ -190,8 +190,9 @@ func (d *ProjectStatusDescriber) Describe(namespace, name string) (string, error for _, standaloneImage := range standaloneImages { fmt.Fprintln(out) - printLines(out, indent, 0, describeStandaloneBuildGroup(standaloneImage, namespace)...) - printLines(out, indent, 1, describeAdditionalBuildDetail(standaloneImage.Build, standaloneImage.LastSuccessfulBuild, standaloneImage.LastUnsuccessfulBuild, standaloneImage.ActiveBuilds, standaloneImage.DestinationResolved, true)...) + lines := describeStandaloneBuildGroup(standaloneImage, namespace) + lines = append(lines, describeAdditionalBuildDetail(standaloneImage.Build, standaloneImage.LastSuccessfulBuild, standaloneImage.LastUnsuccessfulBuild, standaloneImage.ActiveBuilds, standaloneImage.DestinationResolved, true)...) + printLines(out, indent, 0, lines...) } for _, standaloneRC := range standaloneRCs { diff --git a/pkg/cmd/cli/describe/projectstatus_test.go b/pkg/cmd/cli/describe/projectstatus_test.go index ec1c48e2cc0e..556cd47e1c7c 100644 --- a/pkg/cmd/cli/describe/projectstatus_test.go +++ b/pkg/cmd/cli/describe/projectstatus_test.go @@ -180,8 +180,8 @@ func TestProjectStatus(t *testing.T) { }, ErrFn: func(err error) bool { return err == nil }, Contains: []string{ - // this makes sure that status knows this can push - "#8 build running for 2 hours\n", + // this makes sure that status knows this can push. If it fails, there's a "(can't push image)" next to like #8 + " hours\n #7", }, }, "cyclical build": {