From 9c5c0cbd1667739fa16dcff2618f14dc41156d37 Mon Sep 17 00:00:00 2001 From: Corinne Krych Date: Fri, 18 Jan 2019 15:16:59 +0100 Subject: [PATCH] initial clean-up of deployment API --- .codecov.yml | 2 +- Gopkg.lock | 126 +- Makefile | 15 +- controller/deployments.go | 606 --- controller/deployments_blackbox_test.go | 958 ----- controller/deployments_osioclient.go | 175 - controller/deployments_osioclient_test.go | 470 --- controller/deployments_urlprovider.go | 337 -- controller/deployments_urlprovider_test.go | 302 -- controller/space.go | 109 - controller/space_blackbox_test.go | 104 +- controller/space_test.go | 55 - .../endpoints/list/ok.res.payload.golden.json | 5 - design/deployments.go | 383 -- design/spaces.go | 2 - kubernetes/deployments_access.go | 388 -- .../deployments_access_blackbox_test.go | 458 --- kubernetes/deployments_kubeclient.go | 2439 ------------ .../deployments_kubeclient_blackbox_test.go | 2138 ----------- .../deployments_kubeclient_whitebox_test.go | 312 -- kubernetes/deployments_metrics.go | 307 -- .../deployments_metrics_blackbox_test.go | 402 -- main.go | 4 - .../kubernetes/can-i-all-groups-resource.yaml | 703 ---- test/kubernetes/can-i-all-groups.yaml | 703 ---- test/kubernetes/can-i-all-resource.yaml | 703 ---- test/kubernetes/can-i-bad-resource.yaml | 692 ---- test/kubernetes/can-i-bad-rule.yaml | 692 ---- test/kubernetes/can-i-bad-verbs.yaml | 692 ---- test/kubernetes/can-i-empty-group.yaml | 689 ---- test/kubernetes/can-i-no-builds.yaml | 690 ---- test/kubernetes/can-i-no-dc.yaml | 690 ---- test/kubernetes/can-i-no-quotas.yaml | 690 ---- test/kubernetes/can-i-no-rules.yaml | 85 - test/kubernetes/can-i-no-status.yaml | 82 - test/kubernetes/can-i.yaml | 691 ---- .../deletedeployment-badroutes.yaml | 853 ----- .../deletedeployment-badservices.yaml | 853 ----- .../deletedeployment-delete-dc-error.yaml | 703 ---- .../deletedeployment-delete-routes-error.yaml | 848 ----- .../deletedeployment-delete-svc-error.yaml | 845 ----- .../deletedeployment-get-dc-error.yaml | 703 ---- .../deletedeployment-get-routes-error.yaml | 848 ----- .../deletedeployment-get-svc-error.yaml | 845 ----- .../kubernetes/deletedeployment-nobuilds.yaml | 770 ---- test/kubernetes/deletedeployment-nodc.yaml | 649 ---- .../kubernetes/deletedeployment-noroutes.yaml | 728 ---- .../deletedeployment-noservices.yaml | 722 ---- .../deletedeployment-wrongspace.yaml | 853 ----- test/kubernetes/deletedeployment.yaml | 853 ----- test/kubernetes/get-dc-name-for-app.yaml | 1494 -------- test/kubernetes/getapplication-nopods.yaml | 1422 ------- test/kubernetes/getapplication.yaml | 2156 ----------- .../kubernetes/getdeployment-build-error.yaml | 1223 ------ test/kubernetes/getdeployment-dc-error.yaml | 1110 ------ test/kubernetes/getdeployment-nospace.yaml | 1224 ------ test/kubernetes/getdeployment-pod-error.yaml | 871 ----- test/kubernetes/getdeployment-rc-error.yaml | 1143 ------ .../kubernetes/getdeployment-route-error.yaml | 1205 ------ .../kubernetes/getdeployment-scaled-down.yaml | 1558 -------- test/kubernetes/getdeployment-svc-error.yaml | 1199 ------ test/kubernetes/getdeployment-wrongspace.yaml | 1260 ------- test/kubernetes/getdeployment.yaml | 1260 ------- .../getenvironment-all-objects.yaml | 105 - .../kubernetes/getenvironment-no-compute.yaml | 62 - test/kubernetes/getenvironment-no-cpu.yaml | 90 - test/kubernetes/getenvironment-no-mem.yaml | 90 - .../kubernetes/getenvironment-no-objects.yaml | 59 - test/kubernetes/getenvironments-rq-error.yaml | 207 -- test/kubernetes/getenvironments.yaml | 271 -- test/kubernetes/getspace-bc-error.yaml | 1330 ------- test/kubernetes/getspace-empty-bc.yaml | 27 - test/kubernetes/getspace-no-items.yaml | 26 - test/kubernetes/getspace-no-metadata.yaml | 71 - test/kubernetes/getspace-no-name.yaml | 87 - test/kubernetes/getspace-not-object.yaml | 29 - .../getspace-two-apps-one-deploy.yaml | 1553 -------- .../getspace-two-apps-two-deploy.yaml | 3033 --------------- test/kubernetes/getspace-wrong-list.yaml | 88 - test/kubernetes/getspace.yaml | 1345 ------- ...paceandotherenvironmentusage-rq-error.yaml | 1549 -------- .../getspaceandotherenvironmentusage.yaml | 3301 ----------------- .../kubernetes/newkubeclient-statuserror.yaml | 32 - test/kubernetes/podquota-emptyresources.yaml | 397 -- test/kubernetes/podquota-multicontainer.yaml | 468 --- test/kubernetes/podquota-noresources.yaml | 396 -- test/kubernetes/podquota-split.yaml | 406 -- test/kubernetes/podquota.yaml | 415 --- .../kubernetes/scaledeployment-get-error.yaml | 463 --- .../kubernetes/scaledeployment-put-error.yaml | 463 --- test/kubernetes/scaledeployment-zero.yaml | 428 --- test/kubernetes/scaledeployment.yaml | 433 --- .../urlprovider-tenant-default.json | 32 - .../urlprovider-tenant-malformed.json | 18 - .../urlprovider-tenant-missingurls.json | 18 - .../urlprovider-user-services-empty-type.json | 75 - .../urlprovider-user-services-no-type.json | 74 - .../kubernetes/urlprovider-user-services.json | 75 - 98 files changed, 54 insertions(+), 63559 deletions(-) delete mode 100644 controller/deployments.go delete mode 100644 controller/deployments_blackbox_test.go delete mode 100644 controller/deployments_osioclient.go delete mode 100644 controller/deployments_osioclient_test.go delete mode 100644 controller/deployments_urlprovider.go delete mode 100644 controller/deployments_urlprovider_test.go delete mode 100644 design/deployments.go delete mode 100644 kubernetes/deployments_access.go delete mode 100644 kubernetes/deployments_access_blackbox_test.go delete mode 100644 kubernetes/deployments_kubeclient.go delete mode 100644 kubernetes/deployments_kubeclient_blackbox_test.go delete mode 100644 kubernetes/deployments_kubeclient_whitebox_test.go delete mode 100644 kubernetes/deployments_metrics.go delete mode 100644 kubernetes/deployments_metrics_blackbox_test.go delete mode 100644 test/kubernetes/can-i-all-groups-resource.yaml delete mode 100644 test/kubernetes/can-i-all-groups.yaml delete mode 100644 test/kubernetes/can-i-all-resource.yaml delete mode 100644 test/kubernetes/can-i-bad-resource.yaml delete mode 100644 test/kubernetes/can-i-bad-rule.yaml delete mode 100644 test/kubernetes/can-i-bad-verbs.yaml delete mode 100644 test/kubernetes/can-i-empty-group.yaml delete mode 100644 test/kubernetes/can-i-no-builds.yaml delete mode 100644 test/kubernetes/can-i-no-dc.yaml delete mode 100644 test/kubernetes/can-i-no-quotas.yaml delete mode 100644 test/kubernetes/can-i-no-rules.yaml delete mode 100644 test/kubernetes/can-i-no-status.yaml delete mode 100644 test/kubernetes/can-i.yaml delete mode 100644 test/kubernetes/deletedeployment-badroutes.yaml delete mode 100644 test/kubernetes/deletedeployment-badservices.yaml delete mode 100644 test/kubernetes/deletedeployment-delete-dc-error.yaml delete mode 100644 test/kubernetes/deletedeployment-delete-routes-error.yaml delete mode 100644 test/kubernetes/deletedeployment-delete-svc-error.yaml delete mode 100644 test/kubernetes/deletedeployment-get-dc-error.yaml delete mode 100644 test/kubernetes/deletedeployment-get-routes-error.yaml delete mode 100644 test/kubernetes/deletedeployment-get-svc-error.yaml delete mode 100644 test/kubernetes/deletedeployment-nobuilds.yaml delete mode 100644 test/kubernetes/deletedeployment-nodc.yaml delete mode 100644 test/kubernetes/deletedeployment-noroutes.yaml delete mode 100644 test/kubernetes/deletedeployment-noservices.yaml delete mode 100644 test/kubernetes/deletedeployment-wrongspace.yaml delete mode 100644 test/kubernetes/deletedeployment.yaml delete mode 100644 test/kubernetes/get-dc-name-for-app.yaml delete mode 100644 test/kubernetes/getapplication-nopods.yaml delete mode 100644 test/kubernetes/getapplication.yaml delete mode 100644 test/kubernetes/getdeployment-build-error.yaml delete mode 100644 test/kubernetes/getdeployment-dc-error.yaml delete mode 100644 test/kubernetes/getdeployment-nospace.yaml delete mode 100644 test/kubernetes/getdeployment-pod-error.yaml delete mode 100644 test/kubernetes/getdeployment-rc-error.yaml delete mode 100644 test/kubernetes/getdeployment-route-error.yaml delete mode 100644 test/kubernetes/getdeployment-scaled-down.yaml delete mode 100644 test/kubernetes/getdeployment-svc-error.yaml delete mode 100644 test/kubernetes/getdeployment-wrongspace.yaml delete mode 100644 test/kubernetes/getdeployment.yaml delete mode 100644 test/kubernetes/getenvironment-all-objects.yaml delete mode 100644 test/kubernetes/getenvironment-no-compute.yaml delete mode 100644 test/kubernetes/getenvironment-no-cpu.yaml delete mode 100644 test/kubernetes/getenvironment-no-mem.yaml delete mode 100644 test/kubernetes/getenvironment-no-objects.yaml delete mode 100644 test/kubernetes/getenvironments-rq-error.yaml delete mode 100644 test/kubernetes/getenvironments.yaml delete mode 100644 test/kubernetes/getspace-bc-error.yaml delete mode 100644 test/kubernetes/getspace-empty-bc.yaml delete mode 100644 test/kubernetes/getspace-no-items.yaml delete mode 100644 test/kubernetes/getspace-no-metadata.yaml delete mode 100644 test/kubernetes/getspace-no-name.yaml delete mode 100644 test/kubernetes/getspace-not-object.yaml delete mode 100644 test/kubernetes/getspace-two-apps-one-deploy.yaml delete mode 100644 test/kubernetes/getspace-two-apps-two-deploy.yaml delete mode 100644 test/kubernetes/getspace-wrong-list.yaml delete mode 100644 test/kubernetes/getspace.yaml delete mode 100644 test/kubernetes/getspaceandotherenvironmentusage-rq-error.yaml delete mode 100644 test/kubernetes/getspaceandotherenvironmentusage.yaml delete mode 100644 test/kubernetes/newkubeclient-statuserror.yaml delete mode 100644 test/kubernetes/podquota-emptyresources.yaml delete mode 100644 test/kubernetes/podquota-multicontainer.yaml delete mode 100644 test/kubernetes/podquota-noresources.yaml delete mode 100644 test/kubernetes/podquota-split.yaml delete mode 100644 test/kubernetes/podquota.yaml delete mode 100644 test/kubernetes/scaledeployment-get-error.yaml delete mode 100644 test/kubernetes/scaledeployment-put-error.yaml delete mode 100644 test/kubernetes/scaledeployment-zero.yaml delete mode 100644 test/kubernetes/scaledeployment.yaml delete mode 100644 test/kubernetes/urlprovider-tenant-default.json delete mode 100644 test/kubernetes/urlprovider-tenant-malformed.json delete mode 100644 test/kubernetes/urlprovider-tenant-missingurls.json delete mode 100644 test/kubernetes/urlprovider-user-services-empty-type.json delete mode 100644 test/kubernetes/urlprovider-user-services-no-type.json delete mode 100644 test/kubernetes/urlprovider-user-services.json diff --git a/.codecov.yml b/.codecov.yml index 416bf5ac55..eaa70ce6f5 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -33,7 +33,7 @@ coverage: # See http://docs.codecov.io/docs/pull-request-comments-1 comment: layout: "header, diff, tree" - behavior: # defualt = posts once then update, posts new if delete + behavior: # default = posts once then update, posts new if delete # once = post once then updates # new = delete old, post new # spammy = post new diff --git a/Gopkg.lock b/Gopkg.lock index 129400322d..1ae823145b 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -1,17 +1,6 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. -[[projects]] - name = "github.com/PuerkitoBio/purell" - packages = ["."] - revision = "8a290539e2e8629dbc4e6bad948158f790ec31f4" - version = "v1.0.0" - -[[projects]] - name = "github.com/PuerkitoBio/urlesc" - packages = ["."] - revision = "5bd2802263f21d8788851d5305584c82a5c75d7e" - [[projects]] name = "github.com/ajg/form" packages = ["."] @@ -82,18 +71,11 @@ [[projects]] name = "github.com/docker/distribution" packages = [ - "digest", + "digestset", "reference" ] - revision = "cd27f179f2c10c5d300e6d09025b538c475b0d51" - -[[projects]] - name = "github.com/emicklei/go-restful" - packages = [ - ".", - "log" - ] - revision = "ff4f55a206334ef123e4f79bbf348980da81ca46" + revision = "2461543d988979529609e8cb6fca9ca190dc48da" + version = "v2.7.1" [[projects]] name = "github.com/fabric8-services/fabric8-auth" @@ -164,26 +146,6 @@ revision = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7" version = "v1.0.0" -[[projects]] - name = "github.com/go-openapi/jsonpointer" - packages = ["."] - revision = "46af16f9f7b149af66e5d1bd010e3574dc06de98" - -[[projects]] - name = "github.com/go-openapi/jsonreference" - packages = ["."] - revision = "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" - -[[projects]] - name = "github.com/go-openapi/spec" - packages = ["."] - revision = "6aced65f8501fe1217321abf0749d354824ba2ff" - -[[projects]] - name = "github.com/go-openapi/swag" - packages = ["."] - revision = "1d0bd113de87027671077d3c71eb3ac5d7dbba72" - [[projects]] name = "github.com/goadesign/goa" packages = [ @@ -222,7 +184,8 @@ "proto", "sortkeys" ] - revision = "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + revision = "4cbf7e384e768b4e01799441fdf2a706a5635ae7" + version = "v1.2.0" [[projects]] branch = "master" @@ -240,9 +203,10 @@ revision = "3815f8d1b952717b22f2905b1a91896dfa77fab1" [[projects]] + branch = "master" name = "github.com/golang/glog" packages = ["."] - revision = "44145f04b68cf362d9c4df2182967c2275eaefed" + revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998" [[projects]] name = "github.com/golang/lint" @@ -265,9 +229,10 @@ revision = "9235644dd9e52eeae6fa48efd539fdc351a0af53" [[projects]] + branch = "master" name = "github.com/google/gofuzz" packages = ["."] - revision = "44d81051d367757e1c7c6a5a86423ece9afcf63c" + revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" [[projects]] name = "github.com/google/gops" @@ -306,12 +271,6 @@ ] revision = "37ab263305aaeb501a60eb16863e808d426e37f2" -[[projects]] - name = "github.com/hawkular/hawkular-client-go" - packages = ["metrics"] - revision = "3ec6f27f0d339f9aee02ee4ad545581e52b40e19" - version = "v0.6.1" - [[projects]] name = "github.com/howeyc/fsnotify" packages = ["."] @@ -335,6 +294,12 @@ packages = ["."] revision = "74387dc39a75e970e7a3ae6a3386b5bd2e5c5cff" +[[projects]] + name = "github.com/json-iterator/go" + packages = ["."] + revision = "1624edc4454b8682399def8740d46db5e4362ba4" + version = "v1.1.5" + [[projects]] name = "github.com/jstemmer/go-junit-report" packages = [ @@ -355,8 +320,8 @@ [[projects]] name = "github.com/juju/ratelimit" packages = ["."] - revision = "5b9ff866471762aa2ab2dced63c9fb6f53921342" - version = "1.0" + revision = "59fac5042749a5afb9af70e813da1dd5474f0167" + version = "1.0.1" [[projects]] branch = "master" @@ -378,15 +343,6 @@ revision = "c3beff4c2358b44d0493c7dda585e7db7ff28ae6" version = "v1.7.6" -[[projects]] - name = "github.com/mailru/easyjson" - packages = [ - "buffer", - "jlexer", - "jwriter" - ] - revision = "d5b7844b561a7bc640052f1b935f7b800330d7e0" - [[projects]] name = "github.com/manveru/faker" packages = ["."] @@ -419,6 +375,24 @@ packages = ["."] revision = "5a0325d7fafaac12dda6e7fb8bd222ec1b69875e" +[[projects]] + name = "github.com/modern-go/concurrent" + packages = ["."] + revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" + version = "1.0.3" + +[[projects]] + name = "github.com/modern-go/reflect2" + packages = ["."] + revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" + version = "1.0.1" + +[[projects]] + name = "github.com/opencontainers/go-digest" + packages = ["."] + revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf" + version = "v1.0.0-rc1" + [[projects]] name = "github.com/pelletier/go-buffruneio" packages = ["."] @@ -580,7 +554,8 @@ [[projects]] name = "github.com/ugorji/go" packages = ["codec"] - revision = "ded73eae5db7e7a0ef6f55aace87a2873c5d2b74" + revision = "b4c50a2b199d93b13dc15e78929cfb23bfdf21ab" + version = "v1.1.1" [[projects]] name = "github.com/wadey/gocovmerge" @@ -652,21 +627,12 @@ [[projects]] name = "golang.org/x/text" packages = [ - "cases", "internal/gen", - "internal/tag", "internal/triegen", "internal/ucd", - "language", - "runes", - "secure/bidirule", - "secure/precis", "transform", - "unicode/bidi", "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - "width" + "unicode/norm" ] revision = "2910a502d2bf9e43193af9d68ca516529614eed3" @@ -705,8 +671,8 @@ [[projects]] name = "gopkg.in/inf.v0" packages = ["."] - revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" - version = "v0.9.0" + revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" + version = "v0.9.1" [[projects]] name = "gopkg.in/square/go-jose.v2" @@ -724,9 +690,9 @@ revision = "a5b47d31c556af34a302ce5d659e6fea44d90de0" [[projects]] + branch = "release-1.10" name = "k8s.io/apimachinery" packages = [ - "pkg/api/equality", "pkg/api/errors", "pkg/api/meta", "pkg/api/resource", @@ -735,13 +701,11 @@ "pkg/apimachinery/registered", "pkg/apis/meta/v1", "pkg/apis/meta/v1/unstructured", - "pkg/apis/meta/v1alpha1", + "pkg/apis/meta/v1beta1", "pkg/conversion", "pkg/conversion/queryparams", - "pkg/conversion/unstructured", "pkg/fields", "pkg/labels", - "pkg/openapi", "pkg/runtime", "pkg/runtime/schema", "pkg/runtime/serializer", @@ -771,16 +735,14 @@ "pkg/watch", "third_party/forked/golang/reflect" ] - revision = "1fd2e63a9a370677308a42f24fd40c86438afddf" + revision = "d49e237a2683fa6dc43a86c7b1b766e0219fb6e7" [[projects]] name = "k8s.io/client-go" packages = [ "kubernetes/scheme", - "kubernetes/typed/core/v1", "pkg/api", "pkg/api/v1", - "pkg/api/v1/ref", "pkg/apis/admissionregistration", "pkg/apis/admissionregistration/v1alpha1", "pkg/apis/apps", @@ -832,6 +794,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "e7df91037ab0c7ad2e50d84dfcf15acb31ab40a3ddd4cf6bd613125023151cef" + inputs-digest = "581a42a7cffa08b164c8c731858bbf47f29c43f160fd705f5c371a5fc2acf30b" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Makefile b/Makefile index c164c53f22..2937cf00ca 100644 --- a/Makefile +++ b/Makefile @@ -287,19 +287,6 @@ app/controllers.go: $(DESIGNS) $(GOAGEN_BIN) $(VENDOR_DIR) goasupport/jsonapi_er $(GOAGEN_BIN) client -d github.com/fabric8-services/fabric8-notification/design --notool --pkg client -o notification $(GOAGEN_BIN) client -d github.com/fabric8-services/fabric8-auth/design --notool --pkg authservice -o auth -$(MINIMOCK_BIN): - @echo "building the minimock binary..." - @cd $(VENDOR_DIR)/github.com/gojuno/minimock/cmd/minimock && go build -v minimock.go - -.PHONY: generate-minimock -generate-minimock: deps $(MINIMOCK_BIN) ## Generate Minimock sources. Only necessary after clean or if changes occurred in interfaces. - @echo "Generating mocks..." - -mkdir -p test/controller - $(MINIMOCK_BIN) -i github.com/fabric8-services/fabric8-wit/controller.ClientGetter -o ./test/controller/client_getter_mock.go -t ClientGetterMock - $(MINIMOCK_BIN) -i github.com/fabric8-services/fabric8-wit/controller.OpenshiftIOClient -o ./test/controller/osio_client_mock.go -t OSIOClientMock - -mkdir -p test/kubernetes - $(MINIMOCK_BIN) -i github.com/fabric8-services/fabric8-wit/kubernetes.KubeClientInterface -o ./test/kubernetes/kube_client_mock.go -t KubeClientMock - .PHONY: migrate-database ## Compiles the server and runs the database migration with it migrate-database: $(BINARY_SERVER_BIN) @@ -307,7 +294,7 @@ migrate-database: $(BINARY_SERVER_BIN) .PHONY: generate ## Generate GOA sources. Only necessary after clean of if changed `design` folder. -generate: app/controllers.go migration/sqlbindata.go spacetemplate/template_assets.go generate-minimock swagger/swagger_assets.go +generate: app/controllers.go migration/sqlbindata.go spacetemplate/template_assets.go swagger/swagger_assets.go .PHONY: regenerate ## Runs the "clean-generated" and the "generate" target diff --git a/controller/deployments.go b/controller/deployments.go deleted file mode 100644 index 28616cf5af..0000000000 --- a/controller/deployments.go +++ /dev/null @@ -1,606 +0,0 @@ -package controller - -import ( - "context" - "encoding/json" - "io" - "net/url" - "os" - "time" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/configuration" - "github.com/fabric8-services/fabric8-wit/errors" - "github.com/fabric8-services/fabric8-wit/jsonapi" - "github.com/fabric8-services/fabric8-wit/kubernetes" - "github.com/fabric8-services/fabric8-wit/log" - - "github.com/goadesign/goa" - errs "github.com/pkg/errors" - uuid "github.com/satori/go.uuid" - "golang.org/x/net/websocket" - metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" - v1 "k8s.io/client-go/pkg/api/v1" - "k8s.io/client-go/tools/cache" -) - -// DeploymentsController implements the deployments resource. -type DeploymentsController struct { - *goa.Controller - Config *configuration.Registry - ClientGetter -} - -// ClientGetter creates an instances of clients used by this controller -type ClientGetter interface { - GetKubeClient(ctx context.Context) (kubernetes.KubeClientInterface, error) - GetAndCheckOSIOClient(ctx context.Context) (OpenshiftIOClient, error) -} - -// Default implementation of KubeClientGetter and OSIOClientGetter used by NewDeploymentsController -type defaultClientGetter struct { - config *configuration.Registry -} - -// NewDeploymentsController creates a deployments controller. -func NewDeploymentsController(service *goa.Service, config *configuration.Registry) *DeploymentsController { - return &DeploymentsController{ - Controller: service.NewController("DeploymentsController"), - Config: config, - ClientGetter: &defaultClientGetter{ - config: config, - }, - } -} - -func tostring(item interface{}) string { - bytes, err := json.MarshalIndent(item, "", " ") - if err != nil { - return err.Error() - } - return string(bytes) -} - -func (g *defaultClientGetter) GetAndCheckOSIOClient(ctx context.Context) (OpenshiftIOClient, error) { - - // defaults - host := "localhost" - scheme := "https" - - req := goa.ContextRequest(ctx) - if req != nil { - // Note - it's probably more efficient to force a loopback host, and only use the port number here - // (on some systems using a non-loopback interface forces a network stack traverse) - host = req.Host - scheme = req.URL.Scheme - } - - // The deployments API communicates with the rest of WIT via the stnadard WIT API. - // This environment variable is used for local development of the deployments API, to point ot a remote WIT. - witURLStr := os.Getenv("FABRIC8_WIT_API_URL") - if witURLStr != "" { - witurl, err := url.Parse(witURLStr) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "FABRIC8_WIT_API_URL": witURLStr, - "err": err, - }, "cannot parse FABRIC8_WIT_API_URL: %s", witURLStr) - return nil, errs.Wrapf(err, "cannot parse FABRIC8_WIT_API_URL: %s", witURLStr) - } - host = witurl.Host - scheme = witurl.Scheme - } - - oc := NewOSIOClient(ctx, scheme, host) - - return oc, nil -} - -// getSpaceNameFromSpaceID() converts an OSIO Space UUID to an OpenShift space name. -// will return an error if the space is not found. -func (c *DeploymentsController) getSpaceNameFromSpaceID(ctx context.Context, spaceID uuid.UUID) (*string, error) { - // TODO - add a cache in DeploymentsController - but will break if user can change space name - // use WIT API to convert Space UUID to Space name - osioclient, err := c.GetAndCheckOSIOClient(ctx) - if err != nil { - return nil, err - } - - osioSpace, err := osioclient.GetSpaceByID(ctx, spaceID) - if err != nil { - return nil, errs.Wrapf(err, "unable to convert space UUID %s to space name", spaceID) - } - if osioSpace == nil || osioSpace.Attributes == nil || osioSpace.Attributes.Name == nil { - return nil, errs.Errorf("space UUID %s is not valid space name", spaceID) - } - return osioSpace.Attributes.Name, nil -} - -func (g *defaultClientGetter) getNamespaceName(ctx context.Context) (*string, error) { - - osioclient, err := g.GetAndCheckOSIOClient(ctx) - if err != nil { - return nil, err - } - - kubeSpaceAttr, err := osioclient.GetNamespaceByType(ctx, nil, "user") - if err != nil { - return nil, errs.Wrap(err, "unable to retrieve 'user' namespace") - } - if kubeSpaceAttr == nil { - return nil, errors.NewNotFoundError("namespace", "user") - } - - return kubeSpaceAttr.Name, nil -} - -// GetKubeClient creates a kube client for the appropriate cluster assigned to the current user -func (g *defaultClientGetter) GetKubeClient(ctx context.Context) (kubernetes.KubeClientInterface, error) { - - kubeNamespaceName, err := g.getNamespaceName(ctx) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "could not retrieve namespace name") - return nil, errs.Wrap(err, "could not retrieve namespace name") - } - - osioclient, err := g.GetAndCheckOSIOClient(ctx) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "could not create OSIO client") - return nil, err - } - - baseURLProvider, err := NewURLProvider(ctx, g.config, osioclient) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "could not retrieve tenant data") - return nil, errs.Wrap(err, "could not retrieve tenant data") - } - - /* Timeout used per HTTP request to Kubernetes/OpenShift API servers. - * Communication with Hawkular currently uses a hard-coded 30 second - * timeout per request, and does not use this parameter. */ - // create the cluster API client - kubeConfig := &kubernetes.KubeClientConfig{ - BaseURLProvider: baseURLProvider, - UserNamespace: *kubeNamespaceName, - Timeout: g.config.GetDeploymentsHTTPTimeoutSeconds(), - } - kc, err := kubernetes.NewKubeClient(kubeConfig) - if err != nil { - url, _ := baseURLProvider.GetAPIURL() - log.Error(ctx, map[string]interface{}{ - "err": err, - "user_namespace": *kubeNamespaceName, - "cluster": *url, - }, "could not create Kubernetes client object") - return nil, errs.Wrap(err, "could not create Kubernetes client object") - } - return kc, nil -} - -// SetDeployment runs the setDeployment action. -func (c *DeploymentsController) SetDeployment(ctx *app.SetDeploymentDeploymentsContext) error { - - // we double check podcount here, because in the future we might have different query parameters - // (for setting different Pod switches) and PodCount might become optional - if ctx.PodCount == nil { - return errors.NewBadParameterError("podCount", "missing") - } - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) - } - - _ /*oldCount*/, err = kc.ScaleDeployment(*kubeSpaceName, ctx.AppName, ctx.DeployName, *ctx.PodCount) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "error scaling deployment %s", ctx.DeployName)) - } - - return ctx.OK([]byte{}) -} - -// DeleteDeployment runs the deleteDeployment action. -func (c *DeploymentsController) DeleteDeployment(ctx *app.DeleteDeploymentDeploymentsContext) error { - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, goa.ErrNotFound(err.Error())) - } - - err = kc.DeleteDeployment(*kubeSpaceName, ctx.AppName, ctx.DeployName) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - "space_name": *kubeSpaceName, - }, "error deleting deployment") - return jsonapi.JSONErrorResponse(ctx, err) - } - - return ctx.OK([]byte{}) -} - -// ShowDeploymentStatSeries runs the showDeploymentStatSeries action. -func (c *DeploymentsController) ShowDeploymentStatSeries(ctx *app.ShowDeploymentStatSeriesDeploymentsContext) error { - - endTime := time.Now() - startTime := endTime.Add(-8 * time.Hour) // default: start time is 8 hours before end time - limit := -1 // default: No limit - - if ctx.Limit != nil { - limit = *ctx.Limit - } - - if ctx.Start != nil { - startTime = convertToTime(int64(*ctx.Start)) - } - - if ctx.End != nil { - endTime = convertToTime(int64(*ctx.End)) - } - - if endTime.Before(startTime) { - return jsonapi.JSONErrorResponse(ctx, errors.NewBadParameterError("end", *ctx.End)) - } - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - statSeries, err := kc.GetDeploymentStatSeries(*kubeSpaceName, ctx.AppName, ctx.DeployName, - startTime, endTime, limit) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } else if statSeries == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("deployment", ctx.DeployName)) - } - - res := &app.SimpleDeploymentStatSeriesSingle{ - Data: statSeries, - } - - return ctx.OK(res) -} - -// ShowDeploymentPodLimitRange runs the showDeploymentPodLimitRange action. -func (c *DeploymentsController) ShowDeploymentPodLimitRange(ctx *app.ShowDeploymentPodLimitRangeDeploymentsContext) error { - // Inputs : spaceId, appName, deployName - kc, err := c.GetKubeClient(ctx) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - spaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - quotas, err := kc.GetDeploymentPodQuota(*spaceName, ctx.AppName, ctx.DeployName) - - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - res := &app.SimpleDeploymentPodLimitRangeSingle{ - Data: quotas, - } - - return ctx.OK(res) -} - -func convertToTime(unixMillis int64) time.Time { - return time.Unix(0, unixMillis*int64(time.Millisecond)) -} - -// ShowDeploymentStats runs the showDeploymentStats action. -func (c *DeploymentsController) ShowDeploymentStats(ctx *app.ShowDeploymentStatsDeploymentsContext) error { - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) - } - - var startTime time.Time - if ctx.Start != nil { - startTime = convertToTime(int64(*ctx.Start)) - } else { - // If a start time was not supplied, default to one minute ago - startTime = time.Now().Add(-1 * time.Minute) - } - - deploymentStats, err := kc.GetDeploymentStats(*kubeSpaceName, ctx.AppName, ctx.DeployName, startTime) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, - "could not retrieve deployment statistics for deployment '%s' in space '%s'", ctx.DeployName, *kubeSpaceName)) - } - if deploymentStats == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("deployment", ctx.DeployName)) - } - - deploymentStats.ID = ctx.DeployName - - res := &app.SimpleDeploymentStatsSingle{ - Data: deploymentStats, - } - - return ctx.OK(res) -} - -// ShowSpace runs the showSpace action. -func (c *DeploymentsController) ShowSpace(ctx *app.ShowSpaceDeploymentsContext) error { - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil || kubeSpaceName == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) - } - - // get OpenShift space - space, err := kc.GetSpace(*kubeSpaceName) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrapf(err, "could not retrieve space %s", *kubeSpaceName)) - } - if space == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("openshift space", *kubeSpaceName)) - } - - // Kubernetes doesn't know about space ID, so add it here - space.ID = ctx.SpaceID - - res := &app.SimpleSpaceSingle{ - Data: space, - } - - return ctx.OK(res) -} - -// ShowSpaceEnvironments runs the showSpaceEnvironments action. -// FIXME Remove this method once showSpaceEnvironments API is removed. -func (c *DeploymentsController) ShowSpaceEnvironments(ctx *app.ShowSpaceEnvironmentsDeploymentsContext) error { - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - envs, err := kc.GetEnvironments() - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, "error retrieving environments")) - } - if envs == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("environments", ctx.SpaceID.String())) - } - - res := &app.SimpleEnvironmentList{ - Data: envs, - } - - return ctx.OK(res) -} - -// ShowEnvironmentsBySpace runs the showEnvironmentsBySpace action. -func (c *DeploymentsController) ShowEnvironmentsBySpace(ctx *app.ShowEnvironmentsBySpaceDeploymentsContext) error { - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - kubeSpaceName, err := c.getSpaceNameFromSpaceID(ctx, ctx.SpaceID) - if err != nil || kubeSpaceName == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundError("osio space", ctx.SpaceID.String())) - } - - usage, err := kc.GetSpaceAndOtherEnvironmentUsage(*kubeSpaceName) - - // Model the response - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, "error retrieving environments")) - } - - res := &app.SpaceAndOtherEnvironmentUsageList{ - Data: usage, - } - - return ctx.OK(res) -} - -// ShowAllEnvironments runs the showAllEnvironments action. -func (c *DeploymentsController) ShowAllEnvironments(ctx *app.ShowAllEnvironmentsDeploymentsContext) error { - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - return jsonapi.JSONErrorResponse(ctx, err) - } - - envs, err := kc.GetEnvironments() - if err != nil { - return jsonapi.JSONErrorResponse(ctx, errs.Wrap(err, "error retrieving environments")) - } - if envs == nil { - return jsonapi.JSONErrorResponse(ctx, errors.NewNotFoundErrorFromString("no environments found")) - } - - res := &app.SimpleEnvironmentList{ - Data: envs, - } - - return ctx.OK(res) -} - -// WatchEnvironmentEvents runs the watchEnvironmentEvents action. -func (c *DeploymentsController) WatchEnvironmentEvents(ctx *app.WatchEnvironmentEventsDeploymentsContext) error { - c.WatchEnvironmentEventsWSHandler(ctx).ServeHTTP(ctx.ResponseWriter, ctx.Request) - return nil -} - -// WatchEnvironmentEventsWSHandler establishes a websocket connection to run the watchEnvironmentEvents action. -func (c *DeploymentsController) WatchEnvironmentEventsWSHandler(ctx *app.WatchEnvironmentEventsDeploymentsContext) websocket.Handler { - return func(ws *websocket.Conn) { - defer ws.Close() - - kc, err := c.GetKubeClient(ctx) - defer cleanup(kc) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error accessing Auth server") - - sendWebsocketJSON(ctx, ws, map[string]interface{}{"error": "unable to access auth server"}) - return - } - - store, stopWs := kc.WatchEventsInNamespace(ctx.EnvName) - defer close(stopWs) - - go func() { - for { - var m string - err := websocket.Message.Receive(ws, &m) - if err != nil { - if err != io.EOF { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error reading from websocket") - } - store.Close() - return - } - } - }() - - for { - item, err := store.Pop(cache.PopProcessFunc(func(item interface{}) error { - return nil - })) - - event, ok := item.(*v1.Event) - if !ok { - sendWebsocketJSON(ctx, ws, map[string]interface{}{"error": "Kubernetes event was an unexpected type"}) - return - } - - if err != nil { - if err != cache.FIFOClosedError { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error receiving events") - - sendWebsocketJSON(ctx, ws, map[string]interface{}{"error": "unable to access Kubernetes events"}) - } - return - } - - eventItem := transformItem(event) - if err != nil { - sendWebsocketJSON(ctx, ws, map[string]interface{}{"error": "unable to parse Kubernetes event"}) - } else { - err = websocket.JSON.Send(ws, eventItem) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error sending events") - return - } - } - } - } -} - -//DeploymentsEvent is the transformed Kubernetes v1.Event item -type DeploymentsEvent struct { - // The object that this event is about. - InvolvedObject v1.ObjectReference `json:"involvedObject" protobuf:"bytes,2,opt,name=involvedObject"` - - // This should be a short, machine understandable string that gives the reason - // for the transition into the object's current status. - // TODO: provide exact specification for format. - // +optional - Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` - - // A human-readable description of the status of this operation. - // TODO: decide on maximum length. - // +optional - Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` - - // The number of times this event has occurred. - // +optional - Count int32 `json:"count,omitempty" protobuf:"varint,8,opt,name=count"` - - // Type of this event (Normal, Warning), new types could be added in the future - // +optional - Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"` - - // CreationTimestamp is a timestamp representing the server time when this object was - // created. It is not guaranteed to be set in happens-before order across separate operations. - // Clients may not set this value. It is represented in RFC3339 form and is in UTC. - // - // Populated by the system. - // Read-only. - // Null for lists. - // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata - // +optional - CreationTimestamp metaV1.Time `json:"creationTimestamp,omitempty" protobuf:"bytes,8,opt,name=creationTimestamp"` -} - -func transformItem(event *v1.Event) *DeploymentsEvent { - transformedItem := &DeploymentsEvent{ - InvolvedObject: event.InvolvedObject, - Reason: event.Reason, - Message: event.Message, - Count: event.Count, - Type: event.Type, - CreationTimestamp: event.ObjectMeta.CreationTimestamp, - } - return transformedItem -} - -func sendWebsocketJSON(ctx *app.WatchEnvironmentEventsDeploymentsContext, ws *websocket.Conn, item interface{}) { - err := websocket.JSON.Send(ws, item) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error sending websocket message") - } -} - -func cleanup(kc kubernetes.KubeClientInterface) { - if kc != nil { - kc.Close() - } -} diff --git a/controller/deployments_blackbox_test.go b/controller/deployments_blackbox_test.go deleted file mode 100644 index 5a7be32b49..0000000000 --- a/controller/deployments_blackbox_test.go +++ /dev/null @@ -1,958 +0,0 @@ -package controller_test - -import ( - "bufio" - "bytes" - "context" - "errors" - "fmt" - "io" - "log" - "net" - "net/http" - "net/http/httptest" - "net/url" - "strings" - "testing" - "time" - - "github.com/gojuno/minimock" - "golang.org/x/net/websocket" - metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" - v1 "k8s.io/client-go/pkg/api/v1" - "k8s.io/client-go/tools/cache" - - "github.com/goadesign/goa" - "github.com/goadesign/goa/goatest" - uuid "github.com/satori/go.uuid" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/app/test" - "github.com/fabric8-services/fabric8-wit/configuration" - "github.com/fabric8-services/fabric8-wit/controller" - witerrors "github.com/fabric8-services/fabric8-wit/errors" - "github.com/fabric8-services/fabric8-wit/kubernetes" - "github.com/fabric8-services/fabric8-wit/space" - testcontroller "github.com/fabric8-services/fabric8-wit/test/controller" - testk8s "github.com/fabric8-services/fabric8-wit/test/kubernetes" -) - -type testKubeClient struct { - fixture *deploymentsTestFixture - closed bool - deleteResults *deleteTestResults - // Don't implement methods we don't yet need - kubernetes.KubeClientInterface -} - -type testOSIOClient struct { - fixture *deploymentsTestFixture - // Don't implement methods we don't yet need - controller.OpenshiftIOClient -} - -func (kc *testKubeClient) Close() { - kc.closed = true -} - -type deploymentsTestFixture struct { - kube *testKubeClient - spaceMapping map[string]string - deploymentsTestErrors -} - -type deploymentsTestErrors struct { - getKubeClientError error - deleteDeploymentError error -} - -func (fixture *deploymentsTestFixture) GetKubeClient(ctx context.Context) (kubernetes.KubeClientInterface, error) { - // Overwrites previous clients created by this getter - fixture.kube = &testKubeClient{ - fixture: fixture, - } - return fixture.kube, fixture.getKubeClientError -} - -type deleteTestResults struct { - spaceName string - appName string - envName string -} - -func (kc *testKubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - kc.deleteResults = &deleteTestResults{ - spaceName: spaceName, - appName: appName, - envName: envName, - } - return kc.fixture.deleteDeploymentError -} - -func (fixture *deploymentsTestFixture) GetAndCheckOSIOClient(ctx context.Context) (controller.OpenshiftIOClient, error) { - return &testOSIOClient{ - fixture: fixture, - }, nil -} - -func (c *testOSIOClient) GetSpaceByID(ctx context.Context, spaceID uuid.UUID) (*app.Space, error) { - var spaceName *string - uuidString := spaceID.String() - name, pres := c.fixture.spaceMapping[uuidString] - if pres { - spaceName = &name - } - space := &app.Space{ - Attributes: &app.SpaceAttributes{ - Name: spaceName, - }, - } - return space, nil -} - -func TestDeleteDeployment(t *testing.T) { - const uuidStr = "ed3b4c4d-5a47-44ec-8b73-9a0fbc902184" - const spaceName = "mySpace" - const appName = "myApp" - const envName = "myEnv" - - expectedResults := &deleteTestResults{ - spaceName: spaceName, - appName: appName, - envName: envName, - } - testCases := []struct { - testName string - deleteFunc func(t goatest.TInterface, ctx context.Context, service *goa.Service, ctrl app.DeploymentsController, - spaceID uuid.UUID, appName string, deployName string) (http.ResponseWriter, *app.JSONAPIErrors) - spaceUUID string - expectedResults *deleteTestResults - deploymentsTestErrors - }{ - { - testName: "Basic", - deleteFunc: func(t goatest.TInterface, ctx context.Context, service *goa.Service, ctrl app.DeploymentsController, - spaceID uuid.UUID, appName string, deployName string) (http.ResponseWriter, *app.JSONAPIErrors) { - // Wrap test method to return additional *app.JSONAPIErrors value - return test.DeleteDeploymentDeploymentsOK(t, ctx, service, ctrl, spaceID, appName, deployName), nil - }, - spaceUUID: uuidStr, - expectedResults: expectedResults, - }, - { - testName: "Delete Failure", - deleteFunc: test.DeleteDeploymentDeploymentsInternalServerError, - spaceUUID: uuidStr, - deploymentsTestErrors: deploymentsTestErrors{ - deleteDeploymentError: errors.New("TEST"), // Return expected error from DeleteDeployment - }, - expectedResults: expectedResults, - }, - { - testName: "Delete Bad Request", - deleteFunc: test.DeleteDeploymentDeploymentsBadRequest, - spaceUUID: uuidStr, - deploymentsTestErrors: deploymentsTestErrors{ - deleteDeploymentError: witerrors.NewBadParameterErrorFromString("TEST"), // Return expected error from DeleteDeployment - }, - expectedResults: expectedResults, - }, - { - testName: "Space Not Found", - deleteFunc: test.DeleteDeploymentDeploymentsNotFound, - spaceUUID: "9de7a4bc-d098-4867-809c-759e2cd824f4", // Different UUID - }, - { - testName: "Auth Failure", - deleteFunc: test.DeleteDeploymentDeploymentsInternalServerError, - spaceUUID: uuidStr, - deploymentsTestErrors: deploymentsTestErrors{ - getKubeClientError: errors.New("TEST"), // Return expected error from GetKubeClient - }, - }, - } - fixture := &deploymentsTestFixture{ - spaceMapping: map[string]string{uuidStr: spaceName}, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - fixture.deploymentsTestErrors = testCase.deploymentsTestErrors - - // Create controller and install our test fixture - svc, controller, err := createDeploymentsController() - require.NoError(t, err, "Failed to create controller") - controller.ClientGetter = fixture - - spUUID, err := uuid.FromString(testCase.spaceUUID) - require.NoError(t, err, "Bad UUID") - // Invoke Goa-generated test method used by this test case - testCase.deleteFunc(t, svc.Context, svc, controller, spUUID, appName, envName) - - // Check arguments passed to DeleteDeployment - if testCase.expectedResults != nil { - results := fixture.kube.deleteResults - require.NotNil(t, results, "DeleteDeployment not called") - require.Equal(t, testCase.expectedResults.spaceName, results.spaceName, "Incorrect space name") - require.Equal(t, testCase.expectedResults.appName, results.appName, "Incorrect application name") - require.Equal(t, testCase.expectedResults.envName, results.envName, "Incorrect environment name") - } - - // Check KubeClient is closed - require.True(t, fixture.kube.closed, "KubeClient is still open") - }) - } -} - -func createDeploymentsController() (*goa.Service, *controller.DeploymentsController, error) { - svc := goa.New("deployment-service-test") - config, err := configuration.New("../config.yaml") - if err != nil { - return nil, nil, err - } - return svc, controller.NewDeploymentsController(svc, config), nil -} - -func TestShowSpace(t *testing.T) { - // given - spaceName := "mySpace" - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetSpaceFunc = func(spaceName string) (*app.SimpleSpace, error) { - return &app.SimpleSpace{ - Type: "space", - Attributes: &app.SimpleSpaceAttributes{ - Name: spaceName, - Applications: []*app.SimpleApp{}, - }, - }, nil - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - _, result := test.ShowSpaceDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace) - // then - assert.Equal(t, space.SystemSpace, result.Data.ID, "space ID should be %s", space.SystemSpace.String()) - assert.NotNil(t, result.Data.Attributes, "space attributes must be non-nil") - assert.Equal(t, spaceName, result.Data.Attributes.Name, "space ID should be %s", space.SystemSpace.String()) - // verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowSpaceDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace) - }) - - t.Run("get space bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetSpaceFunc = func(spaceName string) (*app.SimpleSpace, error) { - return nil, witerrors.NewBadParameterErrorFromString("TEST") - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - test.ShowSpaceDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func TestSetDeployment(t *testing.T) { - // given - spaceName := "mySpace" - appName := "myApp" - envName := "run" - newPodNum := 5 - oldPodNum := 3 - - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.ScaleDeploymentMock.Expect(spaceName, appName, envName, newPodNum).Return(&oldPodNum, nil) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - test.SetDeploymentDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &newPodNum) - - // then - // verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.SetDeploymentDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &newPodNum) - }) - - t.Run("scale deployment bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.ScaleDeploymentMock.Expect(spaceName, appName, envName, newPodNum).Return(nil, - witerrors.NewBadParameterErrorFromString("TEST")) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - test.SetDeploymentDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &newPodNum) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func TestShowDeploymentStats(t *testing.T) { - // given - spaceName := "mySpace" - appName := "myApp" - envName := "run" - startTimeMilli := float64(1527796723000) - startTime := convertToTime(int64(startTimeMilli)) - - stats := &app.SimpleDeploymentStats{ - Type: "deploymentstats", - Attributes: &app.SimpleDeploymentStatsAttributes{}, - } - - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.GetDeploymentStatsMock.Expect(spaceName, appName, envName, startTime).Return(stats, nil) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - _, result := test.ShowDeploymentStatsDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &startTimeMilli) - - // then - assert.Equal(t, stats, result.Data, "deployment stats do not match") - // verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowDeploymentStatsDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &startTimeMilli) - }) - - t.Run("get deployment stats bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.GetDeploymentStatsMock.Expect(spaceName, appName, envName, startTime).Return(stats, - witerrors.NewBadParameterErrorFromString("TEST")) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - test.ShowDeploymentStatsDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &startTimeMilli) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func TestShowDeploymentStatSeries(t *testing.T) { - // given - spaceName := "mySpace" - appName := "myApp" - envName := "run" - startTimeMilli := float64(1527796723000) - startTime := convertToTime(int64(startTimeMilli)) - endTimeMilli := float64(1527796753000) - endTime := convertToTime(int64(endTimeMilli)) - limit := 5 - - stats := &app.SimpleDeploymentStatSeries{ - Start: &startTimeMilli, - End: &endTimeMilli, - } - - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.GetDeploymentStatSeriesMock.Expect(spaceName, appName, envName, startTime, endTime, limit).Return(stats, nil) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - _, result := test.ShowDeploymentStatSeriesDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &endTimeMilli, &limit, &startTimeMilli) - - // then - assert.Equal(t, stats, result.Data, "deployment stats do not match") - // verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowDeploymentStatSeriesDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &endTimeMilli, &limit, &startTimeMilli) - - }) - - t.Run("get deployment stats bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - defer kubeClientMock.Finish() - kubeClientMock.GetDeploymentStatSeriesMock.Expect(spaceName, appName, envName, startTime, endTime, - limit).Return(stats, witerrors.NewBadParameterErrorFromString("TEST")) - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(ctx context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - - clientGetterMock.GetAndCheckOSIOClientFunc = func(ctx context.Context) (controller.OpenshiftIOClient, error) { - return createOSIOClientMock(t, spaceName), nil - } - // when - test.ShowDeploymentStatSeriesDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace, - appName, envName, &endTimeMilli, &limit, &startTimeMilli) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func convertToTime(unixMillis int64) time.Time { - return time.Unix(0, unixMillis*int64(time.Millisecond)) -} - -func TestShowSpaceEnvironments(t *testing.T) { - // given - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - envName := "foo" - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetEnvironmentsFunc = func() ([]*app.SimpleEnvironment, error) { - return []*app.SimpleEnvironment{ - { - ID: "foo", - Type: "environment", - Attributes: &app.SimpleEnvironmentAttributes{ - Name: &envName, - }, - }, - }, nil - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := testcontroller.NewOSIOClientMock(t) - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - // when - test.ShowSpaceEnvironmentsDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowSpaceEnvironmentsDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace) - }) - - t.Run("get environments bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetEnvironmentsFunc = func() ([]*app.SimpleEnvironment, error) { - return nil, witerrors.NewBadParameterErrorFromString("TEST") - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := testcontroller.NewOSIOClientMock(t) - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - // when - test.ShowSpaceEnvironmentsDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func TestShowEnvironmentsBySpace(t *testing.T) { - - fakeEnvName := "fakeEnvName" - fakeCPUCores := 6.0 - fakeMemUsage := 5.0 - - fakeQuota := &app.SpaceEnvironmentUsageQuota{ - Cpucores: &fakeCPUCores, - Memory: &fakeMemUsage, - } - - genericQuota := 5.0 - genericUsage := 1.0 - fakeOtherUsage := &app.EnvStats{ - Cpucores: &app.EnvStatQuota{ - Quota: &genericQuota, - Used: &genericUsage, - }, - Memory: &app.EnvStatQuota{ - Quota: &genericQuota, - Used: &genericUsage, - }, - } - - fakeSpaceUse := []*app.SpaceAndOtherEnvironmentUsage{ - { - Attributes: &app.SpaceAndOtherEnvironmentUsageAttributes{ - Name: &fakeEnvName, - SpaceUsage: fakeQuota, - OtherUsage: fakeOtherUsage, - }, - ID: fakeEnvName, - Type: "environment", - }, - } - - // given - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - kubeClientMock := testk8s.NewKubeClientMock(t) - - kubeClientMock.GetSpaceAndOtherEnvironmentUsageFunc = func(p string) ([]*app.SpaceAndOtherEnvironmentUsage, error) { - return fakeSpaceUse, nil - } - - kubeClientMock.CloseFunc = func() {} - - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := createOSIOClientMock(t, "testSpace") - - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - - // when - _, result := test.ShowEnvironmentsBySpaceDeploymentsOK(t, context.Background(), svc, ctrl, space.SystemSpace) - - require.Equal(t, fakeSpaceUse, result.Data, "deployment space environment information does match") - - // then verify that the Close method was called - require.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowEnvironmentsBySpaceDeploymentsInternalServerError(t, context.Background(), svc, ctrl, space.SystemSpace) - }) - - t.Run("get all space environments bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetSpaceAndOtherEnvironmentUsageFunc = func(p string) ([]*app.SpaceAndOtherEnvironmentUsage, error) { - return nil, witerrors.NewBadParameterErrorFromString("TEST") - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := createOSIOClientMock(t, "testSpace") - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - // when - test.ShowEnvironmentsBySpaceDeploymentsBadRequest(t, context.Background(), svc, ctrl, space.SystemSpace) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) -} - -func TestShowAllEnvironments(t *testing.T) { - // given - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - // given - envName1 := "foo1" - envName2 := "foo2" - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetEnvironmentsFunc = func() ([]*app.SimpleEnvironment, error) { - return []*app.SimpleEnvironment{ - { - ID: "foo1", - Type: "environment", - Attributes: &app.SimpleEnvironmentAttributes{ - Name: &envName1, - }, - }, - { - ID: "foo2", - Type: "environment", - Attributes: &app.SimpleEnvironmentAttributes{ - Name: &envName2, - }, - }, - }, nil - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := testcontroller.NewOSIOClientMock(t) - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - // when - test.ShowAllEnvironmentsDeploymentsOK(t, context.Background(), svc, ctrl) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - - }) - - t.Run("failure", func(t *testing.T) { - - t.Run("kube client init failure", func(t *testing.T) { - // given - clientGetterMock.GetKubeClientFunc = func(p context.Context) (r kubernetes.KubeClientInterface, r1 error) { - return nil, fmt.Errorf("failure") - } - // when/then - test.ShowAllEnvironmentsDeploymentsInternalServerError(t, context.Background(), svc, ctrl) - }) - - t.Run("get all environments bad request", func(t *testing.T) { - // given - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.GetEnvironmentsFunc = func() ([]*app.SimpleEnvironment, error) { - return nil, witerrors.NewBadParameterErrorFromString("TEST") - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := testcontroller.NewOSIOClientMock(t) - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - // when - test.ShowAllEnvironmentsDeploymentsBadRequest(t, context.Background(), svc, ctrl) - // then verify that the Close method was called - assert.Equal(t, uint64(1), kubeClientMock.CloseCounter) - }) - }) - -} - -func createOSIOClientMock(t minimock.Tester, spaceName string) *testcontroller.OSIOClientMock { - osioClientMock := testcontroller.NewOSIOClientMock(t) - osioClientMock.GetSpaceByIDFunc = func(ctx context.Context, spaceID uuid.UUID) (*app.Space, error) { - return &app.Space{ - ID: &spaceID, - Attributes: &app.SpaceAttributes{ - Name: &spaceName, - }, - }, nil - } - return osioClientMock -} - -func TestWatchEnvironmentEvents(t *testing.T) { - clientGetterMock := testcontroller.NewClientGetterMock(t) - svc, ctrl, err := createDeploymentsController() - require.NoError(t, err) - ctrl.ClientGetter = clientGetterMock - - t.Run("ok", func(t *testing.T) { - testItems := []*v1.Event{ - { - ObjectMeta: metaV1.ObjectMeta{}, - InvolvedObject: v1.ObjectReference{ - Kind: "ReplicationController", - Namespace: "jkang-stage", - Name: "alpha", - UID: "0187287e-6f2d-11e8-bc5d-0233cba325d9", - APIVersion: "v1", - ResourceVersion: "1146930893", - }, - Reason: "FailedCreate", - Message: "Error creating: pods \"abc-123-1-fn79z\" is forbidden: exceeded quota: compute-resources, requested: limits.cpu=1,limits.memory=512Mi, used: limits.cpu=2,limits.memory=1Gi, limited: limits.cpu=2,limits.memory=1Gi", - Count: 1, - Type: "Warning", - }, - { - ObjectMeta: metaV1.ObjectMeta{}, - InvolvedObject: v1.ObjectReference{ - Kind: "Pod", - Namespace: "jkang-stage", - Name: "beta", - UID: "0648a9cb-6fd0-11e8-aef8-0233cba325d9", - APIVersion: "v1", - ResourceVersion: "1146929646", - FieldPath: "spec.containers{vertx}", - }, - Reason: "Pulling", - Message: "pulling image \"docker-registry.default.svc:5000/jkang-stage/abc-123@sha256:4c1bb4adcdd3d462b1f3953ce947afc0c3afcd0dd810c007f4d3ed56220ac323\"", - Count: 1, - Type: "Normal", - }, - } - - mockKeyFunc := func(obj interface{}) (string, error) { - if v, ok := obj.(*v1.Event); ok { - return v.InvolvedObject.Name, nil - } - return "default", nil - } - - kubeClientMock := testk8s.NewKubeClientMock(t) - kubeClientMock.WatchEventsInNamespaceFunc = func(p string) (r *cache.FIFO, r1 chan struct{}) { - store := cache.NewFIFO(mockKeyFunc) - for _, item := range testItems { - store.Add(item) - } - - return store, make(chan struct{}) - } - kubeClientMock.CloseFunc = func() {} - clientGetterMock.GetKubeClientFunc = func(p context.Context) (kubernetes.KubeClientInterface, error) { - return kubeClientMock, nil - } - osioClientMock := testcontroller.NewOSIOClientMock(t) - clientGetterMock.GetAndCheckOSIOClientFunc = func(p context.Context) (controller.OpenshiftIOClient, error) { - return osioClientMock, nil - } - - conn := WatchEnvironmentEventsDeploymentsOK(context.Background(), t, svc, ctrl, space.SystemSpace) - - var buf []byte - for _, item := range testItems { - // buffer 1024 is an arbitrary choice that fits the test items - // Manually unmarshal ws frame; Object is marshaled as JSON - // For more info on websocket frames see: - // https://tools.ietf.org/html/rfc6455#section-5.2 - buf = make([]byte, 1024) - conn.Read(buf) - var startPos int - frameLength := int(buf[1]) - if frameLength == 126 { - frameLength = int(buf[2])*256 + int(buf[3]) - startPos = 4 - } else { - startPos = 2 - } - endPos := startPos + frameLength - var actual controller.DeploymentsEvent - err = websocket.JSON.Unmarshal(buf[startPos:endPos], 1, &actual) - - expected := transformItem(item) - assert.Equal(t, *expected, actual) - } - - conn.Close() - }) -} - -func transformItem(event *v1.Event) *controller.DeploymentsEvent { - transformedItem := &controller.DeploymentsEvent{ - InvolvedObject: event.InvolvedObject, - Reason: event.Reason, - Message: event.Message, - Count: event.Count, - Type: event.Type, - CreationTimestamp: event.ObjectMeta.CreationTimestamp, - } - return transformedItem -} - -type wsRecorder struct { - *httptest.ResponseRecorder - server net.Conn -} - -func (r *wsRecorder) Hijack() (net.Conn, *bufio.ReadWriter, error) { - rw := bufio.NewReadWriter(bufio.NewReader(r.server), bufio.NewWriter(r.server)) - return r.server, rw, nil -} - -func WatchEnvironmentEventsDeploymentsOK(ctx context.Context, t *testing.T, service *goa.Service, ctrl app.DeploymentsController, spaceID uuid.UUID) net.Conn { - var ( - logBuf bytes.Buffer - respSetter goatest.ResponseSetterFunc = func(r interface{}) {} - ) - if service == nil { - service = goatest.Service(&logBuf, respSetter) - } else { - logger := log.New(&logBuf, "", log.Ltime) - service.WithLogger(goa.NewLogger(logger)) - newEncoder := func(io.Writer) goa.Encoder { return respSetter } - service.Encoder = goa.NewHTTPEncoder() - service.Encoder.Register(newEncoder, "*/*") - } - - conn, server := net.Pipe() - rw := &wsRecorder{ - httptest.NewRecorder(), - server, - } - u := &url.URL{ - Scheme: "ws", - Path: fmt.Sprintf("/api/deployments/spaces/%v/environments", spaceID), - } - req, err := http.NewRequest("GET", u.String(), nil) - if err != nil { - panic("invalid test " + err.Error()) - } - req.Header.Add("Sec-Websocket-Version", "13") - req.Header.Add("Sec-Websocket-Key", "G7YfpwECvn2g+GPiIT9K6A==") - req.Header.Add("Upgrade", "websocket") - req.Header.Add("Connection", "Upgrade") - req.Header.Add("Origin", "https://localhost:8080") - - prms := url.Values{} - prms["spaceID"] = []string{fmt.Sprintf("%v", spaceID)} - if ctx == nil { - ctx = context.Background() - } - goaCtx := goa.NewContext(goa.WithAction(ctx, "DeploymentsTest"), rw, req, prms) - watchEnvironmentEventsCtx, _err := app.NewWatchEnvironmentEventsDeploymentsContext(goaCtx, req, service) - if _err != nil { - panic("invalid test data " + _err.Error()) - } - - go func() { - ctrl.WatchEnvironmentEvents(watchEnvironmentEventsCtx) - }() - - var expected = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: 0v75TdGGa4rJ+EXs1fpIBirdeG8=\r\n\r\n" - buf := make([]byte, 256) - conn.Read(buf) - actual := strings.Trim(string(buf), "\x00") - - assert.Equal(t, expected, actual) - - return conn -} diff --git a/controller/deployments_osioclient.go b/controller/deployments_osioclient.go deleted file mode 100644 index 38f2354f02..0000000000 --- a/controller/deployments_osioclient.go +++ /dev/null @@ -1,175 +0,0 @@ -package controller - -import ( - "context" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/fabric8-services/fabric8-wit/app" - witclient "github.com/fabric8-services/fabric8-wit/client" - "github.com/fabric8-services/fabric8-wit/goasupport" - "github.com/fabric8-services/fabric8-wit/log" - goaclient "github.com/goadesign/goa/client" - goauuid "github.com/goadesign/goa/uuid" - errs "github.com/pkg/errors" - uuid "github.com/satori/go.uuid" -) - -// ResponseReader allows for reading from responses or mocked responses -type ResponseReader interface { - ReadResponse(*http.Response) ([]byte, error) -} - -// IOResponseReader actual implementation of ResponseReader -type IOResponseReader struct { -} - -// ReadResponse implementation for ResponseReader -func (r *IOResponseReader) ReadResponse(resp *http.Response) ([]byte, error) { - defer resp.Body.Close() - return ioutil.ReadAll(resp.Body) -} - -// ensure IOResponseReader implements all methods in ResponseReader -var _ ResponseReader = &IOResponseReader{} -var _ ResponseReader = (*IOResponseReader)(nil) - -// WitClient is an interface for mocking the witclient.Client -type WitClient interface { - ShowSpace(ctx context.Context, path string, ifModifiedSince *string, ifNoneMatch *string) (*http.Response, error) - ShowUserService(ctx context.Context, path string) (*http.Response, error) -} - -// OpenshiftIOClient is an interface for mocking OSIOClient -type OpenshiftIOClient interface { - GetNamespaceByType(ctx context.Context, userService *app.UserService, namespaceType string) (*app.NamespaceAttributes, error) - GetUserServices(ctx context.Context) (*app.UserService, error) - GetSpaceByID(ctx context.Context, spaceID uuid.UUID) (*app.Space, error) -} - -// OSIOClient contains configuration and methods for interacting with OSIO API -type OSIOClient struct { - wc WitClient - responseReader ResponseReader - userServices *app.UserService -} - -// ensure OSIOClient implements all methods in OpenshiftIOClient -var _ OpenshiftIOClient = &OSIOClient{} -var _ OpenshiftIOClient = (*OSIOClient)(nil) - -// NewOSIOClient creates an openshift IO client given an http request context -func NewOSIOClient(ctx context.Context, scheme string, host string) OpenshiftIOClient { - wc := witclient.New(goaclient.HTTPClientDoer(http.DefaultClient)) - wc.Host = host - wc.Scheme = scheme - wc.SetJWTSigner(goasupport.NewForwardSigner(ctx)) - return CreateOSIOClient(wc, &IOResponseReader{}) -} - -// CreateOSIOClient factory method replaced during unit testing -func CreateOSIOClient(witclient WitClient, responseReader ResponseReader) OpenshiftIOClient { - client := new(OSIOClient) - client.wc = witclient - client.responseReader = responseReader - return client -} - -// GetNamespaceByType finds a namespace by type (user, che, stage, etc) -// if userService is nil, will fetch the user services under the hood -func (osioclient *OSIOClient) GetNamespaceByType(ctx context.Context, userService *app.UserService, namespaceType string) (*app.NamespaceAttributes, error) { - if userService == nil { - us, err := osioclient.GetUserServices(ctx) - if err != nil { - return nil, errs.Wrapf(err, "could not retrieve user services") - } - userService = us - } - nameSpaces := userService.Attributes.Namespaces - for _, ns := range nameSpaces { - if *ns.Type == namespaceType { - return ns, nil - } - } - return nil, nil -} - -// GetUserServices - fetch array of user services -// In the future, consider calling the tenant service (as /api/user/services implementation does) -func (osioclient *OSIOClient) GetUserServices(ctx context.Context) (*app.UserService, error) { - - if osioclient.userServices != nil { - return osioclient.userServices, nil - } - resp, err := osioclient.wc.ShowUserService(goasupport.ForwardContextRequestID(ctx), witclient.ShowUserServicePath()) - if err != nil { - return nil, errs.Wrapf(err, "could not retrieve user's services") - } - - respBody, err := osioclient.responseReader.ReadResponse(resp) - - status := resp.StatusCode - if status == http.StatusNotFound { - return nil, nil - } else if status != http.StatusOK { - log.Error(nil, map[string]interface{}{ - "err": err, - "path": witclient.ShowUserServicePath(), - "http_status": status, - }, "failed to get user service from WIT service due to HTTP error %d", status) - return nil, errs.Errorf("failed to GET %s due to status code %d", witclient.ShowUserServicePath(), status) - } - - var respType app.UserServiceSingle - err = json.Unmarshal(respBody, &respType) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "path": witclient.ShowUserServicePath(), - "response": respBody, - }, "unable to unmarshal user service from WIT service") - return nil, errs.Wrapf(err, "could not unmarshal user services JSON") - } - - osioclient.userServices = respType.Data - return respType.Data, nil -} - -// GetSpaceByID - fetch space given UUID -func (osioclient *OSIOClient) GetSpaceByID(ctx context.Context, spaceID uuid.UUID) (*app.Space, error) { - guid := goauuid.UUID(spaceID) - urlpath := witclient.ShowSpacePath(guid) - resp, err := osioclient.wc.ShowSpace(goasupport.ForwardContextRequestID(ctx), urlpath, nil, nil) - if err != nil { - return nil, errs.Wrapf(err, "could not connect to %s", urlpath) - } - - respBody, err := osioclient.responseReader.ReadResponse(resp) - - status := resp.StatusCode - if status == http.StatusNotFound { - return nil, nil - } else if status != http.StatusOK { - log.Error(nil, map[string]interface{}{ - "err": err, - "space_id": spaceID, - "path": urlpath, - "http_status": status, - }, "failed to get user space from WIT service due to HTTP error %s", status) - return nil, errs.Errorf("failed to GET %s due to status code %d", urlpath, status) - } - - var respType app.SpaceSingle - err = json.Unmarshal(respBody, &respType) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "space_id": spaceID, - "path": urlpath, - "response": respBody, - }, "unable to unmarshal user space from WIT service") - return nil, errs.Wrap(err, "could not unmarshal SpaceSingle JSON") - } - return respType.Data, nil -} diff --git a/controller/deployments_osioclient_test.go b/controller/deployments_osioclient_test.go deleted file mode 100644 index 28bc7af836..0000000000 --- a/controller/deployments_osioclient_test.go +++ /dev/null @@ -1,470 +0,0 @@ -package controller_test - -import ( - "bytes" - "context" - "errors" - "io" - "net/http" - "testing" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/controller" - "github.com/satori/go.uuid" - "github.com/stretchr/testify/require" -) - -// Structs and interfaces for mocking/testing -type JsonResponseReader struct { - jsonBytes *bytes.Buffer -} - -func (r *JsonResponseReader) ReadResponse(resp *http.Response) ([]byte, error) { - return r.jsonBytes.Bytes(), nil -} - -type MockResponseBodyReader struct { - io.ReadCloser -} - -func (m MockResponseBodyReader) Read(p []byte) (n int, err error) { - return 0, io.EOF -} - -func (m MockResponseBodyReader) Close() error { - return nil -} - -type MockWitClient struct { - SpaceHttpResponse *http.Response - SpaceHttpResponseError error - UserServiceHttpResponse *http.Response - UserServiceHttpResponseError error -} - -func (m *MockWitClient) ShowSpace(ctx context.Context, path string, ifModifiedSince *string, ifNoneMatch *string) (*http.Response, error) { - return m.SpaceHttpResponse, m.SpaceHttpResponseError -} - -func (m *MockWitClient) ShowUserService(ctx context.Context, path string) (*http.Response, error) { - return m.UserServiceHttpResponse, m.UserServiceHttpResponseError -} - -// Unit tests -func TestGetUserServicesWithShowUserServiceError(t *testing.T) { - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: errors.New("error"), - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - - _, err := mockOSIOClient.GetUserServices(context.Background()) - require.Error(t, err) -} - -func TestGetUserServicesBadStatusCodes(t *testing.T) { - testCases := []struct { - statusCode int - shouldBeNil bool - }{ - {http.StatusMovedPermanently, false}, - {http.StatusNotFound, true}, - {http.StatusInternalServerError, false}, - } - - for _, testCase := range testCases { - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: testCase.statusCode, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: mockResponse, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - - userService, err := mockOSIOClient.GetUserServices(context.Background()) - if testCase.shouldBeNil { - require.NoError(t, err) - } else { - require.Error(t, err) - } - require.Nil(t, userService) - } -} - -func TestGetUserServiceWithMalformedJSON(t *testing.T) { - jsonReader := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(`{`)), - } - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: mockResponse, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonReader) - - _, err := mockOSIOClient.GetUserServices(context.Background()) - require.Error(t, err) -} - -func TestUserServiceWithProperJSON(t *testing.T) { - jsonReader := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(` - { - "data": { - "attributes": { - "bio": "", - "cluster": "https://some-random-cluster-dot.com", - "company": "", - "contextInformation": { - "experimentalFeatures": { - "enabled": true - }, - "recentContexts": [ - { - "space": "00000000-0000-0000-0000-000000000000", - "user": "11111111-1111-1111-1111-111111111111" - }, - { - "space": null, - "user": "22222222-2222-2222-2222-222222222222" - } - ], - "recentSpaces": ["33333333-3333-3333-3333-333333333333"] - }, - "created-at": "2017-11-03T16:39:45.566361Z", - "email": "email@somerandomemailhere.email", - "emailPrivate": true, - "emailVerified": true, - "fullName": "Dr. Legit Email", - "identityID": "44444444-4444-4444-4444-444444444444", - "imageURL": "https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg", - "providerType": "kc", - "registrationCompleted": true, - "updated-at": "2018-01-16T19:43:41.859203Z", - "url": "", - "userID": "55555555-5555-5555-5555-555555555555", - "username": "username" - }, - "id": "66666666-6666-6666-6666-666666666666", - "links": { - "related": "https://auth.openshift.io/api/users/77777777-7777-7777-7777-777777777777", - "self": "https://auth.openshift.io/api/users/88888888-8888-8888-8888-888888888888" - }, - "type": "identities" - } - }`)), - } - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: mockResponse, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonReader) - - userService, err := mockOSIOClient.GetUserServices(context.Background()) - require.NoError(t, err) - require.NotNil(t, userService) - require.Equal(t, "https://auth.openshift.io/api/users/77777777-7777-7777-7777-777777777777", *userService.Links.Related) - require.Equal(t, "https://auth.openshift.io/api/users/88888888-8888-8888-8888-888888888888", *userService.Links.Self) - require.Equal(t, "66666666-6666-6666-6666-666666666666", userService.ID.String()) - require.Equal(t, "identities", userService.Type) -} - -func TestGetSpaceByIDWithShowSpaceError(t *testing.T) { - mockContext := context.Background() - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: errors.New("error"), - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - - _, err := mockOSIOClient.GetSpaceByID(mockContext, uuid.Nil) - require.Error(t, err) -} - -func TestGetSpaceByIDBadStatusCode(t *testing.T) { - testCases := []struct { - statusCode int - shouldBeNil bool - }{ - {http.StatusMovedPermanently, false}, - {http.StatusNotFound, true}, - {http.StatusInternalServerError, false}, - } - - for _, testCase := range testCases { - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: testCase.statusCode, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: mockResponse, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - - userService, err := mockOSIOClient.GetSpaceByID(context.Background(), uuid.Nil) - if testCase.shouldBeNil { - require.NoError(t, err) - } else { - require.Error(t, err) - } - require.Nil(t, userService) - } -} - -func TestGetSpaceByIDWithMalformedJSON(t *testing.T) { - jsonReader := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(`{`)), - } - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: mockResponse, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonReader) - - _, err := mockOSIOClient.GetSpaceByID(context.Background(), uuid.Nil) - require.Error(t, err) -} - -func TestGetSpaceByIDWithProperJSON(t *testing.T) { - jsonReader := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(`{ - "data": { - "attributes": { - "created-at": "2017-12-01T18:34:06.393371Z", - "description": "", - "name": "yet_another", - "updated-at": "2017-12-01T18:34:06.393371Z", - "version": 0 - }, - "id": "00000000-0000-0000-0000-000000000000", - "links": { - "backlog": { - "meta": { - "totalCount": 0 - }, - "self": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/backlog" - }, - "filters": "https://api.openshift.io/api/filters", - "related": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000", - "self": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000", - "workitemlinktypes": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/workitemlinktypes", - "workitemtypes": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/workitemtypes" - }, - "relationships": { - "areas": { - "links": { - "related": "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/areas" - } - } - }, - "type": "spaces" - } - }`)), - } - mockContext := context.Background() - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: mockResponse, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonReader) - - space, err := mockOSIOClient.GetSpaceByID(mockContext, uuid.Nil) - require.NoError(t, err) - require.NotNil(t, space) - require.Equal(t, "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000", *space.Links.Self) - require.Equal(t, "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000", *space.Links.Related) - require.Equal(t, "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/backlog", *space.Links.Backlog.Self) - require.Equal(t, 0, space.Links.Backlog.Meta.TotalCount) - require.Equal(t, "https://api.openshift.io/api/filters", *space.Links.Filters) - require.Equal(t, "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/workitemlinktypes", *space.Links.Workitemlinktypes) - require.Equal(t, "https://api.openshift.io/api/spaces/00000000-0000-0000-0000-000000000000/workitemtypes", *space.Links.Workitemtypes) - require.Equal(t, "00000000-0000-0000-0000-000000000000", space.ID.String()) - require.Equal(t, "spaces", space.Type) - require.Equal(t, "", *space.Attributes.Description) - require.Equal(t, "yet_another", *space.Attributes.Name) -} - -func TestGetNamespaceByTypeErrorFromUserServices(t *testing.T) { - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: errors.New("error"), - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - - namespaceAttributes, err := mockOSIOClient.GetNamespaceByType(context.Background(), nil, "namespace") - require.Error(t, err) - require.Nil(t, namespaceAttributes) -} - -func TestGetNamespaceByTypeNoMatch(t *testing.T) { - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: nil, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, &controller.IOResponseReader{}) - mockUserService := &app.UserService{ - Attributes: &app.UserServiceAttributes{ - Namespaces: make([]*app.NamespaceAttributes, 0), - CreatedAt: nil, - }, - } - - namespaceAttributes, err := mockOSIOClient.GetNamespaceByType(context.Background(), mockUserService, "namespace") - require.NoError(t, err) - require.Nil(t, namespaceAttributes) -} - -func TestGetNamespaceByTypeMatchNamespace(t *testing.T) { - NAMESPACE_TYPE := "desiredType" - jsonProvider := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(`{ - "data": { - "attributes": { - "bio": "", - "cluster": "https://some-random-cluster-dot.com", - "company": "", - "contextInformation": { - "experimentalFeatures": { - "enabled": true - }, - "recentContexts": [ - { - "space": "00000000-0000-0000-0000-000000000000", - "user": "11111111-1111-1111-1111-111111111111" - }, - { - "space": null, - "user": "22222222-2222-2222-2222-222222222222" - } - ], - "recentSpaces": ["33333333-3333-3333-3333-333333333333"] - }, - "created-at": "2017-11-03T16:39:45.566361Z", - "email": "email@somerandomemailhere.email", - "emailPrivate": true, - "emailVerified": true, - "fullName": "Dr. Legit Email", - "identityID": "44444444-4444-4444-4444-444444444444", - "imageURL": "https://www.gravatar.com/avatar/00000000000000000000000000000000.jpg", - "providerType": "kc", - "registrationCompleted": true, - "updated-at": "2018-01-16T19:43:41.859203Z", - "url": "", - "userID": "55555555-5555-5555-5555-555555555555", - "username": "username" - }, - "id": "66666666-6666-6666-6666-666666666666", - "links": { - "related": "https://auth.openshift.io/api/users/77777777-7777-7777-7777-777777777777", - "self": "https://auth.openshift.io/api/users/88888888-8888-8888-8888-888888888888" - }, - "type": "desiredType" - } - }`)), - } - mockNamespace := &app.NamespaceAttributes{ - Type: &NAMESPACE_TYPE, - } - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: mockResponse, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonProvider) - mockUserService := &app.UserService{ - Attributes: &app.UserServiceAttributes{ - Namespaces: []*app.NamespaceAttributes{mockNamespace}, - CreatedAt: nil, - }, - } - namespaceAttributes, err := mockOSIOClient.GetNamespaceByType(context.Background(), mockUserService, NAMESPACE_TYPE) - require.NoError(t, err) - require.Equal(t, mockNamespace, namespaceAttributes) -} - -func TestGetNamespaceByTypeMatchNamespaceWithDiscoveredUserService(t *testing.T) { - NAMESPACE_TYPE := "desiredType" - jsonProvider := &JsonResponseReader{ - jsonBytes: bytes.NewBuffer([]byte(`{ - "data": { - "attributes": { - "created-at": "2017-11-03T16:39:45.566361Z", - "namespaces": [ - { - "name": "some-name", - "state": "some-state", - "type": "desiredType", - "version": "123" - } - ] - }, - "id": "66666666-6666-6666-6666-666666666666", - "links": { - "related": "https://auth.openshift.io/api/users/77777777-7777-7777-7777-777777777777", - "self": "https://auth.openshift.io/api/users/88888888-8888-8888-8888-888888888888" - }, - "type": "someType" - } - }`)), - } - mockResponse := &http.Response{ - Body: &MockResponseBodyReader{}, - StatusCode: http.StatusOK, - } - mockWitClient := &MockWitClient{ - SpaceHttpResponse: nil, - SpaceHttpResponseError: nil, - UserServiceHttpResponse: mockResponse, - UserServiceHttpResponseError: nil, - } - mockOSIOClient := controller.CreateOSIOClient(mockWitClient, jsonProvider) - namespaceAttributes, err := mockOSIOClient.GetNamespaceByType(context.Background(), nil, NAMESPACE_TYPE) - require.NoError(t, err) - require.Equal(t, NAMESPACE_TYPE, *namespaceAttributes.Type) - require.Equal(t, "some-name", *namespaceAttributes.Name) - require.Equal(t, "some-state", *namespaceAttributes.State) - require.Equal(t, "123", *namespaceAttributes.Version) -} diff --git a/controller/deployments_urlprovider.go b/controller/deployments_urlprovider.go deleted file mode 100644 index cba02b6cf0..0000000000 --- a/controller/deployments_urlprovider.go +++ /dev/null @@ -1,337 +0,0 @@ -package controller - -import ( - "context" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "strings" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/auth" - "github.com/fabric8-services/fabric8-wit/auth/authservice" - "github.com/fabric8-services/fabric8-wit/configuration" - "github.com/fabric8-services/fabric8-wit/goasupport" - "github.com/fabric8-services/fabric8-wit/kubernetes" - "github.com/fabric8-services/fabric8-wit/log" - - goajwt "github.com/goadesign/goa/middleware/security/jwt" - errs "github.com/pkg/errors" -) - -// there are several concrete instantiations: -// -// - access /api/user/services instead of Auth -// - use proxy (if present) for normal OSO API calls -// - access OSO metrics directly (until proxy supports this) - -type tenantURLProvider struct { - apiURL string - apiToken string - tenant *app.UserService - namespaces map[string]*app.NamespaceAttributes - tokens map[string]string - TokenRetriever -} - -// TokenRetriever is a service that will respond with an authorization token, given a service endpoint or name -type TokenRetriever interface { - TokenForService(serviceURL string) (*string, error) -} - -type tokenRetriever struct { - authClient *authservice.Client - context context.Context -} - -func (tr *tokenRetriever) TokenForService(forService string) (*string, error) { - - resp, err := tr.authClient.RetrieveToken(goasupport.ForwardContextRequestID(tr.context), authservice.RetrieveTokenPath(), forService, nil) - if err != nil { - return nil, errs.Wrapf(err, "unable to retrieve Auth token for '%s' service", forService) - } - - defer resp.Body.Close() - - respBody, err := ioutil.ReadAll(resp.Body) - - status := resp.StatusCode - if status != http.StatusOK { - log.Error(nil, map[string]interface{}{ - "err": err, - "request_path": authservice.ShowUserPath(), - "for_service": forService, - "http_status": status, - }, "failed to GET token from auth service due to HTTP error %s", status) - return nil, errs.Errorf("failed to GET Auth token for '%s' service due to status code %d", forService, status) - } - - var respType authservice.TokenData - err = json.Unmarshal(respBody, &respType) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "request_path": authservice.ShowUserPath(), - "for_service": forService, - "http_status": status, - "response_body": respBody, - }, "unable to unmarshal Auth token") - return nil, errs.Wrapf(err, "unable to unmarshal Auth token for '%s' service from Auth service", forService) - } - - return respType.AccessToken, nil -} - -// ensure tenantURLProvider implements BaseURLProvider -var _ kubernetes.BaseURLProvider = &tenantURLProvider{} -var _ kubernetes.BaseURLProvider = (*tenantURLProvider)(nil) - -// NewURLProvider looks at what servers are available and create a BaseURLProvder that fits -func NewURLProvider(ctx context.Context, config *configuration.Registry, osioclient OpenshiftIOClient) (kubernetes.BaseURLProvider, error) { - - userServices, err := osioclient.GetUserServices(ctx) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error accessing Tenant API") - return nil, err - } - - token := goajwt.ContextJWT(ctx).Raw - proxyURL := config.GetOpenshiftProxyURL() - - up, err := newTenantURLProviderFromTenant(userServices, token, proxyURL) - if err != nil { - return nil, err - } - - // create Auth API client - required to get OSO tokens - authClient, err := auth.CreateClient(ctx, config) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "err": err, - }, "error accessing Auth server") - return nil, errs.Wrap(err, "error creating Auth client") - } - up.TokenRetriever = &tokenRetriever{ - authClient: authClient, - context: ctx, - } - - // if we're not using a proxy then the API URL is actually the cluster of namespace 0, - // so the apiToken should be the token for that cluster. - // there should be no defaults, but that's deferred later - if len(proxyURL) == 0 { - tokenData, err := up.TokenForService(up.apiURL) - if err != nil { - return nil, err - } - up.apiToken = *tokenData - } - return up, nil -} - -// newTenantURLProviderFromTenant create a provider from a UserService object -func newTenantURLProviderFromTenant(t *app.UserService, token string, proxyURL string) (*tenantURLProvider, error) { - - if t.ID == nil { - log.Error(nil, map[string]interface{}{}, "app.UserService is malformed: no ID field") - return nil, errs.New("app.UserService is malformed: no ID field") - } - - if t.Attributes == nil { - log.Error(nil, map[string]interface{}{ - "tenant": *t.ID, - }, "app.UserService is malformed: no Attribute field ID=%s", *t.ID) - return nil, errs.Errorf("app.UserService is malformed: no Attribute field (ID=%s)", *t.ID) - } - - if len(t.Attributes.Namespaces) == 0 { - log.Error(nil, map[string]interface{}{ - "tenant": *t.ID, - }, "this tenant has no namespaces: %s", *t.ID) - return nil, errs.Errorf("app.UserService is malformed: no Namespaces (ID=%s)", *t.ID) - } - - defaultNamespace := t.Attributes.Namespaces[0] - namespaceMap := make(map[string]*app.NamespaceAttributes) - for i, namespace := range t.Attributes.Namespaces { - namespaceMap[*namespace.Name] = t.Attributes.Namespaces[i] - if namespace.Type != nil && *namespace.Type == "user" { - defaultNamespace = namespace - } - } - - defaultClusterURL := *defaultNamespace.ClusterURL - - if len(proxyURL) != 0 { - // all non-metric API calls go via the proxy - defaultClusterURL = proxyURL - } - - provider := &tenantURLProvider{ - apiURL: defaultClusterURL, - apiToken: token, - tenant: t, - namespaces: namespaceMap, - } - return provider, nil -} - -// NewTenantURLProviderFromTenant create a provider from a UserService object (exposed for testing) -func NewTenantURLProviderFromTenant(t *app.UserService, token string, proxyURL string) (kubernetes.BaseURLProvider, error) { - return newTenantURLProviderFromTenant(t, token, proxyURL) -} - -// GetEnvironmentMapping returns a map whose keys are environment names, and values are the Kubernetes namespaces -// that represent those environments -func (up *tenantURLProvider) GetEnvironmentMapping() map[string]string { - result := make(map[string]string) - // Exclude internal namespaces where the user cannot deploy applications - - // Deployments API will receive requests by environment name (e.g. "run", "stage"). - // These names correspond to the "type" attribute in Namespaces. - for envNS, attr := range up.namespaces { - envName := attr.Type - if envName == nil || len(*envName) == 0 { - log.Error(nil, map[string]interface{}{ - "namespace": envNS, - }, "namespace has no type") - } else { - result[*envName] = envNS - } - } - return result -} - -// Types of namespaces where the user does not deploy applications -var internalNamespaceTypes = map[string]struct{}{"user": {}, "che": {}, "jenkins": {}} - -// CanDeploy returns true if the environment type provided can be deployed to as part of a pipeline -func (up *tenantURLProvider) CanDeploy(envType string) bool { - _, pres := internalNamespaceTypes[envType] - return !pres -} - -func (up *tenantURLProvider) GetAPIToken() (*string, error) { - return &up.apiToken, nil -} - -func (up *tenantURLProvider) GetAPIURL() (*string, error) { - // TODO this may be different for every namespace if no proxy - return &up.apiURL, nil -} - -func (up *tenantURLProvider) GetMetricsToken(envNS string) (*string, error) { - // since metrics bypasses the proxy, this is the OSO cluster token - token := up.tokens[envNS] - if len(token) == 0 { - ns := up.namespaces[envNS] - if ns == nil { - return nil, errs.Errorf("Namespace '%s' is not in tenant '%s'", envNS, *up.tenant.ID) - } - if up.TokenRetriever != nil { - tokenData, err := up.TokenForService(*ns.ClusterURL) - if err != nil { - return nil, err - } - token = *tokenData - } else { - tokenData, err := up.GetAPIToken() - if err != nil { - return nil, err - } - token = *tokenData - } - } - return &token, nil -} - -func (up *tenantURLProvider) GetConsoleURL(envNS string) (*string, error) { - ns := up.namespaces[envNS] - if ns == nil { - return nil, errs.Errorf("Namespace '%s' is not in tenant '%s'", envNS, *up.tenant.ID) - } - // Note that the Auth/Tenant appends /console to the hostname for console/logging - baseURL := ns.ClusterConsoleURL - if baseURL == nil || len(*baseURL) == 0 { - // if it's missing, modify the cluster URL - bu, err := modifyURL(*ns.ClusterURL, "console", "/console") - if err != nil { - return nil, err - } - buStr := bu.String() - baseURL = &buStr - } - consoleURL := fmt.Sprintf("%s/project/%s", *baseURL, envNS) - return &consoleURL, nil -} - -func (up *tenantURLProvider) GetLoggingURL(envNS string, deployName string) (*string, error) { - ns := up.namespaces[envNS] - if ns == nil { - return nil, errs.Errorf("Namespace '%s' is not in tenant '%s'", envNS, *up.tenant.ID) - } - // Note that the Auth/Tenant appends /console to the hostname for console/logging - baseURL := ns.ClusterLoggingURL - if baseURL == nil || len(*baseURL) == 0 { - // if it's missing, modify the cluster URL - bu, err := modifyURL(*ns.ClusterURL, "console", "/console") - if err != nil { - return nil, err - } - buStr := bu.String() - baseURL = &buStr - } - loggingURL := fmt.Sprintf("%s/project/%s/browse/rc/%s?tab=logs", *baseURL, envNS, deployName) - return &loggingURL, nil -} - -func (up *tenantURLProvider) GetMetricsURL(envNS string) (*string, error) { - ns := up.namespaces[envNS] - if ns == nil { - return nil, errs.Errorf("Namespace '%s' is not in tenant '%s'", envNS, *up.tenant.ID) - } - - baseURL := ns.ClusterMetricsURL - if baseURL == nil || len(*baseURL) == 0 { - // In the absence of a better way (i.e. tenant) to get the user's metrics URL, - // substitute "api" with "metrics" in user's cluster URL - mu, err := modifyURL(*ns.ClusterURL, "metrics", "") - if err != nil { - return nil, err - } - muStr := mu.String() - baseURL = &muStr - } - // Hawkular implementation is sensitive and requires no trailing '/' - if strings.HasSuffix(*baseURL, "/") { - nurl := (*baseURL)[:len(*baseURL)-1] - baseURL = &nurl - } - return baseURL, nil -} - -func modifyURL(apiURLStr string, prefix string, path string) (*url.URL, error) { - // Parse as URL to give us easy access to the hostname - apiURL, err := url.Parse(apiURLStr) - if err != nil { - return nil, errs.WithStack(err) - } - - // Get the hostname (without port) and replace api prefix with prefix arg - apiHostname := apiURL.Hostname() - if !strings.HasPrefix(apiHostname, "api") { - return nil, errs.Errorf("cluster URL does not begin with \"api\": %s", apiHostname) - } - newHostname := strings.Replace(apiHostname, "api", prefix, 1) - // Construct URL using just scheme from API URL, modified hostname and supplied path - newURL := &url.URL{ - Scheme: apiURL.Scheme, - Host: newHostname, - Path: path, - } - return newURL, nil -} diff --git a/controller/deployments_urlprovider_test.go b/controller/deployments_urlprovider_test.go deleted file mode 100644 index 99cd0c11c2..0000000000 --- a/controller/deployments_urlprovider_test.go +++ /dev/null @@ -1,302 +0,0 @@ -package controller_test - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "strings" - "testing" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/controller" - "github.com/fabric8-services/fabric8-wit/kubernetes" - - errs "github.com/pkg/errors" - "github.com/stretchr/testify/require" -) - -const defaultAPIURL = "https://api.hostname/api" -const defaultAPIToken = "token1" -const defaultNS = "myDefaultNS" - -// testing Tenant-based URL provider -var defaultTenant *app.UserService - -// Path to JSON resources -const pathToURLProviderJSON = "../test/kubernetes/urlprovider-" - -func getTenantFromFile(filename string) (*app.UserService, error) { - path := pathToURLProviderJSON + filename - jsonBytes, err := ioutil.ReadFile(path) - if err != nil { - return nil, errs.WithStack(err) - } - t := &app.UserService{} - err = json.Unmarshal(jsonBytes, t) - if err != nil { - return nil, errs.WithStack(err) - } - return t, nil -} - -func getDefaultTenant() (*app.UserService, error) { - if defaultTenant == nil { - t, err := getTenantFromFile("tenant-default.json") - if err != nil { - fmt.Printf("error reading tenant: %s", err.Error()) - return nil, err - } - //fmt.Printf("default tenant = \n%s\n", tostring(*t)) - defaultTenant = t - } - return defaultTenant, nil -} - -func getBadTenantProvider() (kubernetes.BaseURLProvider, error) { - t, err := getTenantFromFile("tenant-missingurls.json") - if err != nil { - fmt.Printf("error reading bad tenant: %s", err.Error()) - return nil, err - } - return controller.NewTenantURLProviderFromTenant(t, defaultAPIToken, "") -} - -func getDefaultTenantProvider() (kubernetes.BaseURLProvider, error) { - t, err := getDefaultTenant() - if err != nil { - return nil, err - } - if t == nil { - fmt.Printf("error reading default tenant: %s", err.Error()) - } - return controller.NewTenantURLProviderFromTenant(t, defaultAPIToken, "") -} - -func TestTenantAPIURL(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - require.NotNil(t, p) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - require.Equal(t, defaultAPIURL, *apiurl, "GetAPIURL() returned wrong value") -} - -func TestTenantGetMalformedData(t *testing.T) { - us, err := getTenantFromFile("tenant-malformed.json") - require.NoError(t, err) - require.NotNilf(t, us, "error reading test file %s", "tenant-malformed.json") - - up, err := controller.NewTenantURLProviderFromTenant(us, defaultAPIToken, "") - require.Nil(t, up) - require.Error(t, err) -} - -func TestTenantGetDefaultMetricsURL(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - murl, err := p.GetMetricsURL(defaultNS) - require.NoError(t, err, "GetMetricsURL() returned an error") - require.NotNil(t, murl) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // converts leading "api" to leading "metrics" - apiMetricsURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//metrics.", 1), "/api", "", 1) - require.NotEqual(t, apiMetricsURL, *murl, "GetMetricsURL() defaulted to API URL") - expected := *defaultTenant.Attributes.Namespaces[0].ClusterMetricsURL - require.Equal(t, expected, *murl, "GetMetricsURL() did not return the correct value from JSON") -} - -func TestTenantGetMissingMetricsURL(t *testing.T) { - p, err := getBadTenantProvider() - require.NoError(t, err) - murl, err := p.GetMetricsURL(defaultNS) - require.NoError(t, err, "GetMetricsURL() returned an error") - require.NotNil(t, murl) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // converts leading "api" to leading "metrics" - apiMetricsURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//metrics.", 1), "/api", "", 1) - require.Equal(t, apiMetricsURL, *murl, "empty or missing GetMetricsURL() must default to API URL") -} - -func TestTenantGetConsoleURL(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - url, err := p.GetConsoleURL(defaultNS) - require.NoError(t, err, "GetConsoleURL() returned an error") - require.NotNil(t, url) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // Note that the Auth/Tenant appends /console to the hostname for console/logging - apiConsoleURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//console.", 1), "/api", "", 1) + "/project/" + defaultNS - require.NotEqual(t, apiConsoleURL, *url, "GetConsoleURL() defaulted to API URL") - expected := *defaultTenant.Attributes.Namespaces[0].ClusterConsoleURL - expected = expected + "/project/" + defaultNS - require.Equal(t, expected, *url, "GetConsoleURL() did not return the correct value from JSON") -} - -func TestTenantGetMissingConsoleURL(t *testing.T) { - p, err := getBadTenantProvider() - require.NoError(t, err) - url, err := p.GetConsoleURL(defaultNS) - require.NoError(t, err, "GetConsoleURL() returned an error") - require.NotNil(t, url) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // Note that the Auth/Tenant appends /console to the hostname for console/logging - we have to to this here - apiConsoleURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//console.", 1), "/api", "", 1) + "/console/project/" + defaultNS - require.Equal(t, apiConsoleURL, *url, "GetConsoleURL()must default to API URL") -} -func TestTenantGetLoggingURL(t *testing.T) { - const deployName = "aDeployName" - p, err := getDefaultTenantProvider() - require.NoError(t, err) - url, err := p.GetLoggingURL(defaultNS, deployName) - require.NoError(t, err, "GetLoggingURL() returned an error") - require.NotNil(t, url) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // converts leading "api" to leading "metrics" - // Note that the Auth/Tenant appends /console to the hostname for console/logging - apiConsoleURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//console.", 1), "/api", "", 1) + "/project/" + defaultNS - apiLoggingURL := fmt.Sprintf("%s/browse/rc/%s?tab=logs", apiConsoleURL, deployName) - require.NotEqual(t, apiLoggingURL, *url, "GetLoggingURL() defaulted to API URL") - expected := *defaultTenant.Attributes.Namespaces[0].ClusterLoggingURL - expected = expected + "/project/" + defaultNS + "/browse/rc/" + deployName + "?tab=logs" - require.Equal(t, expected, *url, "GetLoggingURL() did not return correct value") -} - -func TestTenantGetMissingLoggingURL(t *testing.T) { - const deployName = "aDeployName" - p, err := getBadTenantProvider() - require.NoError(t, err) - url, err := p.GetLoggingURL(defaultNS, deployName) - require.NoError(t, err, "GetLoggingURL() returned an error") - require.NotNil(t, url) - apiurl, err := p.GetAPIURL() - require.NoError(t, err) - require.NotNil(t, apiurl) - // converts leading "api" to leading "metrics" - // Note that the Auth/Tenant appends /console to the hostname for console/logging - we have to to this here - apiConsoleURL := strings.Replace(strings.Replace(*apiurl, "//api.", "//console.", 1), "/api", "", 1) + "/console/project/" + defaultNS - apiLoggingURL := fmt.Sprintf("%s/browse/rc/%s?tab=logs", apiConsoleURL, deployName) - require.Equal(t, apiLoggingURL, *url, "GetLoggingURL() must default to API URL") -} - -func TestTenantGetAPIToken(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - token, err := p.GetAPIToken() - require.NoError(t, err) - require.NotNil(t, token) - require.Equal(t, defaultAPIToken, *token, "GetAPIToken() did not return API token") -} - -func TestTenantGetDefaultMetricsToken(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - mtoken, err := p.GetMetricsToken(defaultNS) - require.NoError(t, err) - require.NotNil(t, mtoken) - require.Equal(t, defaultAPIToken, *mtoken, "GetMetricsToken() did not default to API token") -} - -func TestTenantGetUnknownMetricsToken(t *testing.T) { - p, err := getDefaultTenantProvider() - require.NoError(t, err) - mtoken, err := p.GetMetricsToken("unknown NS") - require.Error(t, err) - require.Nil(t, mtoken) -} - -func TestTenantGetEnvironmentMapping(t *testing.T) { - testCases := []struct { - testName string - inputFile string - expectedMap map[string]string - }{ - { - testName: "Basic", - inputFile: "user-services.json", - expectedMap: map[string]string{ - "user": "theuser", - "run": "theuser-run", - "stage": "theuser-stage", - "che": "theuser-che", - "jenkins": "theuser-jenkins", - }, - }, - { - testName: "No Type", - inputFile: "user-services-no-type.json", - expectedMap: map[string]string{ - "user": "theuser", - "run": "theuser-run", - "che": "theuser-che", - "jenkins": "theuser-jenkins", - }, - }, - { - testName: "Empty Type", - inputFile: "user-services-empty-type.json", - expectedMap: map[string]string{ - "user": "theuser", - "run": "theuser-run", - "che": "theuser-che", - "jenkins": "theuser-jenkins", - }, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - userSvc, err := getTenantFromFile(testCase.inputFile) - require.NoError(t, err, "error reading tenant") - provider, err := controller.NewTenantURLProviderFromTenant(userSvc, defaultAPIToken, "") - require.NoError(t, err, "error creating URL provider") - - envMap := provider.GetEnvironmentMapping() - require.NotNil(t, envMap) - require.Equal(t, testCase.expectedMap, envMap, "GetEnvironmentMapping() did not return the expected environments") - }) - } -} - -func TestTenantCanDeploy(t *testing.T) { - testCases := []struct { - envType string - expected bool - }{ - {"user", false}, - {"test", true}, - {"stage", true}, - {"run", true}, - {"che", false}, - {"jenkins", false}, - } - - for _, testCase := range testCases { - t.Run(testCase.envType, func(t *testing.T) { - provider, err := getDefaultTenantProvider() - require.NoError(t, err) - result := provider.CanDeploy(testCase.envType) - require.Equal(t, testCase.expected, result, "Incorrect result from CanDeploy") - }) - } -} - -////////////////////////////////////////////////////////////////////////////////////////////////// - -func tostring(item interface{}) string { - bytes, err := json.MarshalIndent(item, "", " ") - if err != nil { - return err.Error() - } - return string(bytes) -} diff --git a/controller/space.go b/controller/space.go index f373eaae25..9dde302f32 100644 --- a/controller/space.go +++ b/controller/space.go @@ -216,23 +216,6 @@ func (c *SpaceController) Delete(ctx *app.DeleteSpaceContext) error { ctx, errors.NewInternalError(ctx, errs.Wrapf(err, "failed to delete codebases associated with space %s", spaceID))) } - // now delete the OpenShift resources associated with this space on an - // OpenShift cluster, unless otherwise specified - if ctx.SkipCluster == nil || !*ctx.SkipCluster { - err = deleteOpenShiftResource(c.DeploymentsClient, config, ctx.Context, spaceID) - if err != nil { - log.Error(ctx, map[string]interface{}{ - "space_id": spaceID, - "err": err, - }, "could not delete OpenShift resources") - return jsonapi.JSONErrorResponse( - ctx, errors.NewInternalError(ctx, errs.Wrapf( - err, "could not delete Openshift resources associated with space %s", spaceID), - ), - ) - } - } - err = application.Transactional(c.db, func(appl application.Application) error { s, err := appl.Spaces().Load(ctx.Context, ctx.SpaceID) if err != nil { @@ -353,98 +336,6 @@ func deleteCodebases( return nil } -// deleteOpenShiftResource deletes all the openshift resources present in the -// OpenShift online cluster corresponding to the given spaceID -// TODO: fix all the errors, return appropriate errors -func deleteOpenShiftResource( - httpClient *http.Client, - config *configuration.Registry, - ctx context.Context, - spaceID goauuid.UUID) error { - - u, err := url.Parse(config.GetDeploymentsServiceURL()) - if err != nil { - return errors.NewInternalError(ctx, - fmt.Errorf("malformed deployments service URL %s: %v", - config.GetDeploymentsServiceURL(), err)) - } - - cl := client.New(goaclient.HTTPClientDoer(httpClient)) - cl.Host = u.Host - cl.Scheme = u.Scheme - cl.SetJWTSigner(goasupport.NewForwardSigner(goasupport.ForwardContextRequestID(ctx))) - - // get all the apps and envs - path := client.ShowSpaceDeploymentsPath(spaceID) - resp, err := cl.ShowSpaceDeployments(ctx, path) - if err != nil { - return errors.NewInternalError(ctx, - fmt.Errorf("could not get deployments: %v", err)) - } - defer resp.Body.Close() - - if 200 < resp.StatusCode && resp.StatusCode >= 300 { - formattedErrors, err := cl.DecodeJSONAPIErrors(resp) - if err != nil { - return errors.NewInternalError(ctx, - fmt.Errorf("could not decode JSON formatted errors returned while listing deployments: %v", err)) - } - for _, e := range formattedErrors.Errors { - log.Info(ctx, map[string]interface{}{ - "status_code": resp.StatusCode, - "formatted_error": *e, - }, "deleting openshift resources failed") - - } - if len(formattedErrors.Errors) > 0 { - return errors.NewInternalError(ctx, errs.Errorf(formattedErrors.Errors[0].Detail)) - } - return errors.NewInternalError(ctx, errs.Errorf("unknown error")) - } - space, err := cl.DecodeSimpleSpaceSingle(resp) - if err != nil { - return errors.NewInternalError(ctx, - fmt.Errorf("could not decode deployments: %v", err)) - } - - // iterate over all the applications - var errorsList []error - for _, app := range space.Data.Attributes.Applications { - for _, env := range app.Attributes.Deployments { - path = client.DeleteDeploymentDeploymentsPath( - spaceID, - app.Attributes.Name, - env.Attributes.Name, - ) - resp, err = cl.DeleteDeploymentDeployments(ctx, path) - if err != nil { - errorsList = append(errorsList, - errs.Wrapf(err, "could not delete deployment for space=%s, app=%s, env=%s", spaceID, app.Attributes.Name, env.Attributes.Name)) - continue - } - if 200 < resp.StatusCode && resp.StatusCode >= 300 { - formattedErrors, err := cl.DecodeJSONAPIErrors(resp) - if err != nil { - errorsList = append(errorsList, - errs.Wrapf(err, "could not decode JSON formatted errors returned while deleting deployment for space=%s, app=%s, env=%s", spaceID, app.Attributes.Name, env.Attributes.Name)) - continue - } - if len(formattedErrors.Errors) > 0 { - errorsList = append(errorsList, errs.Errorf(formattedErrors.Errors[0].Detail)) - } - } - } - } - if len(errorsList) != 0 { - var errString string - for _, err = range errorsList { - errString += fmt.Sprintf("%s\n", err) - } - return errors.NewInternalErrorFromString(errString) - } - return nil -} - // List runs the list action. func (c *SpaceController) List(ctx *app.ListSpaceContext) error { _, err := login.ContextIdentity(ctx) diff --git a/controller/space_blackbox_test.go b/controller/space_blackbox_test.go index 121525a5e3..939410521d 100644 --- a/controller/space_blackbox_test.go +++ b/controller/space_blackbox_test.go @@ -8,7 +8,6 @@ import ( "testing" "time" - "github.com/dnaeon/go-vcr/cassette" "github.com/dnaeon/go-vcr/recorder" "github.com/fabric8-services/fabric8-wit/account" "github.com/fabric8-services/fabric8-wit/app" @@ -24,7 +23,7 @@ import ( tf "github.com/fabric8-services/fabric8-wit/test/testfixture" "github.com/goadesign/goa" - uuid "github.com/satori/go.uuid" + "github.com/satori/go.uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -405,19 +404,6 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { ) spaceID := fxt.Spaces[0].ID identity := *fxt.Identities[0] - expectedDeleteURLs := map[string]struct{}{ - "http://core/api/deployments/spaces/aec5f659-0680-4633-8599-5f14f1deeabc/applications/testspace1/deployments/stage": {}, - "http://core/api/deployments/spaces/aec5f659-0680-4633-8599-5f14f1deeabc/applications/testspace1/deployments/run": {}, - "http://core/api/deployments/spaces/aec5f659-0680-4633-8599-5f14f1deeabc/applications/testspace2/deployments/stage": {}, - "http://core/api/deployments/spaces/aec5f659-0680-4633-8599-5f14f1deeabc/applications/testspace2/deployments/run": {}, - } - - rDeployments, err := recorder.New("../test/data/deployments/deployments_delete_space.ok") - require.NoError(t, err) - rDeployments.SetMatcher(func(httpReq *http.Request, vcrReq cassette.Request) bool { - return checkDeleteURL(httpReq, expectedDeleteURLs, t) - }) - defer rDeployments.Stop() rCodebase, err := recorder.New("../test/data/codebases/codebases_delete_space.ok") require.NoError(t, err) @@ -425,83 +411,9 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { svc, ctrl := s.SecuredController( identity, - withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), - withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), - ) - test.DeleteSpaceOK(t, svc.Context, svc, ctrl, spaceID, nil) - - require.Emptyf(t, expectedDeleteURLs, "Expected DELETE request(s) not made: %v", expectedDeleteURLs) - }) - - s.T().Run("skip cluster - ok", func(t *testing.T) { - var err error - fxt := tf.NewTestFixture(t, s.DB, - tf.Spaces(1, func(f *tf.TestFixture, index int) error { - f.Spaces[index].ID, err = uuid.FromString("2a75fae9-3131-4dc5-8b43-283aeb2522b6") - require.NoError(t, err) - return nil - }), - tf.Codebases(1), - ) - spaceID := fxt.Spaces[0].ID - identity := *fxt.Identities[0] - skipCluster := true - - rDeployments, err := recorder.New("../test/data/deployments/deployments_delete_space.ok-skip-cluster") - require.NoError(t, err) - defer rDeployments.Stop() - - rCodebase, err := recorder.New("../test/data/codebases/codebases_delete_space.ok-skip-cluster") - require.NoError(t, err) - defer rCodebase.Stop() - - svc, ctrl := s.SecuredController( - identity, - withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceOK(t, svc.Context, svc, ctrl, spaceID, &skipCluster) - }) - - s.T().Run("skip cluster - false", func(t *testing.T) { - var err error - fxt := tf.NewTestFixture(t, s.DB, - tf.Spaces(1, func(f *tf.TestFixture, index int) error { - f.Spaces[index].ID, err = uuid.FromString("4d19e0fb-b558-4160-8768-f41cb8169e95") - require.NoError(t, err) - return nil - }), - tf.Codebases(1), - ) - spaceID := fxt.Spaces[0].ID - identity := *fxt.Identities[0] - skipCluster := false - expectedDeleteURLs := map[string]struct{}{ - "http://core/api/deployments/spaces/4d19e0fb-b558-4160-8768-f41cb8169e95/applications/testspace1/deployments/stage": {}, - "http://core/api/deployments/spaces/4d19e0fb-b558-4160-8768-f41cb8169e95/applications/testspace1/deployments/run": {}, - "http://core/api/deployments/spaces/4d19e0fb-b558-4160-8768-f41cb8169e95/applications/testspace2/deployments/stage": {}, - "http://core/api/deployments/spaces/4d19e0fb-b558-4160-8768-f41cb8169e95/applications/testspace2/deployments/run": {}, - } - - rDeployments, err := recorder.New("../test/data/deployments/deployments_delete_space.ok-skip-cluster-false") - require.NoError(t, err) - rDeployments.SetMatcher(func(httpReq *http.Request, vcrReq cassette.Request) bool { - return checkDeleteURL(httpReq, expectedDeleteURLs, t) - }) - defer rDeployments.Stop() - - rCodebase, err := recorder.New("../test/data/codebases/codebases_delete_space.ok-skip-cluster-false") - require.NoError(t, err) - defer rCodebase.Stop() - - svc, ctrl := s.SecuredController( - identity, - withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), - withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), - ) - test.DeleteSpaceOK(t, svc.Context, svc, ctrl, spaceID, &skipCluster) - - require.Emptyf(t, expectedDeleteURLs, "Expected DELETE request(s) not made: %v", expectedDeleteURLs) + test.DeleteSpaceOK(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("delete space - auth returns 401 Unauthorized", func(t *testing.T) { @@ -533,7 +445,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceUnauthorized(t, svc.Context, svc, ctrl, spaceID, nil) + test.DeleteSpaceUnauthorized(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("delete space - auth returns 403 Forbidden", func(t *testing.T) { @@ -565,7 +477,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceForbidden(t, svc.Context, svc, ctrl, spaceID, nil) + test.DeleteSpaceForbidden(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("delete space - auth returns 404 Not Found", func(t *testing.T) { @@ -597,7 +509,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceNotFound(t, svc.Context, svc, ctrl, spaceID, nil) + test.DeleteSpaceNotFound(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("delete space - auth returns 500 Internal Server Error", func(t *testing.T) { @@ -629,7 +541,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceInternalServerError(t, svc.Context, svc, ctrl, spaceID, nil) + test.DeleteSpaceInternalServerError(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("fail - different owner", func(t *testing.T) { @@ -658,7 +570,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - test.DeleteSpaceForbidden(t, svc.Context, svc, ctrl, spaceID, nil) + test.DeleteSpaceForbidden(t, svc.Context, svc, ctrl, spaceID) }) s.T().Run("fail - invalid Space ID", func(t *testing.T) { @@ -685,7 +597,7 @@ func (s *SpaceControllerTestSuite) TestDeleteSpace() { withDeploymentsClient(&http.Client{Transport: rDeployments.Transport}), withCodebaseClient(&http.Client{Transport: rCodebase.Transport}), ) - _, e := test.DeleteSpaceInternalServerError(t, svc.Context, svc, ctrl, spaceID, nil) + _, e := test.DeleteSpaceInternalServerError(t, svc.Context, svc, ctrl, spaceID) assert.Contains(t, e.String(), "failed to delete codebases associated with space") }) } diff --git a/controller/space_test.go b/controller/space_test.go index 7d9ad21cee..7d94c8e8dc 100644 --- a/controller/space_test.go +++ b/controller/space_test.go @@ -2,7 +2,6 @@ package controller import ( "context" - "fmt" "net/http" "testing" @@ -13,60 +12,6 @@ import ( "github.com/stretchr/testify/require" ) -func TestDeleteOpenShiftResource(t *testing.T) { - - t.Run("ok", func(t *testing.T) { - // given - r, err := recorder.New("../test/data/deployments/deployments_delete_space.ok") - require.NoError(t, err) - defer r.Stop() - - spaceID, err := goauuid.FromString("aec5f659-0680-4633-8599-5f14f1deeabc") - require.NoError(t, err) - ctx := context.Background() - config, err := configuration.New("") - require.NoError(t, err) - - client := &http.Client{ - Transport: r.Transport, - } - - // when - err = deleteOpenShiftResource(client, config, ctx, spaceID) - // then - require.NoError(t, err) - }) - - t.Run("failure", func(t *testing.T) { - t.Run("space not found", func(t *testing.T) { - defer func() { - if r := recover(); r != nil { - fmt.Println("Recovered in f", r) - } - }() - // given - r, err := recorder.New("../test/data/deployments/deployments_delete_space.404.space_not_found") - require.NoError(t, err) - defer r.Stop() - - spaceID, err := goauuid.FromString("aec5f659-0680-4633-8599-5f14f1deeabc") - require.NoError(t, err) - ctx := context.Background() - config, err := configuration.New("") - require.NoError(t, err) - - client := &http.Client{ - Transport: r.Transport, - } - - // when - err = deleteOpenShiftResource(client, config, ctx, spaceID) - // then - require.Error(t, err) - }) - }) -} - func TestDeleteCodebases(t *testing.T) { r, err := recorder.New("../test/data/codebases/codebases_delete_space.ok") require.NoError(t, err) diff --git a/controller/test-files/endpoints/list/ok.res.payload.golden.json b/controller/test-files/endpoints/list/ok.res.payload.golden.json index f4f01560b2..671a658bac 100755 --- a/controller/test-files/endpoints/list/ok.res.payload.golden.json +++ b/controller/test-files/endpoints/list/ok.res.payload.golden.json @@ -20,11 +20,6 @@ "related": "http:///api/user" } }, - "deployments_environments": { - "links": { - "related": "http:///api/deployments/environments" - } - }, "endpoints": { "links": { "related": "http:///api/endpoints" diff --git a/design/deployments.go b/design/deployments.go deleted file mode 100644 index 0823861731..0000000000 --- a/design/deployments.go +++ /dev/null @@ -1,383 +0,0 @@ -package design - -import ( - d "github.com/goadesign/goa/design" - a "github.com/goadesign/goa/design/apidsl" -) - -// SimpleSpace describe a space -var simpleSpace = a.Type("SimpleSpace", func() { - a.Description(`a space consisting of multiple applications`) - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("space") - a.Default("space") - }) - a.Attribute("id", d.UUID, "ID of the space", func() { - a.Example("40bbdd3d-8b5d-4fd6-ac90-7236b669af04") - }) - a.Attribute("attributes", simpleSpaceAttributes) - a.Required("type", "id", "attributes") -}) - -var simpleSpaceAttributes = a.Type("SimpleSpaceAttributes", func() { - a.Description(`a space consisting of multiple applications`) - a.Attribute("name", d.String) - a.Attribute("applications", a.ArrayOf(simpleApp)) - a.Required("name", "applications") -}) - -// SimpleApp describe an application within a space -var simpleApp = a.Type("SimpleApp", func() { - a.Description(`a description of an application`) - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("application") - }) - a.Attribute("id", d.String, "ID of the application (same as 'name')") - a.Attribute("attributes", simpleAppAttributes) - a.Required("type", "id", "attributes") -}) - -var simpleAppAttributes = a.Type("SimpleAppAttributes", func() { - a.Description(`a description of an application`) - a.Attribute("name", d.String) - a.Attribute("deployments", a.ArrayOf(simpleDeployment)) - a.Required("name", "deployments") -}) - -// simpleDeployment describe an element of an application pipeline -var simpleDeployment = a.Type("SimpleDeployment", func() { - a.Description(`a deployment (a step in a pipeline, e.g. 'build')`) - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("deployment") - }) - a.Attribute("id", d.String, "ID of the deployment (same as 'name')") - a.Attribute("attributes", simpleDeploymentAttributes) - a.Attribute("links", genericLinksForDeployment) - a.Required("type", "id", "attributes") -}) - -var genericLinksForDeployment = a.Type("GenericLinksForDeployment", func() { - a.Attribute("console", d.String) - a.Attribute("logs", d.String) - a.Attribute("application", d.String) - // in the future perhaps: a.Attribute("self", d.String) -}) - -var simpleDeploymentAttributes = a.Type("SimpleDeploymentAttributes", func() { - a.Description(`a deployment (a step in a pipeline, e.g. 'build')`) - a.Attribute("id", d.UUID) - a.Attribute("name", d.String) - a.Attribute("version", d.String) - a.Attribute("pods", a.ArrayOf(a.ArrayOf(d.String))) - a.Attribute("pod_total", d.Integer) - a.Attribute("pods_quota", podsQuota) - a.Required("name") - a.Required("pods") -}) - -var podsQuota = a.Type("PodsQuota", func() { - a.Description(`resource quotas for pods of a deployment`) - a.Attribute("cpucores", d.Number) - a.Attribute("memory", d.Number) -}) - -var simpleEnvironment = a.Type("SimpleEnvironment", func() { - a.Description(`a shared environment`) - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("environment") - }) - a.Attribute("id", d.String, "ID of the environment (same as 'name')") - a.Attribute("attributes", simpleEnvironmentAttributes) - a.Required("type", "id", "attributes") -}) - -var simpleEnvironmentAttributes = a.Type("SimpleEnvironmentAttributes", func() { - a.Description(`a shared environment`) - a.Attribute("name", d.String) - a.Attribute("quota", envStats) -}) - -var envStats = a.Type("EnvStats", func() { - a.Description("resource usage and quotas for an environment") - a.Attribute("cpucores", envStatQuota) - a.Attribute("memory", envStatQuota) - a.Attribute("pods", envStatQuota) - a.Attribute("replication_controllers", envStatQuota) - a.Attribute("resource_quotas", envStatQuota) - a.Attribute("services", envStatQuota) - a.Attribute("secrets", envStatQuota) - a.Attribute("config_maps", envStatQuota) - a.Attribute("persistent_volume_claims", envStatQuota) - a.Attribute("image_streams", envStatQuota) -}) - -var envStatQuota = a.Type("EnvStatQuota", func() { - a.Description(`environment object counts`) - a.Attribute("used", d.Number) - a.Attribute("quota", d.Number) -}) - -var timedNumberTuple = a.Type("TimedNumberTuple", func() { - a.Description("a set of time and number values") - a.Attribute("time", d.Number) - a.Attribute("value", d.Number) -}) - -var simpleDeploymentStats = a.Type("SimpleDeploymentStats", func() { - a.Description("current deployment stats") - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("deploymentstats") - }) - a.Attribute("id", d.String, "ID of the deployment (same as 'name')") - a.Attribute("attributes", simpleDeploymentStatsAttributes) - a.Required("type", "id", "attributes") -}) - -var simpleDeploymentStatsAttributes = a.Type("SimpleDeploymentStatsAttributes", func() { - a.Description("current deployment stats") - a.Attribute("cores", timedNumberTuple) - a.Attribute("memory", timedNumberTuple) - a.Attribute("net_tx", timedNumberTuple) - a.Attribute("net_rx", timedNumberTuple) -}) - -var simpleDeploymentStatSeries = a.Type("SimpleDeploymentStatSeries", func() { - a.Description("pod stat series") - a.Attribute("start", d.Number) - a.Attribute("end", d.Number) - a.Attribute("memory", a.ArrayOf(timedNumberTuple)) - a.Attribute("cores", a.ArrayOf(timedNumberTuple)) - a.Attribute("net_tx", a.ArrayOf(timedNumberTuple)) - a.Attribute("net_rx", a.ArrayOf(timedNumberTuple)) -}) - -var simpleDeploymentPodLimitRange = a.Type("SimpleDeploymentPodLimitRange", func() { - a.Description("pod limit range") - a.Attribute("limits", podsQuota) -}) - -var spaceAndOtherEnvironmentUsage = a.Type("SpaceAndOtherEnvironmentUsage", func() { - a.Description("Environment usage by specific space and all others") - a.Attribute("type", d.String, "The type of the related resource", func() { - a.Enum("environment") - }) - a.Attribute("id", d.String, "ID of the environment (same as 'name')") - a.Attribute("attributes", spaceAndOtherEnvironmentAttributes) - a.Required("type", "id", "attributes") -}) - -var spaceAndOtherEnvironmentAttributes = a.Type("SpaceAndOtherEnvironmentUsageAttributes", func() { - a.Description("Attributes for environment usage info for a single space") - a.Attribute("name", d.String) - a.Attribute("space_usage", spaceEnvironmentUsageQuota) - a.Attribute("other_usage", envStats) -}) - -var spaceEnvironmentUsageQuota = a.Type("SpaceEnvironmentUsageQuota", func() { - a.Description("Quota info for space-aware environment usage") - a.Attribute("cpucores", d.Number) - a.Attribute("memory", d.Number) -}) - -var spaceAndOtherEnvironmentUsageMultiple = JSONList( - "spaceAndOtherEnvironmentUsage", - "Holds a response to environment usage for a space compared to other spaces", - spaceAndOtherEnvironmentUsage, - nil, - nil) - -var simpleSpaceSingle = JSONSingle( - "SimpleSpace", "Holds a single response to a space request", - simpleSpace, - nil) - -var simpleEnvironmentMultiple = JSONList( - "SimpleEnvironment", "Holds a response to a environment request", - simpleEnvironment, - nil, - nil) - -var simpleDeploymentStatsSingle = JSONSingle( - "SimpleDeploymentStats", "Holds a single response to a space/application/deployment/stats request", - simpleDeploymentStats, - nil) - -var simpleDeploymentStatSeriesSingle = JSONSingle( - "SimpleDeploymentStatSeries", "Holds a response to a stat series query", - simpleDeploymentStatSeries, - nil) - -var simpleDeploymentPodLimitRangeSingle = JSONSingle( - "simpleDeploymentPodLimitRange", "Holds a response to a pod limit range query", - simpleDeploymentPodLimitRange, - nil) - -var _ = a.Resource("deployments", func() { - a.BasePath("/deployments") - - // An auth token is required to call the auth API to get an OpenShift auth token. - a.Security("jwt") - - a.Action("showSpace", func() { - a.Routing( - a.GET("/spaces/:spaceID"), - ) - a.Description("list applications in a space") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - }) - a.Response(d.OK, simpleSpaceSingle) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("showDeploymentStats", func() { - a.Routing( - a.GET("/spaces/:spaceID/applications/:appName/deployments/:deployName/stats"), - ) - a.Description("get deployment statistics") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - a.Param("deployName", d.String, "Name of the deployment") - a.Param("start", d.Number, "start time in millis") - }) - a.Response(d.OK, simpleDeploymentStatsSingle) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("showDeploymentStatSeries", func() { - a.Routing( - a.GET("/spaces/:spaceID/applications/:appName/deployments/:deployName/statseries"), - ) - a.Description("list deployment statistics") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - a.Param("deployName", d.String, "Name of the deployment") - a.Param("start", d.Number, "start time in millis") - a.Param("end", d.Number, "end time in millis") - a.Param("limit", d.Integer, "maximum number of data points to return") - }) - a.Response(d.OK, simpleDeploymentStatSeriesSingle) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("showDeploymentPodLimitRange", func() { - a.Routing( - a.GET("/spaces/:spaceID/applications/:appName/deployments/:deployName/podlimits"), - ) - a.Description("get pod resource limit range") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - a.Param("deployName", d.String, "Name of the deployment") - }) - a.Response(d.OK, simpleDeploymentPodLimitRangeSingle) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("setDeployment", func() { - a.Routing( - a.PUT("/spaces/:spaceID/applications/:appName/deployments/:deployName"), - ) - a.Description("set deployment pod count") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - a.Param("deployName", d.String, "Name of the deployment") - a.Param("podCount", d.Integer, "desired running pod count") - }) - a.Response(d.OK) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("deleteDeployment", func() { - a.Routing( - a.DELETE("/spaces/:spaceID/applications/:appName/deployments/:deployName"), - ) - a.Description("Delete a deployment of an application") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - a.Param("appName", d.String, "Name of the application") - a.Param("deployName", d.String, "Name of the deployment") - }) - a.Response(d.OK) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - // FIXME Keep original API around until frontend is completely moved over to - // showEnvironmentsBySpace, since this is a breaking change. - a.Action("showSpaceEnvironments", func() { - a.Routing( - a.GET("/spaces/:spaceID/environments"), - ) - a.Description("DEPRECATED: please use /environments/spaces/:spaceID instead") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - }) - a.Response(d.OK, simpleEnvironmentMultiple) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("showEnvironmentsBySpace", func() { - a.Routing( - a.GET("/environments/spaces/:spaceID"), - ) - a.Description("list all environments for a space and information for all others") - a.Params(func() { - a.Param("spaceID", d.UUID, "ID of the space") - }) - a.Response(d.OK, spaceAndOtherEnvironmentUsageMultiple) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("showAllEnvironments", func() { - a.Routing( - a.GET("/environments"), - ) - a.Description("list all environments") - a.Response(d.OK, simpleEnvironmentMultiple) - a.Response(d.Unauthorized, JSONAPIErrors) - a.Response(d.InternalServerError, JSONAPIErrors) - a.Response(d.NotFound, JSONAPIErrors) - a.Response(d.BadRequest, JSONAPIErrors) - }) - - a.Action("watchEnvironmentEvents", func() { - a.Security("jwt-query-param") - a.Routing( - a.GET("/environments/:envName/events/watch"), - ) - a.Params(func() { - a.Param("envName", d.String, "Name of the environment") - }) - a.Description("watch events for an environment") - a.Scheme("wss") - a.Response(d.SwitchingProtocols) - a.Response(d.Unauthorized, JSONAPIErrors) - }) -}) diff --git a/design/spaces.go b/design/spaces.go index a4dc62d280..ba7635e7e3 100644 --- a/design/spaces.go +++ b/design/spaces.go @@ -175,8 +175,6 @@ var _ = a.Resource("space", func() { a.Description("Delete a space with the given ID.") a.Params(func() { a.Param("spaceID", d.UUID, "ID of the space to delete") - a.Param("skipCluster", d.Boolean, - "If true, skip deleting OpenShift objects belonging to the space") }) a.Response(d.OK) a.Response(d.BadRequest, JSONAPIErrors) diff --git a/kubernetes/deployments_access.go b/kubernetes/deployments_access.go deleted file mode 100644 index 96f695e473..0000000000 --- a/kubernetes/deployments_access.go +++ /dev/null @@ -1,388 +0,0 @@ -package kubernetes - -import ( - "fmt" - "net/http" - - "github.com/fabric8-services/fabric8-wit/log" - errs "github.com/pkg/errors" -) - -const ( - verbCreate = "create" - verbDelete = "delete" - verbDeleteCollection = "deletecollection" - verbGet = "get" - verbList = "list" - verbPatch = "patch" - verbUpdate = "update" - verbWatch = "watch" -) - -// KubeAccessControl contains methods that answer whether the current user -// has sufficient authorization to call various methods of KubeClientInterface -type KubeAccessControl interface { - CanGetSpace() (bool, error) - CanGetApplication() (bool, error) - CanGetDeployment(envName string) (bool, error) - CanScaleDeployment(envName string) (bool, error) - CanGetDeploymentStats(envName string) (bool, error) - CanGetDeploymentStatSeries(envName string) (bool, error) - CanDeleteDeployment(envName string) (bool, error) - CanGetEnvironments() (bool, error) - CanGetEnvironment(envName string) (bool, error) -} - -// Actions on a resource type that are required by one of our API methods -type requestedAccess struct { - resource *qualifiedResource - verbs []string -} - -// Maps resource types to authorized actions that may be performed by the user -type accessRules map[qualifiedResource]simpleAccessRule - -// Names a resource type by group name and resource type -type qualifiedResource struct { - apiGroup string - resourceType string -} - -// Only handle rules that aren't qualified by resource name or URL -type simpleAccessRule map[string]struct{} - -// Wildcard which can imply all API groups or all resources -const rulesReviewWildcard = "*" - -// Qualified resource for all API groups and all resources -var allResAllGroup = &qualifiedResource{rulesReviewWildcard, rulesReviewWildcard} - -// Checks the subject rules review for the desired actions on resources -func (rulesMap accessRules) isAuthorized(reqs []*requestedAccess) bool { - for _, req := range reqs { - // Check rules for resource type and also check wildcard variations - // see: https://github.com/openshift/origin-web-common/blob/v3.10.0/src/services/authorizationService.js#L156 - res := req.resource - allRes := &qualifiedResource{res.apiGroup, rulesReviewWildcard} - allGroup := &qualifiedResource{rulesReviewWildcard, res.resourceType} - - // Check if all requested actions are permitted - for _, verb := range req.verbs { - if !containsVerb(rulesMap, res, verb) && - !containsVerb(rulesMap, allResAllGroup, verb) && - !containsVerb(rulesMap, allRes, verb) && - !containsVerb(rulesMap, allGroup, verb) { - return false - } - } - } - return true -} - -func containsVerb(rulesMap accessRules, res *qualifiedResource, verb string) bool { - // Look up rules for resource type - rule := rulesMap[*res] - _, pres := rule[verb] - return pres -} - -// CanGetSpace returns whether the user is authorized to call KubeClientInterface.GetSpace -func (kc *kubeClient) CanGetSpace() (bool, error) { - // Also need access to build configs and builds in user namespace - ok, err := kc.checkAuthorizedInEnv(getBuildConfigsAndBuildsRules, environmentTypeUser) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - - for envName := range kc.envMap { - if kc.CanDeploy(envName) { - ok, err := kc.checkAuthorizedInEnv(getDeploymentRules, envName) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - } - } - return true, nil -} - -// CanGetApplication returns whether the user is authorized to call KubeClientInterface.GetApplication -func (kc *kubeClient) CanGetApplication() (bool, error) { - // Also need access to builds in user namespace - ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - - for envName := range kc.envMap { - if kc.CanDeploy(envName) { - ok, err := kc.checkAuthorizedInEnv(getDeploymentRules, envName) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - } - } - return true, nil -} - -var getDeploymentRules = []*requestedAccess{ - {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {&qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {&qualifiedResource{"", "pods"}, []string{verbList}}, - {&qualifiedResource{"", "services"}, []string{verbList}}, - {&qualifiedResource{"", "routes"}, []string{verbList}}, -} - -// CanGetDeployment returns whether the user is authorized to call KubeClientInterface.GetDeployment -func (kc *kubeClient) CanGetDeployment(envName string) (bool, error) { - return kc.checkAuthorizedWithBuilds(envName, getDeploymentRules) -} - -var scaleDeploymentRules = []*requestedAccess{ - {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {&qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbGet}}, - {&qualifiedResource{"", "deploymentconfigs/scale"}, []string{verbUpdate}}, -} - -// CanScaleDeployment returns whether the user is authorized to call KubeClientInterface.ScaleDeployment -func (kc *kubeClient) CanScaleDeployment(envName string) (bool, error) { - return kc.checkAuthorizedWithBuilds(envName, scaleDeploymentRules) -} - -var deleteDeploymentRules = []*requestedAccess{ - {&qualifiedResource{"", "services"}, []string{verbList, verbDelete}}, - {&qualifiedResource{"", "routes"}, []string{verbList, verbDelete}}, - {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet, verbDelete}}, -} - -// CanDeleteDeployment returns whether the user is authorized to call KubeClientInterface.DeleteDeployment -func (kc *kubeClient) CanDeleteDeployment(envName string) (bool, error) { - return kc.checkAuthorizedWithBuilds(envName, deleteDeploymentRules) -} - -var getDeploymentStatsRules = []*requestedAccess{ - {&qualifiedResource{"", "deploymentconfigs"}, []string{verbGet}}, - {&qualifiedResource{"", "replicationcontrollers"}, []string{verbList}}, - {&qualifiedResource{"", "pods"}, []string{verbList}}, -} - -// CanGetDeploymentStats returns whether the user is authorized to call KubeClientInterface.GetDeploymentStats -func (kc *kubeClient) CanGetDeploymentStats(envName string) (bool, error) { - return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) -} - -// CanGetDeploymentStatSeries returns whether the user is authorized to call KubeClientInterface.GetDeploymentStatSeries -func (kc *kubeClient) CanGetDeploymentStatSeries(envName string) (bool, error) { - return kc.checkAuthorizedWithBuilds(envName, getDeploymentStatsRules) -} - -func (kc *kubeClient) checkAuthorizedWithBuilds(envName string, reqs []*requestedAccess) (bool, error) { - // Builds are located in user namespace - ok, err := kc.checkAuthorizedInEnv(getBuildsRules, environmentTypeUser) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - - return kc.checkAuthorizedInEnv(reqs, envName) -} - -const environmentTypeUser = "user" - -var getBuildConfigsAndBuildsRules = []*requestedAccess{ - {&qualifiedResource{"", "buildconfigs"}, []string{verbList}}, - {&qualifiedResource{"", "builds"}, []string{verbList}}, -} - -var getBuildsRules = []*requestedAccess{ - {&qualifiedResource{"", "builds"}, []string{verbList}}, -} - -func (kc *kubeClient) checkAuthorizedInEnv(reqs []*requestedAccess, envName string) (bool, error) { - rules, err := kc.getRulesForEnvironment(envName) - if err != nil { - return false, err - } - - return rules.isAuthorized(reqs), nil -} - -var getEnvironmentRules = []*requestedAccess{ - {&qualifiedResource{"", "resourcequotas"}, []string{verbList}}, -} - -// CanGetEnvironments returns whether the user is authorized to call KubeClientInterface.GetEnvironments -func (kc *kubeClient) CanGetEnvironments() (bool, error) { - for envName := range kc.envMap { - if kc.CanDeploy(envName) { - ok, err := kc.CanGetEnvironment(envName) - if err != nil { - return false, err - } else if !ok { - return false, nil - } - } - } - return true, nil -} - -// CanGetEnvironment returns whether the user is authorized to call KubeClientInterface.GetEnvironment -func (kc *kubeClient) CanGetEnvironment(envName string) (bool, error) { - return kc.checkAuthorizedInEnv(getEnvironmentRules, envName) -} - -// Gets the authorization rules for the current user in a given environment -func (kc *kubeClient) getRulesForEnvironment(envName string) (*accessRules, error) { - // Check if we have a cached copy - rules, pres := kc.rulesMap[envName] - if pres { - return rules, nil - } - - // Lookup authorization rules for this environment - envNS, err := kc.getEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - rules, err = kc.lookupAllRules(envNS) - if err != nil { - return nil, err - } - - // Cache rules, so subsequent calls by this kubeClient don't - // trigger lookup over network - kc.rulesMap[envName] = rules - return rules, nil -} - -func (kc *kubeClient) lookupAllRules(namespace string) (*accessRules, error) { - review := map[string]interface{}{ - "apiVersion": "v1", - "kind": "SelfSubjectRulesReview", - } - reviewResult, err := kc.CreateSelfSubjectRulesReview(namespace, review) - if err != nil { - return nil, err - } - - // Parse rules and store by resource type - status, ok := reviewResult["status"].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "response": reviewResult, - }, "status missing from SelfSubjectRulesReview") - return nil, errs.Errorf("status missing from SelfSubjectRulesReview returned from %s", namespace) - } - rules, ok := status["rules"].([]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "status": status, - }, "rules missing from SelfSubjectRulesReview") - return nil, errs.Errorf("rules missing from SelfSubjectRulesReview returned from %s", namespace) - } - - result := make(accessRules) - for _, rawRule := range rules { - rule, ok := rawRule.(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "rule_json": rawRule, - }, "rule in SelfSubjectRulesReview is not a JSON object") - return nil, errs.Errorf("rule returned from %s is not a JSON object", namespace) - } - - processRule(result, rule) - } - return &result, nil -} - -func processRule(rules accessRules, rule map[string]interface{}) { - // For now, only consider rules that don't specify particular resource names or URLs - resourceNames, ok := rule["resourceNames"].([]interface{}) - if ok && len(resourceNames) > 0 { - return - } - nonResourceURLs, ok := rule["nonResourceURLs"].([]interface{}) - if ok && len(nonResourceURLs) > 0 { - return - } - - verbs := getStringSetFromJSON(rule, "verbs") - groups := getStringSliceFromJSON(rule, "apiGroups") - resources := getStringSliceFromJSON(rule, "resources") - - // Add verbs for each group/resource in rule - for _, resource := range resources { - /* - * APIGroups is the name of the APIGroup that contains the resources. If this field is empty, - * then both kubernetes and origin API groups are assumed. That means that if an action is - * requested against one of the enumerated resources in either the kubernetes or the origin API group, - * the request will be allowed. - * From: https://docs.openshift.org/3.10/rest_api/oapi/v1.SelfSubjectRulesReview.html - */ - if len(groups) == 0 { - key := qualifiedResource{"", resource} - rules[key] = verbs - } else { - for _, group := range groups { - key := qualifiedResource{group, resource} - rules[key] = verbs - } - } - } -} - -func getStringSliceFromJSON(jsonObj map[string]interface{}, name string) []string { - var items []string - jsonArray, ok := jsonObj[name].([]interface{}) - if ok { - items = make([]string, 0, len(jsonArray)) - for _, jsonItem := range jsonArray { - item, ok := jsonItem.(string) - if !ok { - log.Error(nil, map[string]interface{}{ - "item": jsonItem, - "json_object": jsonObj, - }, "item in %s array is not a string", name) - } - items = append(items, item) - } - } - return items -} - -func getStringSetFromJSON(jsonObj map[string]interface{}, name string) map[string]struct{} { - var items map[string]struct{} - jsonArray, ok := jsonObj[name].([]interface{}) - if ok { - items = make(map[string]struct{}, len(jsonArray)) - for _, jsonItem := range jsonArray { - item, ok := jsonItem.(string) - if !ok { - log.Error(nil, map[string]interface{}{ - "item": jsonItem, - "json_object": jsonObj, - }, "item in %s array is not a string", name) - } - items[item] = struct{}{} - } - } - return items -} - -func (oc *openShiftAPIClient) CreateSelfSubjectRulesReview(namespace string, - review map[string]interface{}) (map[string]interface{}, error) { - reviewPath := fmt.Sprintf("/oapi/v1/namespaces/%s/selfsubjectrulesreviews", namespace) - return oc.sendResource(reviewPath, http.MethodPost, review) -} diff --git a/kubernetes/deployments_access_blackbox_test.go b/kubernetes/deployments_access_blackbox_test.go deleted file mode 100644 index 46b6b720b8..0000000000 --- a/kubernetes/deployments_access_blackbox_test.go +++ /dev/null @@ -1,458 +0,0 @@ -package kubernetes_test - -import ( - "testing" - - "github.com/dnaeon/go-vcr/recorder" - "github.com/stretchr/testify/require" -) - -func TestCanGetSpace(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetSpace() - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanGetApplication(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetApplication() - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanGetDeployment(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - envName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - envName: "run", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "All Resource", - envName: "run", - cassetteName: "can-i-all-resource", - expectedResult: true, - }, - { - testName: "All Groups", - envName: "run", - cassetteName: "can-i-all-groups", - expectedResult: true, - }, - { - testName: "All Groups & Resources", - envName: "run", - cassetteName: "can-i-all-groups-resource", - expectedResult: true, - }, - { - testName: "No Builds", - envName: "run", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - envName: "run", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - envName: "run", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetDeployment(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanScaleDeployment(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - envName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - envName: "run", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - envName: "run", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - envName: "run", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - envName: "run", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanScaleDeployment(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanDeleteDeployment(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - envName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - envName: "run", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - envName: "run", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - envName: "run", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - envName: "run", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanDeleteDeployment(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanGetEnvironments(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Resource Quotas", - cassetteName: "can-i-no-quotas", - expectedResult: false, - }, - { - testName: "Missing Status", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - { - testName: "Missing Rules", - cassetteName: "can-i-no-rules", - shouldFail: true, - }, - { - testName: "Bad Rule", - cassetteName: "can-i-bad-rule", - shouldFail: true, - }, - { - testName: "Bad Verbs", - cassetteName: "can-i-bad-verbs", - expectedResult: true, // Skips bad verbs - }, - { - testName: "Bad Resource", - cassetteName: "can-i-bad-resource", - expectedResult: true, // Skips bad resources - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetEnvironments() - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanGetDeploymentStats(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - envName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - envName: "run", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - envName: "run", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - envName: "run", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - envName: "run", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetDeploymentStats(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} - -func TestCanGetDeploymentStatSeries(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - envName string - expectedResult bool - shouldFail bool - }{ - { - testName: "Basic", - envName: "run", - cassetteName: "can-i", - expectedResult: true, - }, - { - testName: "No Builds", - envName: "run", - cassetteName: "can-i-no-builds", - expectedResult: false, - }, - { - testName: "No Deployment Config", - envName: "run", - cassetteName: "can-i-no-dc", - expectedResult: false, - }, - { - testName: "Missing Status", - envName: "run", - cassetteName: "can-i-no-status", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - result, err := kc.CanGetDeploymentStatSeries(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - require.Equal(t, testCase.expectedResult, result, "Expected different authorization result") - } - }) - } -} diff --git a/kubernetes/deployments_kubeclient.go b/kubernetes/deployments_kubeclient.go deleted file mode 100644 index 4bff8638c4..0000000000 --- a/kubernetes/deployments_kubeclient.go +++ /dev/null @@ -1,2439 +0,0 @@ -package kubernetes - -import ( - "bytes" - "encoding/json" - "fmt" - "math" - "net/http" - "net/url" - "strconv" - "strings" - "time" - - yaml "gopkg.in/yaml.v2" - kubeErrors "k8s.io/apimachinery/pkg/api/errors" - resource "k8s.io/apimachinery/pkg/api/resource" - metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - types "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/watch" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - v1 "k8s.io/client-go/pkg/api/v1" - rest "k8s.io/client-go/rest" - "k8s.io/client-go/tools/cache" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/errors" - "github.com/fabric8-services/fabric8-wit/log" - errs "github.com/pkg/errors" -) - -// KubeClientConfig holds configuration data needed to create a new KubeClientInterface -// with kubernetes.NewKubeClient -type KubeClientConfig struct { - // Provides URLS for all APIs, and also access tokens - BaseURLProvider - // Kubernetes namespace in the cluster of type 'user' - UserNamespace string - // Timeout used for communicating with Kubernetes and OpenShift API servers, - // a value of zero indicates no timeout - Timeout time.Duration - // Specifies a non-default HTTP transport to use when sending requests to - // Kubernetes and OpenShift API servers - Transport http.RoundTripper - // Provides access to the Kubernetes REST API, uses default implementation if not set - KubeRESTAPIGetter - // Provides access to the metrics API, uses default implementation if not set - MetricsGetter - // Provides access to the OpenShift REST API, uses default implementation if not set - OpenShiftRESTAPIGetter -} - -// KubeRESTAPIGetter has a method to access the KubeRESTAPI interface -type KubeRESTAPIGetter interface { - GetKubeRESTAPI(config *KubeClientConfig) (KubeRESTAPI, error) -} - -// OpenShiftRESTAPIGetter has a method to access the OpenShiftRESTAPI interface -type OpenShiftRESTAPIGetter interface { - GetOpenShiftRESTAPI(config *KubeClientConfig) (OpenShiftRESTAPI, error) -} - -// MetricsGetter has a method to access the Metrics interface -type MetricsGetter interface { - GetMetrics(config *MetricsClientConfig) (Metrics, error) -} - -// KubeClientInterface contains configuration and methods for interacting with a Kubernetes cluster -type KubeClientInterface interface { - GetSpace(spaceName string) (*app.SimpleSpace, error) - GetApplication(spaceName string, appName string) (*app.SimpleApp, error) - GetDeployment(spaceName string, appName string, envName string) (*app.SimpleDeployment, error) - ScaleDeployment(spaceName string, appName string, envName string, deployNumber int) (*int, error) - GetDeploymentStats(spaceName string, appName string, envName string, - startTime time.Time) (*app.SimpleDeploymentStats, error) - GetDeploymentStatSeries(spaceName string, appName string, envName string, startTime time.Time, - endTime time.Time, limit int) (*app.SimpleDeploymentStatSeries, error) - DeleteDeployment(spaceName string, appName string, envName string) error - GetEnvironments() ([]*app.SimpleEnvironment, error) - GetEnvironment(envName string) (*app.SimpleEnvironment, error) - GetMetricsClient(envNS string) (Metrics, error) - WatchEventsInNamespace(nameSpace string) (*cache.FIFO, chan struct{}) - GetDeploymentPodQuota(spaceName string, appName string, envName string) (*app.SimpleDeploymentPodLimitRange, error) - GetSpaceAndOtherEnvironmentUsage(spaceName string) ([]*app.SpaceAndOtherEnvironmentUsage, error) - Close() - KubeAccessControl -} - -type kubeClient struct { - config *KubeClientConfig - envMap map[string]string - BaseURLProvider - KubeRESTAPI - metricsMap map[string]Metrics - rulesMap map[string]*accessRules - OpenShiftRESTAPI - MetricsGetter -} - -// KubeRESTAPI collects methods that call out to the Kubernetes API server over the network -type KubeRESTAPI interface { - corev1.CoreV1Interface -} - -type kubeAPIClient struct { - corev1.CoreV1Interface - restConfig *rest.Config -} - -// OpenShiftRESTAPI collects methods that call out to the OpenShift API server over the network -type OpenShiftRESTAPI interface { - GetBuildConfigs(namespace string, labelSelector string) (map[string]interface{}, error) - GetBuilds(namespace string, labelSelector string) (map[string]interface{}, error) - GetDeploymentConfig(namespace string, name string) (map[string]interface{}, error) - DeleteDeploymentConfig(namespace string, name string, opts *metaV1.DeleteOptions) (map[string]interface{}, error) - GetDeploymentConfigScale(namespace string, name string) (map[string]interface{}, error) - SetDeploymentConfigScale(namespace string, name string, scale map[string]interface{}) (map[string]interface{}, error) - GetRoutes(namespace string, labelSelector string) (map[string]interface{}, error) - DeleteRoute(namespace string, name string, opts *metaV1.DeleteOptions) (map[string]interface{}, error) - CreateSelfSubjectRulesReview(namespace string, review map[string]interface{}) (map[string]interface{}, error) -} - -type openShiftAPIClient struct { - config *KubeClientConfig - httpClient *http.Client -} - -type deployment struct { - dcName string - dcUID types.UID - appVersion string - current *v1.ReplicationController -} - -type route struct { - host string - path string - tls bool - // Scoring criteria below - hasAdmitted bool - hasAlternateBackends bool - isCustomHost bool -} - -// BaseURLProvider provides the BASE URL (minimal path) of several APIs used in Deployments. -// For true multicluster support, every API in this inteface should take an environment namespace name. -// This hasn't been done, because the rest of fabric8 seems to assume the cluster is the same. -// For most uses, the proxy server will hide this issue - but not for metrics/logging and console. -type BaseURLProvider interface { - GetEnvironmentMapping() map[string]string - CanDeploy(envType string) bool - GetAPIURL() (*string, error) - GetMetricsURL(envNS string) (*string, error) - GetConsoleURL(envNS string) (*string, error) - GetLoggingURL(envNS string, deploymentName string) (*string, error) - - GetAPIToken() (*string, error) - GetMetricsToken(envNS string) (*string, error) -} - -// ensure kubeClient implements KubeClientInterface -var _ KubeClientInterface = &kubeClient{} -var _ KubeClientInterface = (*kubeClient)(nil) - -// Receiver for default implementation of KubeRESTAPIGetter and MetricsGetter -type defaultGetter struct{} - -const limitRangeName = "resource-limits" - -// NewKubeClient creates a KubeClientInterface given a configuration. The returned -// KubeClientInterface must be closed using the Close method, when no longer needed. -func NewKubeClient(config *KubeClientConfig) (KubeClientInterface, error) { - // Use default implementation if no KubernetesGetter is specified - if config.KubeRESTAPIGetter == nil { - config.KubeRESTAPIGetter = &defaultGetter{} - } - // Use default implementation if no OpenShiftGetter is specified - if config.OpenShiftRESTAPIGetter == nil { - config.OpenShiftRESTAPIGetter = &defaultGetter{} - } - kubeAPI, err := config.GetKubeRESTAPI(config) - if err != nil { - return nil, err - } - osAPI, err := config.GetOpenShiftRESTAPI(config) - if err != nil { - return nil, err - } - // Use default implementation if no MetricsGetter is specified - if config.MetricsGetter == nil { - config.MetricsGetter = &defaultGetter{} - } - - envMap := config.GetEnvironmentMapping() - kubeClient := &kubeClient{ - config: config, - envMap: envMap, - BaseURLProvider: config, - KubeRESTAPI: kubeAPI, - OpenShiftRESTAPI: osAPI, - metricsMap: make(map[string]Metrics), - rulesMap: make(map[string]*accessRules), - MetricsGetter: config.MetricsGetter, - } - - return kubeClient, nil -} - -func (*defaultGetter) GetKubeRESTAPI(config *KubeClientConfig) (KubeRESTAPI, error) { - url, err := config.GetAPIURL() - if err != nil { - return nil, err - } - token, err := config.GetAPIToken() - if err != nil { - return nil, err - } - restConfig := &rest.Config{ - Host: *url, - BearerToken: *token, - Timeout: config.Timeout, - Transport: config.Transport, - } - coreV1Client, err := corev1.NewForConfig(restConfig) - if err != nil { - return nil, errs.WithStack(err) - } - client := &kubeAPIClient{ - CoreV1Interface: coreV1Client, - restConfig: restConfig, - } - return client, nil -} - -func (*defaultGetter) GetOpenShiftRESTAPI(config *KubeClientConfig) (OpenShiftRESTAPI, error) { - // Equivalent to http.DefaultClient with added timeout and transport - httpClient := &http.Client{ - Timeout: config.Timeout, - Transport: config.Transport, - } - client := &openShiftAPIClient{ - config: config, - httpClient: httpClient, - } - return client, nil -} - -func (*defaultGetter) GetMetrics(config *MetricsClientConfig) (Metrics, error) { - return NewMetricsClient(config) -} - -func (kc *kubeClient) GetMetricsClient(envNS string) (Metrics, error) { - - if kc.metricsMap[envNS] != nil { - return kc.metricsMap[envNS], nil - } - - url, err := kc.GetMetricsURL(envNS) - if err != nil { - return nil, err - } - token, err := kc.GetMetricsToken(envNS) - if err != nil { - return nil, err - } - - metricsConfig := &MetricsClientConfig{ - MetricsURL: *url, - BearerToken: *token, - } - - metrics, err := kc.GetMetrics(metricsConfig) - if err != nil { - return nil, err - } - kc.metricsMap[envNS] = metrics - return metrics, nil -} - -// Close releases any resources held by this KubeClientInterface -func (kc *kubeClient) Close() { - // Metrics client needs to be closed to stop Hawkular go-routine from spinning - for _, m := range kc.metricsMap { - m.Close() - } -} - -// GetSpace returns a space matching the provided name, containing all applications that belong to it -func (kc *kubeClient) GetSpace(spaceName string) (*app.SimpleSpace, error) { - // Get BuildConfigs within the user namespace that have a matching 'space' label - // This is similar to how pipelines are displayed in fabric8-ui - // https://github.com/fabric8-ui/fabric8-ui/blob/master/src/app/space/create/pipelines/pipelines.component.ts - buildconfigs, err := kc.getBuildConfigsForSpace(spaceName) - if err != nil { - return nil, err - } - - // Get all applications in this space using BuildConfig names - apps := []*app.SimpleApp{} - for _, bc := range buildconfigs { - appn, err := kc.GetApplication(spaceName, bc) - if err != nil { - return nil, err - } - apps = append(apps, appn) - } - - result := &app.SimpleSpace{ - Type: "space", - Attributes: &app.SimpleSpaceAttributes{ - Name: spaceName, - Applications: apps, - }, - } - - return result, nil -} - -// GetApplication retrieves an application with the given space and application names, with the status -// of that application's deployment in each environment -func (kc *kubeClient) GetApplication(spaceName string, appName string) (*app.SimpleApp, error) { - // Get all deployments of this app for each environment in this space - deployments := []*app.SimpleDeployment{} - for envName := range kc.envMap { - // Only look for the application in environments where the user can deploy applications - if kc.CanDeploy(envName) { - deployment, err := kc.GetDeployment(spaceName, appName, envName) - if err != nil { - return nil, err - } else if deployment != nil { - deployments = append(deployments, deployment) - } - } - } - - result := &app.SimpleApp{ - Type: "application", - Attributes: &app.SimpleAppAttributes{ - Name: appName, - Deployments: deployments, - }, - ID: appName, - } - return result, nil -} - -// ScaleDeployment adjusts the desired number of replicas for a specified application, returning the -// previous number of desired replicas -func (kc *kubeClient) ScaleDeployment(spaceName string, appName string, envName string, deployNumber int) (*int, error) { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - - // Deployment Config name does not always match the application name, look up - // DC name using available metadata - dcName, err := kc.getDeploymentConfigNameForApp(envNS, appName, spaceName) - if err != nil { - return nil, err - } - - // Look up the Scale for the DeploymentConfig corresponding to the application name in the provided environment - scale, err := kc.GetDeploymentConfigScale(envNS, dcName) - if err != nil { - return nil, err - } - - spec, ok := scale["spec"].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "space_name": spaceName, - "application_name": appName, - "environment_name": envName, - }, "invalid deployment config returned from endpoint") - return nil, errs.New("invalid deployment config returned from endpoint: missing 'spec'") - } - - replicas, pres := spec["replicas"] - oldReplicas := 0 // replicas property may be missing from spec if set to 0 - if pres { - oldReplicasFlt, ok := replicas.(float64) - if !ok { - return nil, errs.New("invalid deployment config returned from endpoint: 'replicas' is not a number") - } - oldReplicas = int(oldReplicasFlt) - } - spec["replicas"] = deployNumber - - _, err = kc.SetDeploymentConfigScale(envNS, dcName, scale) - if err != nil { - return nil, err - } - - log.Info(nil, map[string]interface{}{ - "space_name": spaceName, - "application_name": appName, - "environment_name": envName, - "old_replica_count": oldReplicas, - "new_replica_count": deployNumber, - }, "scaled deployment to %d replicas", deployNumber) - - return &oldReplicas, nil -} - -func (oc *openShiftAPIClient) GetDeploymentConfigScale(namespace string, name string) (map[string]interface{}, error) { - dcScalePath := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s/scale", namespace, name) - return oc.getResource(dcScalePath, false) -} - -func (oc *openShiftAPIClient) SetDeploymentConfigScale(namespace string, name string, - scale map[string]interface{}) (map[string]interface{}, error) { - dcScalePath := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s/scale", namespace, name) - return oc.sendResource(dcScalePath, "PUT", scale) -} - -func (kc *kubeClient) getApplicationURL(envNS string, deploy *deployment) (*string, error) { - // Get the best route to the application to show to the user - routeURL, err := kc.getBestRoute(envNS, deploy) - if err != nil { - return nil, err - } - var result *string - if routeURL != nil { - route := routeURL.String() - result = &route - } - return result, nil -} - -// GetDeployment returns information about the current deployment of an application within a -// particular environment. The application must exist within the provided space. -func (kc *kubeClient) GetDeployment(spaceName string, appName string, envName string) (*app.SimpleDeployment, error) { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - // Get the UID for the current deployment of the app - deploy, err := kc.getCurrentDeployment(spaceName, appName, envNS) - if err != nil { - return nil, err - } else if deploy == nil || deploy.current == nil { - return nil, nil - } - - // Get all pods created by this deployment - pods, err := kc.getPods(envNS, deploy.current) - if err != nil { - return nil, err - } - - // Get the quota for all pods in the deployment - podsQuota, err := kc.getPodsQuota(pods) - if err != nil { - return nil, err - } - - // Get the status of each pod in the deployment - podStats, total := kc.getPodStatus(pods) - - // Get related URLs for the deployment - appURL, err := kc.getApplicationURL(envNS, deploy) - if err != nil { - return nil, err - } - - consoleURL, err := kc.GetConsoleURL(envNS) - if err != nil { - return nil, err - } - - logURL, err := kc.GetLoggingURL(envNS, deploy.current.Name) - if err != nil { - return nil, err - } - - var links *app.GenericLinksForDeployment - if consoleURL != nil || appURL != nil || logURL != nil { - links = &app.GenericLinksForDeployment{ - Console: consoleURL, - Logs: logURL, - Application: appURL, - } - } - - verString := string(deploy.appVersion) - result := &app.SimpleDeployment{ - Type: "deployment", - Attributes: &app.SimpleDeploymentAttributes{ - Name: envName, - Version: &verString, - Pods: podStats, - PodTotal: &total, - PodsQuota: podsQuota, - }, - ID: envName, - Links: links, - } - return result, nil -} - -// GetDeploymentStats returns performance metrics of an application for a period of 1 minute -// beyond the specified start time, which are then aggregated into a single data point. -func (kc *kubeClient) GetDeploymentStats(spaceName string, appName string, envName string, - startTime time.Time) (*app.SimpleDeploymentStats, error) { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - // Get the UID for the current deployment of the app - deploy, err := kc.getCurrentDeployment(spaceName, appName, envNS) - if err != nil { - return nil, err - } else if deploy == nil || deploy.current == nil { - return nil, nil - } - - // Get pods belonging to current deployment - pods, err := kc.getPods(envNS, deploy.current) - if err != nil { - return nil, err - } - - mc, err := kc.GetMetricsClient(envNS) - if err != nil { - return nil, err - } - - // Gather the statistics we need about the current deployment - cpuUsage, err := mc.GetCPUMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - memoryUsage, err := mc.GetMemoryMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - netTxUsage, err := mc.GetNetworkSentMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - netRxUsage, err := mc.GetNetworkRecvMetrics(pods, envNS, startTime) - if err != nil { - return nil, err - } - - result := &app.SimpleDeploymentStats{ - Type: "deploymentstats", - Attributes: &app.SimpleDeploymentStatsAttributes{ - Cores: cpuUsage, - Memory: memoryUsage, - NetTx: netTxUsage, - NetRx: netRxUsage, - }, - } - - return result, nil -} - -// GetDeploymentStatSeries returns performance metrics of an application as a time series bounded by -// the provided time range in startTime and endTime. If there are more data points than the -// limit argument, only the newest datapoints within that limit are returned. -func (kc *kubeClient) GetDeploymentStatSeries(spaceName string, appName string, envName string, - startTime time.Time, endTime time.Time, limit int) (*app.SimpleDeploymentStatSeries, error) { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - - // Get the UID for the current deployment of the app - deploy, err := kc.getCurrentDeployment(spaceName, appName, envNS) - if err != nil { - return nil, err - } else if deploy == nil || deploy.current == nil { - return nil, nil - } - - // Get pods belonging to current deployment - pods, err := kc.getPods(envNS, deploy.current) - if err != nil { - return nil, err - } - - mc, err := kc.GetMetricsClient(envNS) - if err != nil { - return nil, err - } - - // Get CPU, memory and network metrics for pods in deployment - cpuMetrics, err := mc.GetCPUMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - memoryMetrics, err := mc.GetMemoryMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - netTxMetrics, err := mc.GetNetworkSentMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - netRxMetrics, err := mc.GetNetworkRecvMetricsRange(pods, envNS, startTime, endTime, limit) - if err != nil { - return nil, err - } - - // Get the earliest and latest timestamps - minTime, maxTime := getTimestampEndpoints(cpuMetrics, memoryMetrics) - result := &app.SimpleDeploymentStatSeries{ - Cores: cpuMetrics, - Memory: memoryMetrics, - NetTx: netTxMetrics, - NetRx: netRxMetrics, - Start: minTime, - End: maxTime, - } - - return result, nil -} - -func (kc *kubeClient) DeleteDeployment(spaceName string, appName string, envName string) error { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return err - } - - // Deployment Config name does not always match the application name, look up - // DC name using available metadata - dcName, err := kc.getDeploymentConfigNameForApp(envNS, appName, spaceName) - if err != nil { - return err - } - - // Delete routes - err = kc.deleteRoutes(dcName, envNS) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "dcName": dcName, - "spaceName": spaceName, - "applicationName": appName, - "envName": envName, - }, "could not delete routes in deploymentConfig "+dcName) - } - - // Delete services - err = kc.deleteServices(dcName, envNS) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "dcName": dcName, - "spaceName": spaceName, - "applicationName": appName, - "envName": envName, - }, "could not delete services in deploymentConfig "+dcName) - } - - // Delete DC (will also delete RCs and pods) - err = kc.deleteDeploymentConfig(spaceName, dcName, envNS) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "dcName": dcName, - "spaceName": spaceName, - "applicationName": appName, - "envName": envName, - }, "could not delete deploymentConfig "+dcName) - return err - } - return nil -} - -// GetEnvironments retrieves information on all environments in the cluster -// for the current user -func (kc *kubeClient) GetEnvironments() ([]*app.SimpleEnvironment, error) { - envs := []*app.SimpleEnvironment{} - for envName := range kc.envMap { - // Only return environments where the user can deploy applications - if kc.CanDeploy(envName) { - env, err := kc.GetEnvironment(envName) - if err != nil { - return nil, err - } - envs = append(envs, env) - } - } - return envs, nil -} - -// GetEnvironment returns information on an environment with the provided name -func (kc *kubeClient) GetEnvironment(envName string) (*app.SimpleEnvironment, error) { - envNS, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - - envStats, err := kc.getResourceQuota(envNS) - if err != nil { - return nil, err - } - - env := &app.SimpleEnvironment{ - Type: "environment", - Attributes: &app.SimpleEnvironmentAttributes{ - Name: &envName, - Quota: envStats, - }, - } - return env, nil -} - -func getTimestampEndpoints(metricsSeries ...[]*app.TimedNumberTuple) (minTime, maxTime *float64) { - // Metrics arrays are ordered by timestamp, so just check beginning and end - for _, series := range metricsSeries { - if len(series) > 0 { - first := series[0].Time - if minTime == nil || *first < *minTime { - minTime = first - } - last := series[len(series)-1].Time - if maxTime == nil || *last > *maxTime { - maxTime = last - } - } - } - return minTime, maxTime -} - -const spaceLabelName = "space" - -func (kc *kubeClient) getBuildConfigsForSpace(space string) ([]string, error) { - // BuildConfigs are OpenShift objects, so access REST API using HTTP directly until - // there is a Go client for OpenShift - - // BuildConfigs created by fabric8 have a "space" label indicating the space they belong to - escapedSelector := url.QueryEscape(spaceLabelName + "=" + space) - result, err := kc.GetBuildConfigs(kc.config.UserNamespace, escapedSelector) - if err != nil { - return nil, err - } - // Parse build configs from result - kind, ok := result["kind"].(string) - if !ok || kind != "BuildConfigList" { - return nil, errs.New("no build configs returned from endpoint") - } - items, ok := result["items"].([]interface{}) - if !ok { - return nil, errs.New("malformed response from endpoint") - } - - // Extract the names of the BuildConfigs from the response - buildconfigs := []string{} - for _, item := range items { - bc, ok := item.(map[string]interface{}) - if !ok { - return nil, errs.New("malformed build config") - } - metadata, ok := bc["metadata"].(map[string]interface{}) - if !ok { - return nil, errs.New("'metadata' object missing from build config") - } - name, ok := metadata["name"].(string) - if !ok || len(name) == 0 { - return nil, errs.New("malformed metadata in build config; 'name' is missing or invalid") - } - buildconfigs = append(buildconfigs, name) - } - return buildconfigs, nil -} - -func (oc *openShiftAPIClient) GetBuildConfigs(namespace string, labelSelector string) (map[string]interface{}, error) { - bcURL := fmt.Sprintf("/oapi/v1/namespaces/%s/buildconfigs?labelSelector=%s", namespace, labelSelector) - return oc.getResource(bcURL, false) -} - -// getDeployableEnvironmentNamespace finds a namespace with the corresponding environment name. -// Differs from getEnvironmentNamespace in that the environment must be one where the user can deploy -// applications -func (kc *kubeClient) getDeployableEnvironmentNamespace(envName string) (string, error) { - envNS, pres := kc.envMap[envName] - if !pres || !kc.CanDeploy(envName) { - return "", errs.Errorf("unknown environment: %s", envName) - } - return envNS, nil -} - -// getEnvironmentNamespace finds a namespace with the corresponding environment name -func (kc *kubeClient) getEnvironmentNamespace(envName string) (string, error) { - envNS, pres := kc.envMap[envName] - if !pres { - return "", errs.Errorf("unknown environment: %s", envName) - } - return envNS, nil -} - -// Derived from: https://github.com/fabric8-services/fabric8-tenant/blob/master/openshift/kube_token.go -func (oc *openShiftAPIClient) sendResource(path string, method string, reqBody interface{}) (map[string]interface{}, error) { - url, err := oc.config.GetAPIURL() - if err != nil { - return nil, err - } - fullURL := strings.TrimSuffix(*url, "/") + path - - marshalled, err := json.Marshal(reqBody) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "request_body": reqBody, - }, "could not marshal %s request", method) - return nil, errs.WithStack(err) - } - - req, err := http.NewRequest(method, fullURL, bytes.NewBuffer(marshalled)) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "request_body": reqBody, - }, "could not create %s request", method) - return nil, errs.WithStack(err) - } - - token, err := oc.config.GetAPIToken() - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") - req.Header.Set("Accept", "application/json") - req.Header.Set("Authorization", "Bearer "+*token) - - resp, err := oc.httpClient.Do(req) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "request_body": reqBody, - }, "could not perform %s request", method) - return nil, errs.WithStack(err) - } - defer resp.Body.Close() - - buf := new(bytes.Buffer) - _, err = buf.ReadFrom(resp.Body) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "request_body": reqBody, - }, "could not read response from %s request", method) - return nil, errs.WithStack(err) - } - respBody := buf.Bytes() - - status := resp.StatusCode - if status < http.StatusOK || status > http.StatusPartialContent { - log.Error(nil, map[string]interface{}{ - "url": fullURL, - "request_body": reqBody, - "response_body": buf, - "http_status": status, - }, "failed to %s request due to HTTP error", method) - - // If response contains a Kubernetes Status object, create a StatusError - err = parseErrorFromStatus(respBody) - if err != nil { - return nil, convertError(errs.WithStack(err), "failed to %s url %s due to status code %d", method, fullURL, status) - } - return nil, errs.Errorf("failed to %s url %s: status code %d", method, fullURL, status) - } - - var respJSON map[string]interface{} - err = json.Unmarshal(respBody, &respJSON) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "response_body": buf, - "http_status": status, - }, "error unmarshalling JSON response") - return nil, errs.WithStack(err) - } - return respJSON, nil -} - -func (kc *kubeClient) getAndParseDeploymentConfig(namespace string, dcName string, space string) (*deployment, error) { - result, err := kc.GetDeploymentConfig(namespace, dcName) - if err != nil { - return nil, err - } else if result == nil { - return nil, nil - } - - // Parse deployment config from result - kind, ok := result["kind"].(string) - if !ok || kind != "DeploymentConfig" { - return nil, errs.New("no deployment config returned from endpoint") - } - metadata, ok := result["metadata"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("metadata missing from deployment config %s: %+v", dcName, result) - } - // Check the space label is what we expect - labels, ok := metadata["labels"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("labels missing from deployment config %s: %+v", dcName, metadata) - } - - /* FIXME The launcher no longer configures POM files to apply a space label as part of the - * project's fabric8-maven-plugin resource goal. This results in OpenShift objects that have no - * space label. - * - * Additionally, projects created using the old launcher may have old space label - * configuration that is not updated when importing the project with the new launcher. - * This results in OpenShift objects having a space label for the wrong space. - * - * Until OpenShift objects have reliable space labels, we work around the issue by logging - * a warning and waiving the space label check. - * - * See: https://github.com/openshiftio/openshift.io/issues/2360 */ - spaceLabel, err := getOptionalStringValue(labels, spaceLabelName) - if err != nil { - return nil, err - } - if len(spaceLabel) == 0 { - log.Warn(nil, map[string]interface{}{ - "namespace": namespace, - "dc_name": dcName, - "space": space, - }, "space label missing from deployment config") - } else if spaceLabel != space { - log.Warn(nil, map[string]interface{}{ - "namespace": namespace, - "dc_name": dcName, - "space_name": space, - "space_label": spaceLabel, - }, "space label on deployment config indicates different space") - } - // Get UID from deployment config - uid, ok := metadata["uid"].(string) - if !ok || len(uid) == 0 { - return nil, errs.Errorf("malformed metadata in deployment config %s: %+v", dcName, metadata) - } - // Read application version from label - version := labels["version"].(string) - if !ok || len(version) == 0 { - return nil, errs.Errorf("version missing from deployment config %s: %+v", dcName, metadata) - } - - dc := &deployment{ - dcName: dcName, - dcUID: types.UID(uid), - appVersion: version, - } - return dc, nil -} - -func (oc *openShiftAPIClient) GetDeploymentConfig(namespace string, name string) (map[string]interface{}, error) { - dcURL := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s", namespace, name) - return oc.getResource(dcURL, true) -} - -const buildConfigLabelName = "openshift.io/build-config.name" -const envServicesAnnotationPrefix = "environment.services.fabric8.io" -const envServicesDeploymentVersions = "deploymentVersions" - -func (kc *kubeClient) getDeploymentConfigNameForApp(namespace string, appName string, spaceName string) (string, error) { - // Look up builds with config name matching appName, this will be the one created by the launcher - labelSelector := fmt.Sprintf("%s=%s,%s=%s", buildConfigLabelName, appName, spaceLabelName, spaceName) - escapedSelector := url.QueryEscape(labelSelector) - - // Builds are located in the user's namespace of type "user" - resp, err := kc.GetBuilds(kc.config.UserNamespace, escapedSelector) - if err != nil { - return "", err - } - - // Parse builds from response - kind, ok := resp["kind"].(string) - if !ok || kind != "BuildList" { - return "", errs.New("no builds returned from endpoint") - } - items, ok := resp["items"].([]interface{}) - if !ok { - return "", errs.New("malformed response from endpoint") - } - - // Fall back to application name, if we can't find a name in the annotations - result := appName - // Look for latest build that contains desired annotation - var latestCreationTime time.Time - for _, item := range items { - build, ok := item.(map[string]interface{}) - if !ok { - return "", errs.New("malformed build object") - } - metadata, ok := build["metadata"].(map[string]interface{}) - if !ok { - return "", errs.New("metadata missing from build object") - } - creationTimeStr, ok := metadata["creationTimestamp"].(string) - if ok { - creationTime, err := time.Parse(time.RFC3339, creationTimeStr) - if err != nil { - return "", errs.Wrapf(err, "build creation time uses an invalid date") - } - if creationTime.After(latestCreationTime) { - annotations, ok := metadata["annotations"].(map[string]interface{}) - if ok { - envAnnotationName := fmt.Sprintf(envServicesAnnotationPrefix+"/%s", namespace) - envServices, pres := annotations[envAnnotationName] - if pres { - envServicesStr, ok := envServices.(string) - if !ok { - log.Warn(nil, map[string]interface{}{ - "namespace": namespace, - "appName": appName, - "spaceName": spaceName, - "envServices": envServicesStr, - }, "%s annotation does not contain a string", envServicesAnnotationPrefix) - } else { - dcName, err := getNameFromEnvServices([]byte(envServicesStr)) - if err != nil { - log.Warn(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "appName": appName, - "spaceName": spaceName, - "envServices": envServicesStr, - }, "failed to determine Deployment Config name") - } else if len(dcName) > 0 { - result = dcName - latestCreationTime = creationTime - } - } - } - } - } - } - } - - return result, nil -} - -func getNameFromEnvServices(envServices []byte) (string, error) { - // Parse YAML annotation value - var envServicesYaml map[interface{}]interface{} - err := yaml.Unmarshal(envServices, &envServicesYaml) - if err != nil { - return "", errs.Wrapf(err, "failed to unmarshal %s YAML", envServicesAnnotationPrefix) - } - - // Look for deployment versions - deployVersionsYaml, pres := envServicesYaml[envServicesDeploymentVersions] - if pres { - deployVersions, ok := deployVersionsYaml.(map[interface{}]interface{}) - if ok { - // TODO If there is more than one entry in deploymentVersions, we just - // take the first one. What scenario could cause this to occur, and - // could we handle it better? - for nameYaml := range deployVersions { - depName, ok := nameYaml.(string) - if !ok { - return "", errs.Errorf("%s does not contain a string", envServicesDeploymentVersions) - } - return depName, nil - } - } - } - return "", nil -} - -func (oc *openShiftAPIClient) GetBuilds(namespace string, labelSelector string) (map[string]interface{}, error) { - bcURL := fmt.Sprintf("/oapi/v1/namespaces/%s/builds?labelSelector=%s", namespace, labelSelector) - return oc.getResource(bcURL, false) -} - -func (kc *kubeClient) deleteDeploymentConfig(spaceName string, dcName string, namespace string) error { - // Check that the deployment config exists and belongs to the expected space - dc, err := kc.getAndParseDeploymentConfig(namespace, dcName, spaceName) - if err != nil { - return err - } else if dc == nil { - return errors.NewNotFoundErrorFromString(fmt.Sprintf("deployment config %s does not exist in %s", dcName, namespace)) - } - - // Delete all dependent objects and then this DC - policy := metaV1.DeletePropagationForeground - opts := &metaV1.DeleteOptions{ - TypeMeta: metaV1.TypeMeta{ // Normally set automatically by k8s client-go - Kind: "DeleteOptions", - APIVersion: "v1", - }, - PropagationPolicy: &policy, - } - // API states this should return a Status object, but it returns the DC instead, - // just check for no HTTP error - _, err = kc.DeleteDeploymentConfig(namespace, dcName, opts) - if err != nil { - return err - } - return nil -} - -func (oc *openShiftAPIClient) DeleteDeploymentConfig(namespace string, name string, - opts *metaV1.DeleteOptions) (map[string]interface{}, error) { - dcPath := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s", namespace, name) - return oc.sendResource(dcPath, "DELETE", opts) -} - -const deploymentPhaseAnnotation string = "openshift.io/deployment.phase" -const deploymentVersionAnnotation string = "openshift.io/deployment-config.latest-version" - -func (kc *kubeClient) getCurrentDeployment(space string, appName string, namespace string) (*deployment, error) { - // Deployment Config name does not always match the application name, look up - // DC name using available metadata - dcName, err := kc.getDeploymentConfigNameForApp(namespace, appName, space) - if err != nil { - return nil, err - } - - // Look up DeploymentConfig corresponding to the application name in the provided environment - result, err := kc.getAndParseDeploymentConfig(namespace, dcName, space) - if err != nil { - return nil, err - } else if result == nil { - return nil, nil - } - // Find the current deployment for the DC we just found. This should correspond to the deployment - // shown in the OpenShift web console's overview page - rcs, err := kc.getReplicationControllers(namespace, result) - if err != nil { - return nil, err - } else if len(rcs) == 0 { - return result, nil - } - - // Find newest RC created by this DC, which is also considered visible according to the - // OpenShift web console's criteria: - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/controllers/overview.js#L679 - candidates := make(map[string]*v1.ReplicationController) - // Also consider most recent successful deployment, even if scaled down (not visible) - var active *v1.ReplicationController - for idx := range rcs { - rc := &rcs[idx] - phase := rc.Annotations[deploymentPhaseAnnotation] - if phase == "Complete" && (active == nil || - active.CreationTimestamp.Before(rc.CreationTimestamp)) { - active = rc - } - if isReplicationControllerVisible(rc) { - candidates[rc.Name] = rc - } - } - if active != nil { - candidates[active.Name] = active - } - // For final comparison use deployment version annotation instead of creation timestamp - current, err := getMostRecentByDeploymentVersion(candidates) - if err != nil { - return nil, err - } - result.current = current - return result, nil -} - -func isReplicationControllerVisible(rc *v1.ReplicationController) bool { - visible := false - // Check if this RC has replicas running - if rc.Status.Replicas > 0 { - visible = true - } else { // Check if RC is in progress - phase := rc.Annotations[deploymentPhaseAnnotation] - if phase == "New" || phase == "Pending" || phase == "Running" { - visible = true - } - } - return visible -} - -func getMostRecentByDeploymentVersion(rcs map[string]*v1.ReplicationController) (*v1.ReplicationController, error) { - var result *v1.ReplicationController - var newestVersion *int64 - - for _, rc := range rcs { - var version *int64 - versionStr, pres := rc.Annotations[deploymentVersionAnnotation] - if pres { - versionNum, err := strconv.ParseInt(versionStr, 10, 64) - if err != nil { - return nil, errs.Wrapf(err, "deployment version for %s is not a valid integer", rc.Name) - } - version = &versionNum - } - - // Take first RC unconditionally - if result == nil { - result = rc - newestVersion = version - } else if newestVersion == nil { - // Prioritize RC with version over those without - if version != nil { - result = rc - newestVersion = version - } else { - // Have neither current version nor newest version so far - // Compare RC names lexicographically as done by web console: - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/services/deployments.js#L393 - if rc.Name > result.Name { - result = rc - } - } - } else if version != nil { - // Both current RC and newest RC have versions, so compare as integers - if *version > *newestVersion { - result = rc - newestVersion = version - } - } - } - - return result, nil -} - -func (kc *kubeClient) getReplicationControllers(namespace string, deploy *deployment) ([]v1.ReplicationController, error) { - rcs, err := kc.ReplicationControllers(namespace).List(metaV1.ListOptions{}) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "deployment_config": deploy.dcName, - }, "failed to list replication controllers") - return nil, convertError(errs.WithStack(err), "failed to list replication controllers in %s", namespace) - } - - // Current Kubernetes concept used to represent OpenShift Deployments - rcsForDc := []v1.ReplicationController{} - for _, rc := range rcs.Items { - - // Use OwnerReferences to map RC to DC that created it - match := false - for _, ref := range rc.OwnerReferences { - if ref.UID == deploy.dcUID && ref.Controller != nil && *ref.Controller { - match = true - break - } - } - if match { - rcsForDc = append(rcsForDc, rc) - } - } - - return rcsForDc, nil -} - -func (kc *kubeClient) getResourceQuota(namespace string) (*app.EnvStats, error) { - // Get both resource quotas in one API call - const computeResources string = "compute-resources" - const objectCounts string = "object-counts" - quotas, err := kc.ResourceQuotas(namespace).List(metaV1.ListOptions{}) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - }, "failed to list resource quotas") - return nil, convertError(errs.WithStack(err), "failed to list resource quotas from %s", - namespace) - } - - var computeQuota, objectQuota *v1.ResourceQuota - for idx := range quotas.Items { - quota := "as.Items[idx] - if quota.Name == computeResources { - computeQuota = quota - } else if quota.Name == objectCounts { - objectQuota = quota - } - } - - if computeQuota == nil { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "quota_name": computeResources, - }, "resource quota not found") - return nil, errors.NewNotFoundErrorFromString(fmt.Sprintf("resource quota '%s' not found in %s", - computeResources, namespace)) - } else if objectQuota == nil { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "quota_name": objectCounts, - }, "resource quota not found") - return nil, errors.NewNotFoundErrorFromString(fmt.Sprintf("resource quota '%s' not found in %s", - objectCounts, namespace)) - } - - result := &app.EnvStats{} - - // Collect compute-based resource usage and quotas - cpuQuota, err := getEnvStatQuota(computeQuota, v1.ResourceLimitsCPU) - if err != nil { - return nil, err - } else if cpuQuota == nil { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "quota_name": computeResources, - "resource_name": v1.ResourceLimitsCPU, - }, "CPU resource not found in quota") - return nil, errors.NewNotFoundErrorFromString(fmt.Sprintf("CPU missing from resource quota in %s", - namespace)) - } - result.Cpucores = cpuQuota - - memQuota, err := getEnvStatQuota(computeQuota, v1.ResourceLimitsMemory) - if err != nil { - return nil, err - } else if memQuota == nil { - log.Error(nil, map[string]interface{}{ - "namespace": namespace, - "quota_name": computeResources, - "resource_name": v1.ResourceLimitsMemory, - }, "memory resource not found in quota") - return nil, errors.NewNotFoundErrorFromString(fmt.Sprintf("memory missing from resource quota in %s", - namespace)) - } - result.Memory = memQuota - - // Get object-based resource usage and quotas where they exist - objStats, err := getEnvStatQuota(objectQuota, v1.ResourcePods) - if err != nil { - return nil, err - } - result.Pods = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourceReplicationControllers) - if err != nil { - return nil, err - } - result.ReplicationControllers = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourceQuotas) - if err != nil { - return nil, err - } - result.ResourceQuotas = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourceServices) - if err != nil { - return nil, err - } - result.Services = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourceSecrets) - if err != nil { - return nil, err - } - result.Secrets = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourceConfigMaps) - if err != nil { - return nil, err - } - result.ConfigMaps = objStats - objStats, err = getEnvStatQuota(objectQuota, v1.ResourcePersistentVolumeClaims) - if err != nil { - return nil, err - } - result.PersistentVolumeClaims = objStats - // OpenShift-specific object type - const resourceImageStreams v1.ResourceName = "openshift.io/imagestreams" - objStats, err = getEnvStatQuota(objectQuota, resourceImageStreams) - if err != nil { - return nil, err - } - result.ImageStreams = objStats - - return result, nil -} - -func getEnvStatQuota(quota *v1.ResourceQuota, resourceName v1.ResourceName) (*app.EnvStatQuota, error) { - var result *app.EnvStatQuota - used, limit, err := getResourceUsageAndLimit(quota, resourceName) - if err != nil { - return nil, err - } else if used != nil && limit != nil { - result = &app.EnvStatQuota{ - Quota: limit, - Used: used, - } - } - return result, nil -} - -func getResourceUsageAndLimit(quota *v1.ResourceQuota, resourceName v1.ResourceName) (used, limit *float64, err error) { - // Return nil if no resource by that name is present - quantity, pres := quota.Status.Hard[resourceName] - if pres { - // Convert quantities to floating point, as this should provide enough - // precision in practice - limitVal, err := quantityToFloat64(quantity) - if err != nil { - return nil, nil, err - } - limit = &limitVal - } - - // Do the same for usage - quantity, pres = quota.Status.Used[resourceName] - if pres { - usedVal, err := quantityToFloat64(quantity) - if err != nil { - return nil, nil, err - } - used = &usedVal - } - - return used, limit, nil -} - -func quantityToFloat64(q resource.Quantity) (float64, error) { - val64, rc := q.AsInt64() - var result float64 - if rc { - result = float64(val64) - } else { - valDec := q.AsDec() - val64, ok := valDec.Unscaled() - if !ok { - return -1, errs.Errorf("%s cannot be represented as a 64-bit integer", valDec.String()) - } - // From dec.go: The mathematical value of a Dec equals: unscaled * 10**(-scale) - result = float64(val64) * math.Pow10(-int(valDec.Scale())) - } - return result, nil -} - -func (kc *kubeClient) getPods(namespace string, rc *v1.ReplicationController) ([]*v1.Pod, error) { - pods, err := kc.Pods(namespace).List(metaV1.ListOptions{}) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "replication_controller": rc.Name, - }, "failed to list pods") - return nil, convertError(errs.WithStack(err), "failed to list pods in %s", namespace) - } - - appPods := []*v1.Pod{} - for idx, pod := range pods.Items { - // If a pod belongs to a given RC, it should have an OwnerReference - // whose UID matches that of the RC - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/services/ownerReferences.js#L40 - match := false - for _, ref := range pod.OwnerReferences { - if ref.UID == rc.UID && ref.Controller != nil && *ref.Controller { - match = true - break - } - } - if match { - appPods = append(appPods, &pods.Items[idx]) - } - } - - return appPods, nil -} - -func (kc *kubeClient) getPodsQuota(pods []*v1.Pod) (*app.PodsQuota, error) { - cores := float64(0) - memory := float64(0) - - for _, pod := range pods { - for _, container := range pod.Spec.Containers { - cpu, err := quantityToFloat64(*container.Resources.Limits.Cpu()) - if err != nil { - return nil, err - } - mem, err := quantityToFloat64(*container.Resources.Limits.Memory()) - if err != nil { - return nil, err - } - cores += cpu - memory += mem - } - } - - result := &app.PodsQuota{ - Cpucores: &cores, - Memory: &memory, - } - - return result, nil -} - -func (kc *kubeClient) GetDeploymentPodQuota(spaceName string, appName string, envName string) (*app.SimpleDeploymentPodLimitRange, error) { - // Find namespace for environment name - namespace, err := kc.getDeployableEnvironmentNamespace(envName) - if err != nil { - return nil, err - } - dcName, err := kc.getDeploymentConfigNameForApp(namespace, appName, spaceName) - if err != nil { - return nil, errs.Errorf("could not retrieve deployment with the given namespace %s, app name %s and space name %s", namespace, appName, spaceName) - } - - deploymentConfig, err := kc.GetDeploymentConfig(namespace, dcName) - if err != nil { - return nil, errs.Errorf("could not retrieve deployment config with name %s for namespace %s", dcName, namespace) - } else if deploymentConfig == nil { - return nil, errors.NewNotFoundErrorFromString(fmt.Sprintf("no deployment config found named %s in %s", dcName, namespace)) - } - - spec, ok := deploymentConfig["spec"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("spec is missing from deployment config %s: %+v", dcName, spec) - } - - template, ok := spec["template"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("template is missing from deployment config %s: %+v", dcName, template) - } - - innerSpec, ok := template["spec"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("inner spec is missing from deployment config %s: %+v", dcName, innerSpec) - } - - // This should be checked, to see if maps[string]interface is appropriate type for iterable arr - containers, ok := innerSpec["containers"].([]interface{}) - if !ok { - return nil, errs.Errorf("containers is missing from deployment config %s: %+v", dcName, containers) - } - - numContainersMissingCPU := float64(0) - numContainersMissingMem := float64(0) - podCPULimit := float64(0) - podMemLimit := float64(0) - - for _, containerItem := range containers { - container, ok := containerItem.(map[string]interface{}) - if !ok { - return nil, errs.Errorf("containers array contains invalid container: %v", containerItem) - } - resourcesItem, pres := container["resources"] - if !pres { - numContainersMissingCPU++ - numContainersMissingMem++ - continue - } - resources, ok := resourcesItem.(map[string]interface{}) - if !ok { - return nil, errs.Errorf("resources spec in pod template is invalid: %v", resourcesItem) - } - if len(resources) == 0 { - numContainersMissingCPU++ - numContainersMissingMem++ - continue - } - - limits, ok := resources["limits"].(map[string]interface{}) - if !ok { - return nil, errs.Errorf("limits is missing from deployment config %s: %+v", dcName, resources) - } - - cpuLimit, err := getOptionalStringValue(limits, "cpucores") - if err != nil { - return nil, err - } - if len(cpuLimit) == 0 { - numContainersMissingCPU++ - } else { - cpuQuantity, err := resource.ParseQuantity(cpuLimit) - if err != nil { - return nil, errs.Errorf("could not parse cpu quantity for %+v of %s ", container, dcName) - } - - cpuValue, err := quantityToFloat64(cpuQuantity) - if err != nil { - return nil, errs.Errorf("could not convert cpu quantity %+v to float64 value", cpuQuantity) - } - podCPULimit += cpuValue - } - - memLimit, err := getOptionalStringValue(limits, "memory") - if err != nil { - return nil, err - } - if len(memLimit) == 0 { - numContainersMissingMem++ - } else { - memoryQuantity, err := resource.ParseQuantity(memLimit) - if err != nil { - return nil, errs.Errorf("could not parse memory quantity for %+v of %s ", container, dcName) - } - - memoryValue, err := quantityToFloat64(memoryQuantity) - if err != nil { - return nil, errs.Errorf("could not convert memory quantity %+v to float64 value", memoryQuantity) - } - - podMemLimit += memoryValue - } - } - - if numContainersMissingCPU > 0 || numContainersMissingMem > 0 { - // Look up default resource limits using LimitRanges API - limitRange, err := kc.LimitRanges(namespace).Get(limitRangeName, metaV1.GetOptions{}) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "limit_range_name": limitRangeName, - }, "failed to get limit range") - return nil, convertError(errs.WithStack(err), "failed to get limit range %s in %s", limitRangeName, namespace) - } - - var containerCPULimit, containerMemLimit *resource.Quantity - for _, limit := range limitRange.Spec.Limits { - if limit.Type == "Container" { - cpuQty, pres := limit.Default[v1.ResourceCPU] - if pres { - containerCPULimit = &cpuQty - } - memQty, pres := limit.Default[v1.ResourceMemory] - if pres { - containerMemLimit = &memQty - } - } - } - - if containerCPULimit == nil || containerMemLimit == nil { - log.Error(nil, map[string]interface{}{ - "limit_range": limitRange, - "namespace": namespace, - }, "CPU or memory container limit missing from LimitRange") - return nil, errs.Errorf("CPU or memory container limit missing from LimitRange for namespace %s", namespace) - } - - defaultCPULimit, err := quantityToFloat64(*containerCPULimit) - if err != nil { - return nil, errs.Errorf("could not convert cpu quantity %+v to float64 value", *containerCPULimit) - } - defaultMemLimit, err := quantityToFloat64(*containerMemLimit) - if err != nil { - return nil, errs.Errorf("could not convert memory quantity %+v to float64 value", *containerMemLimit) - } - - // Apply default limit for each container that didn't specify CPU/memory limits - podCPULimit += defaultCPULimit * numContainersMissingCPU - podMemLimit += defaultMemLimit * numContainersMissingMem - } - - return &app.SimpleDeploymentPodLimitRange{ - Limits: &app.PodsQuota{ - Cpucores: &podCPULimit, - Memory: &podMemLimit, - }, - }, nil -} - -// Pod status constants -const ( - podRunning = "Running" - podNotReady = "Not Ready" - podWarning = "Warning" - podError = "Error" - podPulling = "Pulling" - podPending = "Pending" - podSucceeded = "Succeeded" - podTerminating = "Terminating" - podUnknown = "Unknown" -) - -func (kc *kubeClient) getPodStatus(pods []*v1.Pod) ([][]string, int) { - /* - * Use the same categorization used by the web console. See: - * https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/directives/podDonut.js - * https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/filters/resources.js - */ - podStatus := make(map[string]int) - podTotal := 0 - for _, pod := range pods { - statusKey := podUnknown - if pod.Status.Phase == v1.PodFailed { - // Failed pods are not included, see web console: - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/directives/podDonut.js#L32 - continue - } else if pod.DeletionTimestamp != nil { - // Terminating pods have a deletionTimeStamp set - statusKey = podTerminating - } else if warn, severe := isPodWarning(pod); warn { - // Check for warnings/errors - if severe { - statusKey = podError - } else { - statusKey = podWarning - } - } else if isPullingImage(pod) { - // One or more containers is waiting on its image to be pulled - statusKey = podPulling - } else if pod.Status.Phase == v1.PodRunning && !isPodReady(pod) { - // Pod is running, but one or more containers is not yet ready - statusKey = podNotReady - } else { - // Use Kubernetes pod phase - statusKey = string(pod.Status.Phase) - } - podStatus[statusKey]++ - podTotal++ - } - - result := [][]string{} - for status, count := range podStatus { - statusEntry := []string{status, strconv.Itoa(count)} - result = append(result, statusEntry) - } - - return result, podTotal -} - -func isPodWarning(pod *v1.Pod) (warning, severe bool) { - const containerTimeout time.Duration = 5 * time.Minute - const containerCrashLoop string = "CrashLoopBackOff" - // Consider Unknown phase a warning state - if pod.Status.Phase == v1.PodUnknown { - return true, false - } - - // Check if pod has been in Pending phase for too long - now := time.Now() - if pod.Status.Phase == v1.PodPending { - duration := now.Sub(pod.CreationTimestamp.Time) - if duration > containerTimeout { - return true, false - } - } - - // Check for warning conditions in pod's containers - if pod.Status.Phase == v1.PodRunning { - for _, status := range pod.Status.ContainerStatuses { - state := status.State - // Check if the container terminated with non-zero exit status - if state.Terminated != nil && state.Terminated.ExitCode != 0 { - // Severe if pod is terminated, indicating container didn't stop cleanly - return true, pod.DeletionTimestamp != nil - } - // Check if the container has been repeatedly crashing - if state.Waiting != nil && state.Waiting.Reason == containerCrashLoop { - return true, true - } - // Check if the container has not become ready within timeout - if state.Running != nil && !status.Ready { - startTime := state.Running.StartedAt.Time - duration := now.Sub(startTime) - if duration > containerTimeout { - return true, false - } - } - } - } - - return false, false -} - -func isPullingImage(pod *v1.Pod) bool { - const containerCreating string = "ContainerCreating" - // If pod is pending with a container waiting due to a "ContainerCreating" event, - // categorize as "Pulling". This may change as more information is made available. - // See: https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/filters/resources.js#L663 - if pod.Status.Phase == v1.PodPending { - for _, status := range pod.Status.ContainerStatuses { - waiting := status.State.Waiting - if waiting != nil && waiting.Reason == containerCreating { - return true - } - } - } - return false -} - -func isPodReady(pod *v1.Pod) bool { - // If all of the pod's containers have a ready status, then the pod is - // considered ready. - total := len(pod.Spec.Containers) - numReady := 0 - for _, status := range pod.Status.ContainerStatuses { - if status.Ready { - numReady++ - } - } - return numReady == total -} - -func (kc *kubeClient) getBestRoute(namespace string, dc *deployment) (*url.URL, error) { - serviceMap, err := kc.getMatchingServices(namespace, dc) - if err != nil { - return nil, err - } - // Get routes and associate to services using spec.to.name - err = kc.getRoutesByService(namespace, serviceMap) - if err != nil { - return nil, err - } - - // Find route with highest score according to heuristics from web-console - var bestRoute *route - bestScore := -1 - for _, routes := range serviceMap { - for _, route := range routes { - score := scoreRoute(route) - if score > bestScore { - bestScore = score - bestRoute = route - } - } - } - - // Construct URL from best route - var result *url.URL - if bestRoute != nil { - scheme := "http" - if bestRoute.tls { - scheme = "https" - } - result = &url.URL{ - Scheme: scheme, - Host: bestRoute.host, - Path: bestRoute.path, - } - } - - return result, nil -} - -func (kc *kubeClient) getMatchingServices(namespace string, deploy *deployment) (routesByService map[string][]*route, err error) { - services, err := kc.Services(namespace).List(metaV1.ListOptions{}) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "deployment_config": deploy.dcName, - }, "failed to list services") - return nil, convertError(errs.WithStack(err), "failed to list services in %s", namespace) - } - // Check if each service's selector matches labels in deployment's pod template - template := deploy.current.Spec.Template - if template == nil { - return nil, errs.Errorf("no pod template for current deployment in namespace %s", namespace) - } - routesByService = make(map[string][]*route) - for _, service := range services.Items { - selector := service.Spec.Selector - match := true - // Treat empty selector as not matching - if len(selector) == 0 { - match = false - } - for key := range selector { - if selector[key] != template.Labels[key] { - match = false - break - } - } - // If all selector labels match those in the pod template, add service key to map. - // Routes will be added later by the getRoutesByService method. - if match { - routesByService[service.Name] = make([]*route, 0) - } - } - return routesByService, nil -} - -func (kc *kubeClient) getRoutesByService(namespace string, routesByService map[string][]*route) error { - result, err := kc.GetRoutes(namespace, "") - if err != nil { - return err - } - - items, err := getRoutesFromRouteList(result) - if err != nil { - return err - } - for _, item := range items { - routeItem, ok := item.(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "route object invalid") - return errs.Errorf("invalid route object returned from %s", namespace) - } - - // Parse route from result - spec, ok := routeItem["spec"].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "spec missing from route") - return errs.Errorf("spec missing from route returned from %s", namespace) - } - // Determine which service this route points to - to, ok := spec["to"].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "route has no destination") - return errs.Errorf("no destination in route returned from %s", namespace) - } - toName, ok := to["name"].(string) - if !ok || len(toName) == 0 { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "service name missing or invalid for route") - return errs.Errorf("service name missing or invalid for route returned from %s", namespace) - } - - var matchingServices []string - // Check if this route is for a service we're interested in - _, pres := routesByService[toName] - if pres { - matchingServices = append(matchingServices, toName) - } - - // Also check alternate backends for services - altBackends, ok := spec["alternateBackends"].([]interface{}) - if ok { - for idx := range altBackends { - backend, ok := altBackends[idx].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "malformed alternative backend") - return errs.Errorf("malformed alternative backend in route returned from %s", namespace) - } - // Check if this alternate backend is a service we want a route for - backendKind, err := getOptionalStringValue(backend, "kind") - if err != nil { - return err - } - if backendKind == "Service" { - backendName, ok := backend["name"].(string) - if ok && len(backendName) > 0 { - _, pres := routesByService[backendName] - if pres { - matchingServices = append(matchingServices, backendName) - } - } - } - } - } - if len(matchingServices) > 0 { - // Get ingress points - status, ok := routeItem["status"].(map[string]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "status missing from route") - return errs.Errorf("status missing from route returned from %s", namespace) - } - ingresses, ok := status["ingress"].([]interface{}) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "no ingress array listed in route") - return errs.Errorf("no ingress array listed in route returned from %s", namespace) - } - - // Prefer ingress with oldest lastTransitionTime that is marked as admitted - oldestAdmittedIngress, err := findOldestAdmittedIngress(ingresses) - if err != nil { - return err - } - - // Use hostname from oldest admitted ingress if possible - var hostname string - if oldestAdmittedIngress != nil { - hostname, ok = oldestAdmittedIngress["host"].(string) - if !ok { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "hostname missing from ingress") - return errs.Errorf("hostname missing from ingress in route returned from %s", namespace) - } - } else { - // Fall back to optional host in spec - hostname, err = getOptionalStringValue(spec, "host") - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": namespace, - "response": result, - }, "invalid hostname in route spec") - return errs.Wrapf(err, "invalid hostname in route spec returned from %s", namespace) - } - } - - // Check for optional path - path, err := getOptionalStringValue(spec, "path") - if err != nil { - return err - } - - // Determine whether route uses TLS - // see: https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/filters/resources.js#L193 - isTLS := false - tls, ok := spec["tls"].(map[string]interface{}) - if ok { - tlsTerm, ok := tls["termination"].(string) - if ok && len(tlsTerm) > 0 { - isTLS = true - } - } - - // Check if this route uses a custom hostname - customHost := true - metadata, ok := routeItem["metadata"].(map[string]interface{}) - if ok { - annotations, ok := metadata["annotations"].(map[string]interface{}) - if ok { - hostGenerated, err := getOptionalStringValue(annotations, "openshift.io/host.generated") - if err != nil { - return err - } - if hostGenerated == "true" { - customHost = false - } - } - } - route := &route{ - host: hostname, - path: path, - tls: isTLS, - hasAdmitted: oldestAdmittedIngress != nil, - hasAlternateBackends: len(altBackends) > 0, - isCustomHost: customHost, - } - // TODO check wildcard policy? (see above link) - // Associate this route with any services whoses routes we're looking for - for _, serviceName := range matchingServices { - routesByService[serviceName] = append(routesByService[serviceName], route) - } - } - } - return nil -} - -func (oc *openShiftAPIClient) GetRoutes(namespace string, labelSelector string) (map[string]interface{}, error) { - var routeURL string - if len(labelSelector) > 0 { - routeURL = fmt.Sprintf("/oapi/v1/namespaces/%s/routes?labelSelector=%s", namespace, labelSelector) - } else { - routeURL = fmt.Sprintf("/oapi/v1/namespaces/%s/routes", namespace) - } - return oc.getResource(routeURL, false) -} - -func getRoutesFromRouteList(list map[string]interface{}) ([]interface{}, error) { - // Parse list of routes - kind, ok := list["kind"].(string) - if !ok || kind != "RouteList" { - return nil, errs.New("No route list returned from endpoint") - } - items, ok := list["items"].([]interface{}) - if !ok { - return nil, errs.New("No list of routes in response") - } - return items, nil -} - -func getOptionalStringValue(respData map[string]interface{}, paramName string) (string, error) { - val, pres := respData[paramName] - if !pres { - return "", nil - } - strVal, ok := val.(string) - if !ok { - return "", errs.Errorf("property %s is not a string", paramName) - } - return strVal, nil -} - -func findOldestAdmittedIngress(ingresses []interface{}) (ingress map[string]interface{}, err error) { - var oldestAdmittedIngress map[string]interface{} - var oldestIngressTime time.Time - for idx := range ingresses { - ingress, ok := ingresses[idx].(map[string]interface{}) - if !ok { - return nil, errs.New("bad ingress found in route") - } - // Check for oldest admitted ingress - conditions, ok := ingress["conditions"].([]interface{}) - if ok { - for condIdx := range conditions { - condition, ok := conditions[condIdx].(map[string]interface{}) - if !ok { - return nil, errs.New("bad condition for ingress") - } - condType, err := getOptionalStringValue(condition, "type") - if err != nil { - return nil, err - } - condStatus, err := getOptionalStringValue(condition, "status") - if err != nil { - return nil, err - } - if condType == "Admitted" && condStatus == "True" { - lastTransitionStr, ok := condition["lastTransitionTime"].(string) - if !ok { - return nil, errs.New("missing last transition time from ingress condition") - } - lastTransition, err := time.Parse(time.RFC3339, lastTransitionStr) - if err != nil { - return nil, err - } - if oldestAdmittedIngress == nil || lastTransition.Before(oldestIngressTime) { - oldestAdmittedIngress = ingress - oldestIngressTime = lastTransition - } - } - } - } - } - return oldestAdmittedIngress, nil -} - -func scoreRoute(route *route) int { - // See: https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/services/routes.js#L106 - score := 0 - if route.hasAdmitted { - score += 11 - } - if route.hasAlternateBackends { - score += 5 - } - if route.isCustomHost { - score += 3 - } - if route.tls { - score++ - } - return score -} - -func (kc *kubeClient) deleteServices(appLabel string, envNS string) error { - // Delete all dependent objects before deleting the service - policy := metaV1.DeletePropagationForeground - delOpts := &metaV1.DeleteOptions{ - PropagationPolicy: &policy, - } - // Delete all services in namespace with matching 'app' label - listOpts := metaV1.ListOptions{ - LabelSelector: "app=" + appLabel, - } - // The API server rejects deleting services by label, so get all - // services with the label, and delete one-by-one - services, err := kc.Services(envNS).List(listOpts) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": envNS, - "app_label": appLabel, - }, "failed to list services") - return convertError(errs.WithStack(err), "failed to list services in %s", envNS) - } - for _, service := range services.Items { - err = kc.Services(envNS).Delete(service.Name, delOpts) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "namespace": envNS, - "app_label": appLabel, - "service_name": service.Name, - }, "failed to delete service") - return convertError(errs.WithStack(err), "failed to delete service '%s' in %s", - service.Name, envNS) - } - } - return nil -} - -func (kc *kubeClient) deleteRoutes(appLabel string, envNS string) error { - // Delete all routes in namespace with matching 'app' label - escapedSelector := url.QueryEscape("app=" + appLabel) - - // Delete all dependent objects before deleting the route - policy := metaV1.DeletePropagationForeground - opts := &metaV1.DeleteOptions{ - TypeMeta: metaV1.TypeMeta{ // Normally set automatically by k8s client-go - Kind: "DeleteOptions", - APIVersion: "v1", - }, - PropagationPolicy: &policy, - } - - // The API server rejects deleting services by label, so get all - // services with the label, and delete one-by-one - routeList, err := kc.GetRoutes(envNS, escapedSelector) - if err != nil { - return err - } - routeItems, err := getRoutesFromRouteList(routeList) - if err != nil { - return err - } - for _, routeItem := range routeItems { - route, ok := routeItem.(map[string]interface{}) - if !ok { - return errs.New("Route is not an object") - } - metadata, ok := route["metadata"].(map[string]interface{}) - if !ok { - return errs.New("Route has no metadata") - } - name, ok := metadata["name"].(string) - if !ok { - return errs.New("Route name is missing") - } - - // API states this should return a Status object, but it returns the route instead, - // just check for no HTTP error - _, err := kc.DeleteRoute(envNS, name, opts) - if err != nil { - return err - } - } - return nil -} - -func (oc *openShiftAPIClient) DeleteRoute(namespace string, name string, - opts *metaV1.DeleteOptions) (map[string]interface{}, error) { - routesPath := fmt.Sprintf("/oapi/v1/namespaces/%s/routes/%s", namespace, name) - // API states this should return a Status object, but it returns the route instead, - // just check for no HTTP error - return oc.sendResource(routesPath, "DELETE", opts) -} - -// Derived from: https://github.com/fabric8-services/fabric8-tenant/blob/master/openshift/kube_token.go -func (oc *openShiftAPIClient) getResource(path string, allowMissing bool) (map[string]interface{}, error) { - - url, err := oc.config.GetAPIURL() - if err != nil { - return nil, err - } - var body []byte - fullURL := strings.TrimSuffix(*url, "/") + path - req, err := http.NewRequest("GET", fullURL, bytes.NewReader(body)) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - }, "error creating HTTP GET request") - return nil, errs.WithStack(err) - } - - token, err := oc.config.GetAPIToken() - if err != nil { - return nil, err - } - - req.Header.Set("Accept", "application/json") - req.Header.Set("Authorization", "Bearer "+*token) - - resp, err := oc.httpClient.Do(req) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - }, "error during HTTP request") - return nil, errs.WithStack(err) - } - - defer resp.Body.Close() - - buf := new(bytes.Buffer) - buf.ReadFrom(resp.Body) - b := buf.Bytes() - - status := resp.StatusCode - if status == http.StatusNotFound && allowMissing { - return nil, nil - } else if status < http.StatusOK || status > http.StatusPartialContent { - log.Error(nil, map[string]interface{}{ - "url": fullURL, - "response_body": buf, - "http_status": status, - }, "error returned from HTTP request") - - // If response contains a Kubernetes Status object, create a StatusError - err = parseErrorFromStatus(b) - if err != nil { - return nil, convertError(errs.WithStack(err), "failed to GET url %s due to status code %d", fullURL, status) - } - return nil, errs.Errorf("failed to GET url %s due to status code %d", fullURL, status) - } - var respType map[string]interface{} - err = json.Unmarshal(b, &respType) - if err != nil { - log.Error(nil, map[string]interface{}{ - "err": err, - "url": fullURL, - "response_body": buf, - "http_status": status, - }, "error unmarshalling JSON response") - return nil, errs.WithStack(err) - } - return respType, nil -} - -func parseErrorFromStatus(body []byte) error { - // Try unmarshalling as Status resource - var kubeStatus metaV1.Status - err := json.Unmarshal(body, &kubeStatus) - if err != nil || kubeStatus.Kind != "Status" { - return nil - } - return kubeErrors.FromObject(&kubeStatus) -} - -// convertError converts a Kubernetes API error into an error suitable to be -// passed to jsonapi.ErrorToJSONAPIError. The format and args arguments are used -// to construct an error message, in a similar fashion to fmt.Sprintf. -func convertError(err error, format string, args ...interface{}) error { - message := format - if len(args) > 0 { - message = fmt.Sprintf(format, args...) - } - - cause := errs.Cause(err) - if statusError, ok := cause.(*kubeErrors.StatusError); ok { - message = fmt.Sprintf("%s: %s", message, statusError.Error()) - // Pass through certain HTTP statuses to our API response - if kubeErrors.IsBadRequest(statusError) { - return errors.NewBadParameterErrorFromString(message) - } else if kubeErrors.IsNotFound(statusError) { - return errors.NewNotFoundErrorFromString(message) - } - } - return errors.NewInternalError(nil /* unused */, errs.Wrap(err, message)) -} - -func (kc *kubeClient) WatchEventsInNamespace(nameSpace string) (*cache.FIFO, chan struct{}) { - eventsLW := &cache.ListWatch{ - ListFunc: func(options metaV1.ListOptions) (runtime.Object, error) { - return kc.Events(nameSpace).List(options) - }, - WatchFunc: func(options metaV1.ListOptions) (watch.Interface, error) { - return kc.Events(nameSpace).Watch(options) - }, - } - - store := cache.NewFIFO(cache.MetaNamespaceKeyFunc) - ref := cache.NewReflector(eventsLW, &v1.Event{}, store, 0) - stopCh := make(chan struct{}) - - ref.RunUntil(stopCh) - - return store, stopCh -} - -func (kc *kubeClient) GetSpaceAndOtherEnvironmentUsage(spaceName string) ([]*app.SpaceAndOtherEnvironmentUsage, error) { - - space, err := kc.GetSpace(spaceName) - if err != nil { - return nil, err - } - - envs, err := kc.GetEnvironments() - if err != nil { - return nil, err - } - - result := make([]*app.SpaceAndOtherEnvironmentUsage, 0, len(envs)) - envMap := calculateEnvMap(space) - for _, env := range envs { - if env.Attributes.Name != nil && env.Attributes.Quota != nil { - envName := *env.Attributes.Name - otherUsage := *env.Attributes.Quota - - spaceUsage, pres := envMap[envName] - if pres { - // Subtract usage by this space from total environment usage to determine - // usage by all other spaces combined - *otherUsage.Cpucores.Used -= *spaceUsage.Cpucores - *otherUsage.Memory.Used -= *spaceUsage.Memory - } else { - cpuUsage := float64(0) - memUsage := float64(0) - spaceUsage = &app.SpaceEnvironmentUsageQuota{ - Cpucores: &cpuUsage, - Memory: &memUsage, - } - } - - usage := &app.SpaceAndOtherEnvironmentUsage{ - Attributes: &app.SpaceAndOtherEnvironmentUsageAttributes{ - Name: &envName, - SpaceUsage: spaceUsage, - OtherUsage: &otherUsage, - }, - ID: envName, - Type: "environment", - } - - result = append(result, usage) - } - } - - return result, nil -} - -func calculateEnvMap(space *app.SimpleSpace) map[string]*app.SpaceEnvironmentUsageQuota { - envMap := make(map[string]*app.SpaceEnvironmentUsageQuota) - for _, appl := range space.Attributes.Applications { - for _, dep := range appl.Attributes.Deployments { - if value, ok := envMap[dep.Attributes.Name]; ok { - *value.Cpucores += *dep.Attributes.PodsQuota.Cpucores - *value.Memory += *dep.Attributes.PodsQuota.Memory - } else { - cpucores := *dep.Attributes.PodsQuota.Cpucores - memory := *dep.Attributes.PodsQuota.Memory - envMap[dep.Attributes.Name] = &app.SpaceEnvironmentUsageQuota{ - Cpucores: &cpucores, - Memory: &memory, - } - } - } - } - - return envMap -} diff --git a/kubernetes/deployments_kubeclient_blackbox_test.go b/kubernetes/deployments_kubeclient_blackbox_test.go deleted file mode 100644 index 8194a18a94..0000000000 --- a/kubernetes/deployments_kubeclient_blackbox_test.go +++ /dev/null @@ -1,2138 +0,0 @@ -package kubernetes_test - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "strings" - "testing" - "time" - - "github.com/fabric8-services/fabric8-wit/errors" - - "github.com/dnaeon/go-vcr/cassette" - "github.com/dnaeon/go-vcr/recorder" - "github.com/stretchr/testify/require" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/kubernetes" - - errs "github.com/pkg/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - v1 "k8s.io/client-go/pkg/api/v1" - "k8s.io/client-go/tools/cache" -) - -// Used for equality comparisons between float64s -const fltDelta = 0.00000001 - -// Path to JSON resources -const pathToTestJSON = "../test/kubernetes/" - -type testFixture struct { - metricsInput *metricsInput - metrics *testMetrics -} - -type testURLProvider struct { - apiURL string - apiToken string - clusterURL string - clusterToken string -} - -func getDefaultURLProvider(baseurl string, token string) kubernetes.BaseURLProvider { - return &testURLProvider{ - apiURL: baseurl, - apiToken: token, - clusterURL: baseurl, - clusterToken: token, - } -} - -func getDefaultKubeClient(fixture *testFixture, transport http.RoundTripper, t *testing.T) kubernetes.KubeClientInterface { - - config := &kubernetes.KubeClientConfig{ - BaseURLProvider: getDefaultURLProvider("http://api.myCluster", "myToken"), - UserNamespace: "myNamespace", - MetricsGetter: fixture, - Transport: transport, - } - - kc, err := kubernetes.NewKubeClient(config) - - require.NoError(t, err) - return kc -} - -// Metrics fakes - -type metricsHolder struct { - pods []*v1.Pod - namespace string - startTime time.Time - endTime time.Time - limit int -} - -type metricsInput struct { - cpu []*app.TimedNumberTuple - memory []*app.TimedNumberTuple - netTx []*app.TimedNumberTuple - netRx []*app.TimedNumberTuple -} - -var defaultMetricsInput = &metricsInput{ - cpu: []*app.TimedNumberTuple{ - createTuple(1.2, 1517867612000), - createTuple(0.7, 1517867613000), - }, - memory: []*app.TimedNumberTuple{ - createTuple(1200, 1517867612000), - createTuple(3000, 1517867613000), - }, - netTx: []*app.TimedNumberTuple{ - createTuple(300, 1517867612000), - createTuple(520, 1517867613000), - }, - netRx: []*app.TimedNumberTuple{ - createTuple(700, 1517867612000), - createTuple(100, 1517867613000), - }, -} - -func createTuple(val float64, ts float64) *app.TimedNumberTuple { - return &app.TimedNumberTuple{ - Value: &val, - Time: &ts, - } -} - -type testMetrics struct { - config *kubernetes.MetricsClientConfig - fixture *testFixture - cpuParams *metricsHolder - memParams *metricsHolder - netTxParams *metricsHolder - netRxParams *metricsHolder - closed bool -} - -func (fixture *testFixture) GetMetrics(config *kubernetes.MetricsClientConfig) (kubernetes.Metrics, error) { - metrics := &testMetrics{ - fixture: fixture, - config: config, - } - fixture.metrics = metrics - return metrics, nil -} - -func (tm *testMetrics) GetCPUMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return tm.getOneMetric(tm.fixture.metricsInput.cpu, pods, namespace, startTime, &tm.cpuParams) -} - -func (tm *testMetrics) GetCPUMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) { - return tm.getManyMetrics(tm.fixture.metricsInput.cpu, pods, namespace, startTime, endTime, limit, &tm.cpuParams) -} - -func (tm *testMetrics) GetMemoryMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return tm.getOneMetric(tm.fixture.metricsInput.memory, pods, namespace, startTime, &tm.memParams) -} - -func (tm *testMetrics) GetMemoryMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) { - return tm.getManyMetrics(tm.fixture.metricsInput.memory, pods, namespace, startTime, endTime, limit, &tm.memParams) -} - -func (tm *testMetrics) GetNetworkSentMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return tm.getOneMetric(tm.fixture.metricsInput.netTx, pods, namespace, startTime, &tm.netTxParams) -} - -func (tm *testMetrics) GetNetworkSentMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) { - return tm.getManyMetrics(tm.fixture.metricsInput.netTx, pods, namespace, startTime, endTime, limit, &tm.netTxParams) -} - -func (tm *testMetrics) GetNetworkRecvMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return tm.getOneMetric(tm.fixture.metricsInput.netRx, pods, namespace, startTime, &tm.netRxParams) -} - -func (tm *testMetrics) GetNetworkRecvMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) { - return tm.getManyMetrics(tm.fixture.metricsInput.netRx, pods, namespace, startTime, endTime, limit, &tm.netRxParams) -} - -func (tm *testMetrics) getOneMetric(metrics []*app.TimedNumberTuple, pods []*v1.Pod, namespace string, - startTime time.Time, holderPtr **metricsHolder) (*app.TimedNumberTuple, error) { - *holderPtr = &metricsHolder{ - pods: pods, - namespace: namespace, - startTime: startTime, - } - return metrics[0], nil -} - -func (tm *testMetrics) Close() { - tm.closed = true -} - -func (tm *testMetrics) getManyMetrics(metrics []*app.TimedNumberTuple, pods []*v1.Pod, namespace string, - startTime time.Time, endTime time.Time, limit int, holderPtr **metricsHolder) ([]*app.TimedNumberTuple, error) { - *holderPtr = &metricsHolder{ - pods: pods, - namespace: namespace, - startTime: startTime, - endTime: endTime, - limit: limit, - } - return metrics, nil -} - -func TestGetMetrics(t *testing.T) { - token := "myToken" - testCases := []struct { - name string - clusterURL string - expectedURL string - shouldSucceed bool - }{ - {"Basic", "https://api.myCluster.url:443/cluster", "https://metrics.myCluster.url", true}, - {"Bad URL", "https://myCluster.url:443/cluster", "", false}, - } - - for _, testCase := range testCases { - t.Run(testCase.name, func(t *testing.T) { - fixture := &testFixture{} - config := &kubernetes.KubeClientConfig{ - BaseURLProvider: getDefaultURLProvider(testCase.clusterURL, token), - UserNamespace: "myNamespace", - MetricsGetter: fixture, - } - kc, err := kubernetes.NewKubeClient(config) - if testCase.shouldSucceed { - require.NoError(t, err, "Unexpected error") - require.NotNil(t, kc) - mm, err := kc.GetMetricsClient("myNamespace") - require.NoError(t, err) - require.NotNil(t, mm) - metricsConfig := fixture.metrics.config - require.NotNil(t, metricsConfig, "Metrics config is nil") - require.Equal(t, testCase.expectedURL, metricsConfig.MetricsURL, "Incorrect Metrics URL") - require.Equal(t, token, metricsConfig.BearerToken, "Incorrect bearer token") - } else { - // bad URLs aren't detected until a metrics client tries to use themn - _, err := kc.GetMetricsClient("myNamespace") - require.Errorf(t, err, "URL %s should fail", testCase.clusterURL) - } - }) - } -} - -// ensure testFixture implements all of MetricsGetter -var _ kubernetes.MetricsGetter = &testFixture{} -var _ kubernetes.MetricsGetter = (*testFixture)(nil) - -func TestClose(t *testing.T) { - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, nil, t) - - mm, err := kc.GetMetricsClient("myNamespace") - require.NoError(t, err) - require.NotNil(t, mm) - - // Check that KubeClientInterface.Close invokes MetricsInterface.Close - kc.Close() - - require.True(t, fixture.metrics.closed, "Metrics client not closed") -} - -type envTestData struct { - envName string - cpu *quotaData - mem *quotaData - pod *quotaData - rc *quotaData - quota *quotaData - svc *quotaData - secret *quotaData - cm *quotaData - pvc *quotaData - is *quotaData -} - -type quotaData struct { - used float64 - limit float64 -} - -func TestGetEnvironments(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - shouldFail bool - errorChecker func(error) (bool, error) - data map[string]*envTestData - }{ - { - testName: "Basic", - cassetteName: "getenvironments", - data: map[string]*envTestData{ - "run": { - envName: "run", - cpu: "aData{0.488, 2.0}, - mem: "aData{262144000.0, 1073741824.0}, - rc: "aData{2, 20}, - pvc: "aData{1, 1}, - secret: "aData{11, 20}, - svc: "aData{2, 5}, - }, - "stage": { - envName: "stage", - cpu: "aData{1.488, 2.0}, - mem: "aData{799014912.0, 1073741824.0}, - rc: "aData{5, 20}, - pvc: "aData{0, 1}, - secret: "aData{9, 20}, - svc: "aData{2, 5}, - }, - "test": { - envName: "test", - cpu: "aData{0.0, 2.0}, - mem: "aData{0.0, 1073741824.0}, - rc: "aData{1, 20}, - pvc: "aData{0, 1}, - secret: "aData{12, 20}, - svc: "aData{1, 5}, - }, - }, - }, - { - testName: "Kubernetes Error", - cassetteName: "getenvironments-rq-error", - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - envs, err := kc.GetEnvironments() - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - - require.Equal(t, len(testCase.data), len(envs), "Wrong number of environments returned") - for _, env := range envs { - require.NotNil(t, env, "Environment must not be nil") - require.NotNil(t, env.Attributes, "Environment attributes are nil") - require.NotNil(t, env.Attributes.Name, "Environment name must not be nil") - - envName := *env.Attributes.Name - envData := testCase.data[envName] - require.NotNil(t, envData, "Unknown app: "+envName) - require.Equal(t, envData.envName, envName, "Wrong environment name") - - quotas := env.Attributes.Quota - require.NotNil(t, quotas, "Expected non-nil Quota attribute") - - verifyEnvironmentStats(quotas, envData, t) - } - } - }) - } -} - -func TestGetSpaceAndOtherEnvironmentUsage(t *testing.T) { - type environmentUsage struct { - cpucores float64 - memory float64 - } - - testCases := []struct { - testName string - cassetteName string - spaceName string - shouldFail bool - errorChecker func(error) (bool, error) - thisSpaceData map[string]*environmentUsage - otherSpaceData map[string]*envTestData - }{ - { - testName: "Basic", - cassetteName: "getspaceandotherenvironmentusage", - spaceName: "mySpace", - thisSpaceData: map[string]*environmentUsage{ - "run": {1.464, 786432000}, - "stage": {0.976, 524288000}, - "test": {0.0, 0.0}, - }, - otherSpaceData: map[string]*envTestData{ - "run": { - envName: "run", - cpu: "aData{0.436, 2.0}, - mem: "aData{209715200.0, 1073741824.0}, - rc: "aData{2, 20}, - pvc: "aData{1, 1}, - secret: "aData{11, 20}, - svc: "aData{2, 5}, - }, - "stage": { - envName: "stage", - cpu: "aData{0.0, 2.0}, - mem: "aData{0.0, 1073741824.0}, - rc: "aData{5, 20}, - pvc: "aData{0, 1}, - secret: "aData{9, 20}, - svc: "aData{2, 5}, - }, - "test": { - envName: "test", - cpu: "aData{0.2, 2.0}, - mem: "aData{262144000.0, 1073741824.0}, - rc: "aData{1, 20}, - pvc: "aData{0, 1}, - secret: "aData{12, 20}, - svc: "aData{1, 5}, - }, - }, - }, - { - testName: "Kubernetes Error", - cassetteName: "getspaceandotherenvironmentusage-rq-error", - spaceName: "mySpace", - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - result, err := kc.GetSpaceAndOtherEnvironmentUsage(testCase.spaceName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - require.NotNil(t, result, "Result should be non-nil") - - require.Equal(t, len(testCase.otherSpaceData), len(result), "Wrong number of environments") - for _, usage := range result { - // Check usage for space - require.NotNil(t, usage.Attributes.Name, "Environment must have a name") - envName := *usage.Attributes.Name - - thisSpaceData, pres := testCase.thisSpaceData[envName] - require.True(t, pres, "Unknown environment %s", envName) - spaceUsage := usage.Attributes.SpaceUsage - require.NotNil(t, spaceUsage, "Usage by this space is missing") - - cpuUsage := spaceUsage.Cpucores - require.NotNil(t, cpuUsage, "Expected CPU usage in response") - require.InDelta(t, thisSpaceData.cpucores, *cpuUsage, fltDelta, "Incorrect CPU usage for %s", envName) - - memUsage := spaceUsage.Memory - require.NotNil(t, memUsage, "Expected memory usage in response") - require.InDelta(t, thisSpaceData.memory, *memUsage, fltDelta, "Incorrect memory usage for %s", envName) - - // Check usage for other spaces - otherSpaceData, pres := testCase.otherSpaceData[envName] - require.True(t, pres, "Unknown environment %s", envName) - otherUsage := usage.Attributes.OtherUsage - require.NotNil(t, otherUsage, "Usage by other spaces is missing") - - verifyEnvironmentStats(otherUsage, otherSpaceData, t) - } - } - }) - } -} - -func TestGetEnvironment(t *testing.T) { - testCases := []struct { - testName string - cassetteName string - shouldFail bool - errorChecker func(error) (bool, error) - envTestData - }{ - { - testName: "Basic", - cassetteName: "getenvironments", - envTestData: envTestData{ - envName: "run", - cpu: "aData{0.488, 2.0}, - mem: "aData{262144000.0, 1073741824.0}, - rc: "aData{2, 20}, - pvc: "aData{1, 1}, - secret: "aData{11, 20}, - svc: "aData{2, 5}, - }, - }, - { - testName: "All Objects", - cassetteName: "getenvironment-all-objects", - envTestData: envTestData{ - envName: "run", - cpu: "aData{0.488, 2.0}, - mem: "aData{262144000.0, 1073741824.0}, - pod: "aData{31, 40}, - rc: "aData{19, 25}, - quota: "aData{2, 3}, - svc: "aData{4, 5}, - secret: "aData{17, 20}, - cm: "aData{9, 10}, - pvc: "aData{0, 1}, - is: "aData{14, 15}, - }, - }, - { - testName: "Bad Environment", - cassetteName: "getenvironments", - envTestData: envTestData{ - envName: "doesNotExist", - }, - shouldFail: true, - }, - { - testName: "Kubernetes Error", - cassetteName: "getenvironments-rq-error", - envTestData: envTestData{ - envName: "run", - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "Compute Resources Missing", - cassetteName: "getenvironment-no-compute", - envTestData: envTestData{ - envName: "run", - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "Object Counts Missing", - cassetteName: "getenvironment-no-objects", - envTestData: envTestData{ - envName: "run", - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "CPU Missing", - cassetteName: "getenvironment-no-cpu", - envTestData: envTestData{ - envName: "run", - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "Memory Missing", - cassetteName: "getenvironment-no-mem", - envTestData: envTestData{ - envName: "run", - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - env, err := kc.GetEnvironment(testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - - require.NotNil(t, env, "Environment must not be nil") - require.NotNil(t, env.Attributes, "Environment attributes are nil") - require.NotNil(t, env.Attributes.Name, "Environment name must not be nil") - - require.Equal(t, testCase.envName, *env.Attributes.Name, "Wrong environment name") - - quotas := env.Attributes.Quota - require.NotNil(t, quotas, "Expected non-nil Quota attribute") - - verifyEnvironmentStats(quotas, &testCase.envTestData, t) - } - }) - } -} - -func verifyEnvironmentStats(quotas *app.EnvStats, testCase *envTestData, t *testing.T) { - cpuQuota := quotas.Cpucores - require.NotNil(t, cpuQuota, "Expected CPU usage/limit in response") - require.InDelta(t, testCase.cpu.limit, *cpuQuota.Quota, fltDelta, "Incorrect CPU quota for %s", testCase.envName) - require.InDelta(t, testCase.cpu.used, *cpuQuota.Used, fltDelta, "Incorrect CPU usage for %s", testCase.envName) - - memQuota := quotas.Memory - require.NotNil(t, memQuota, "Expected memory usage/limit in response") - require.InDelta(t, testCase.mem.limit, *memQuota.Quota, fltDelta, "Incorrect memory quota for %s", testCase.envName) - require.InDelta(t, testCase.mem.used, *memQuota.Used, fltDelta, "Incorrect memory usage for %s", testCase.envName) - - verifyObjectQuota(quotas.Pods, testCase.pod, "pod", testCase.envName, t) - verifyObjectQuota(quotas.ReplicationControllers, testCase.rc, "replication controller", testCase.envName, t) - verifyObjectQuota(quotas.ResourceQuotas, testCase.quota, "resource quota", testCase.envName, t) - verifyObjectQuota(quotas.Services, testCase.svc, "service", testCase.envName, t) - verifyObjectQuota(quotas.Secrets, testCase.secret, "secret", testCase.envName, t) - verifyObjectQuota(quotas.ConfigMaps, testCase.cm, "config map", testCase.envName, t) - verifyObjectQuota(quotas.PersistentVolumeClaims, testCase.pvc, "persistent volume claim", testCase.envName, t) - verifyObjectQuota(quotas.ImageStreams, testCase.is, "image stream", testCase.envName, t) -} - -func verifyObjectQuota(quota *app.EnvStatQuota, expected *quotaData, resourceName string, - envName string, t *testing.T) { - if expected == nil { - require.Nil(t, quota, "Unexpected %s usage/limit in response", resourceName) - } else { - require.NotNil(t, quota, "Expected %s usage/limit in response", resourceName) - require.InDelta(t, expected.limit, *quota.Quota, fltDelta, "Incorrect %s quota for %s", resourceName, envName) - require.InDelta(t, expected.used, *quota.Used, fltDelta, "Incorrect %s usage for %s", resourceName, envName) - } -} - -type spaceTestData struct { - testName string - spaceName string - shouldFail bool - appTestData map[string]*appTestData // Keys are app names - cassetteName string - errorChecker func(error) (bool, error) -} - -var defaultSpaceTestData = &spaceTestData{ - testName: "Basic", - spaceName: "mySpace", - appTestData: map[string]*appTestData{"myApp": defaultAppTestData}, - cassetteName: "getspace", -} - -type appTestData struct { - testName string - spaceName string - appName string - shouldFail bool - deployTestData map[string]*deployTestData // Keys are environment names - cassetteName string -} - -var defaultAppTestData = &appTestData{ - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - deployTestData: map[string]*deployTestData{"run": defaultDeployTestData}, - cassetteName: "getdeployment", -} - -type deployTestData struct { - testName string - spaceName string - appName string - envName string - expectVersion string - expectPodStatus [][]string - expectPodsTotal int - expectPodsQuotaCpucores float64 - expectPodsQuotaMemory float64 - expectConsoleURL string - expectLogURL string - expectAppURL string - shouldFail bool - errorChecker func(error) (bool, error) - cassetteName string -} - -var defaultDeployTestData = &deployTestData{ - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - expectVersion: "1.0.2", - expectPodStatus: [][]string{ - {"Running", "2"}, - }, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectPodsTotal: 2, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myDeploy-1?tab=logs", - expectAppURL: "http://myDeploy-my-run.example.com", - cassetteName: "getdeployment", -} - -type deployStatsTestData struct { - testName string - spaceName string - appName string - envName string - envNS string - cassetteName string - shouldFail bool - metricsInput *metricsInput - startTime time.Time - endTime time.Time - expectStart int64 - expectEnd int64 - expectPodUIDs []string - limit int -} - -var defaultDeployStatsTestData = &deployStatsTestData{ - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - envNS: "my-run", - cassetteName: "getdeployment", - startTime: convertToTime(1517867603000), - endTime: convertToTime(1517867643000), - expectStart: 1517867612000, - expectEnd: 1517867613000, - expectPodUIDs: []string{ - "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468", - "447b7d6f-7072-4e9a-8cba-7e29c2f53761", - }, - limit: 10, - metricsInput: defaultMetricsInput, -} - -func convertToTime(unixMillis int64) time.Time { - return time.Unix(0, unixMillis*int64(time.Millisecond)) -} - -func TestGetSpace(t *testing.T) { - testCases := []*spaceTestData{ - defaultSpaceTestData, - { - testName: "Empty List", - spaceName: "mySpace", - cassetteName: "getspace-empty-bc", - }, - { - testName: "Wrong List", - spaceName: "mySpace", - cassetteName: "getspace-wrong-list", - shouldFail: true, - }, - { - testName: "No Items", - spaceName: "mySpace", - cassetteName: "getspace-no-items", - shouldFail: true, - }, - { - testName: "Not Object", - spaceName: "mySpace", - cassetteName: "getspace-not-object", - shouldFail: true, - }, - { - testName: "No Metadata", - spaceName: "mySpace", - cassetteName: "getspace-no-metadata", - shouldFail: true, - }, - { - testName: "No Name", - spaceName: "mySpace", - cassetteName: "getspace-no-name", - shouldFail: true, - }, - { - testName: "Two Apps One Deployed", - spaceName: "mySpace", // Test two BCs, but only one DC - cassetteName: "getspace-two-apps-one-deploy", - appTestData: map[string]*appTestData{ - "myApp": defaultAppTestData, - "myOtherApp": { - spaceName: "mySpace", - appName: "myOtherApp", - }, - }, - }, - { - testName: "Two Apps Both Deployed", - spaceName: "mySpace", // Test two deployed applications, with two environments - cassetteName: "getspace-two-apps-two-deploy", - appTestData: map[string]*appTestData{ - "myApp": { - spaceName: "mySpace", - appName: "myApp", - deployTestData: map[string]*deployTestData{ - "run": { - spaceName: "mySpace", - appName: "myApp", - envName: "run", - expectVersion: "1.0.2", - expectPodStatus: [][]string{ - {"Running", "2"}, - }, - expectPodsTotal: 2, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myDeploy-1?tab=logs", - expectAppURL: "http://myDeploy-my-run.example.com", - }, - "stage": { - spaceName: "mySpace", - appName: "myApp", - envName: "stage", - expectVersion: "1.0.3", - expectPodStatus: [][]string{ - {"Running", "1"}, - {"Terminating", "1"}, - }, - expectPodsTotal: 2, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectConsoleURL: "http://console.myCluster/console/project/my-stage", - expectLogURL: "http://console.myCluster/console/project/my-stage/browse/rc/myDeploy-1?tab=logs", - }, - }, - }, - "myOtherApp": { - spaceName: "mySpace", - appName: "myOtherApp", - deployTestData: map[string]*deployTestData{ - "run": { - spaceName: "mySpace", - appName: "myOtherApp", - envName: "run", - expectVersion: "1.0.1", - expectPodStatus: [][]string{ - {"Running", "1"}, - }, - expectPodsTotal: 1, - expectPodsQuotaCpucores: 0.488, - expectPodsQuotaMemory: 262144000, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myOtherDeploy-1?tab=logs", - expectAppURL: "http://myOtherDeploy-my-run.example.com", - }, - }, - }, - }, - }, - { - testName: "BC List Error", - spaceName: "mySpace", - cassetteName: "getspace-bc-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - space, err := kc.GetSpace(testCase.spaceName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - require.NotNil(t, space, "Space is nil") - require.NotNil(t, space.Attributes, "Space attributes are nil") - require.Equal(t, testCase.spaceName, space.Attributes.Name, "Space name is incorrect") - require.NotNil(t, space.Attributes.Applications, "Applications are nil") - require.Equal(t, len(testCase.appTestData), len(space.Attributes.Applications), "Wrong number of applications") - for _, app := range space.Attributes.Applications { - var appInput *appTestData - if app != nil { - appInput = testCase.appTestData[app.Attributes.Name] - require.NotNil(t, appInput, "Unknown app: "+app.Attributes.Name) - } - verifyApplication(app, appInput, t) - } - } - }) - } -} - -func TestGetApplication(t *testing.T) { - testCases := []*appTestData{ - defaultAppTestData, - { - testName: "Two Environments", - spaceName: "mySpace", - appName: "myApp", - deployTestData: map[string]*deployTestData{ - "run": defaultDeployTestData, - "stage": { - spaceName: "mySpace", - appName: "myApp", - envName: "stage", - expectVersion: "1.0.3", - expectPodStatus: [][]string{ - {"Running", "1"}, - {"Terminating", "1"}, - }, - expectPodsTotal: 2, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectConsoleURL: "http://console.myCluster/console/project/my-stage", - expectLogURL: "http://console.myCluster/console/project/my-stage/browse/rc/myDeploy-1?tab=logs", - }, - }, - cassetteName: "getapplication", - }, - { - testName: "No Pods", - spaceName: "mySpace", // Test deployment with no pods - appName: "myOtherApp", - deployTestData: map[string]*deployTestData{ - "run": { - envName: "run", - expectVersion: "1.0.1", - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myOtherDeploy-1?tab=logs", - expectAppURL: "http://myOtherDeploy-my-run.example.com", - }, - }, - cassetteName: "getapplication-nopods", - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - app, err := kc.GetApplication(testCase.spaceName, testCase.appName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - verifyApplication(app, testCase, t) - } - }) - } -} - -func TestGetDeployment(t *testing.T) { - testCases := []*deployTestData{ - defaultDeployTestData, - { - testName: "Bad Environment", - spaceName: "mySpace", - appName: "myApp", - envName: "doesNotExist", - cassetteName: "getdeployment", - shouldFail: true, - }, - { - // Verifies that a newer scaled down deployment is favoured over - // an older one with replicas and an even newer deployment that failed - testName: "Scaled Down", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - expectVersion: "1.0.2", - expectPodStatus: [][]string{}, - expectPodsTotal: 0, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myDeploy-2?tab=logs", - expectAppURL: "http://myDeploy-my-run.example.com", - // Contains RCs in ascending deployment version: - // 1. Visible 2. Scaled-down "active" 3. Failed - cassetteName: "getdeployment-scaled-down", - }, - { - // Tests handling of a deployment config with missing space label - // FIXME When our workaround is no longer needed, we should expect - // an error - testName: "No Space Label", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - expectVersion: "1.0.2", - expectPodStatus: [][]string{ - {"Running", "2"}, - }, - expectPodsTotal: 2, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myDeploy-1?tab=logs", - expectAppURL: "http://myDeploy-my-run.example.com", - cassetteName: "getdeployment-nospace", - }, - { - // Tests handling of a deployment config with a space label - // different from the argument passed to GetDeployment - // FIXME When our workaround is no longer needed, we should expect - // an error - testName: "Wrong Space Label", - spaceName: "myWrongSpace", - appName: "myApp", - envName: "run", - expectVersion: "1.0.2", - expectPodStatus: [][]string{ - {"Running", "2"}, - }, - expectPodsTotal: 2, - expectPodsQuotaCpucores: 0.976, - expectPodsQuotaMemory: 524288000, - expectConsoleURL: "http://console.myCluster/console/project/my-run", - expectLogURL: "http://console.myCluster/console/project/my-run/browse/rc/myDeploy-1?tab=logs", - expectAppURL: "http://myDeploy-my-run.example.com", - cassetteName: "getdeployment-wrongspace", - }, - { - testName: "Build List Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-build-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "DC Get Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-dc-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "RC List Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-rc-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "Pod List Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-pod-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "Service List Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-svc-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "Route List Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "getdeployment-route-error", - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - dep, err := kc.GetDeployment(testCase.spaceName, testCase.appName, testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - verifyDeployment(dep, testCase, t) - } - }) - } -} - -func TestScaleDeployment(t *testing.T) { - testCases := []struct { - testName string - spaceName string - appName string - envName string - expectPutURLs map[string]struct{} - cassetteName string - newReplicas int - oldReplicas int - shouldFail bool - errorChecker func(error) (bool, error) - }{ - { - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "scaledeployment", - expectPutURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale": {}, - }, - newReplicas: 3, - oldReplicas: 2, - }, - { - testName: "Zero Replicas", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "scaledeployment-zero", - expectPutURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale": {}, - }, - newReplicas: 1, - oldReplicas: 0, - }, - { - testName: "Scale Get Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "scaledeployment-get-error", - expectPutURLs: map[string]struct{}{}, - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "Scale Put Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "scaledeployment-put-error", - expectPutURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale": {}, - }, - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - r.SetMatcher(func(actual *http.Request, expected cassette.Request) bool { - if cassette.DefaultMatcher(actual, expected) { - // Check scale request body when sending PUT - if actual.Method == "PUT" { - var buf bytes.Buffer - reqBody := actual.Body - _, err := buf.ReadFrom(reqBody) - require.NoError(t, err, "Error reading request body") - defer reqBody.Close() - - // Mark interaction as seen - reqURL := actual.URL.String() - _, pres := testCase.expectPutURLs[reqURL] - require.True(t, pres, "Unexpected PUT request %s", reqURL) - delete(testCase.expectPutURLs, reqURL) - - // Check spec/replicas modified correctly - var scaleOutput map[string]interface{} - err = json.Unmarshal(buf.Bytes(), &scaleOutput) - require.NoError(t, err, "Request body must be JSON object") - spec, ok := scaleOutput["spec"].(map[string]interface{}) - require.True(t, ok, "Spec property is missing or invalid") - newReplicas, ok := spec["replicas"].(float64) - require.True(t, ok, "Replicas property is missing or invalid") - require.Equal(t, testCase.newReplicas, int(newReplicas), "Wrong modified number of replicas") - - // Replace body - actual.Body = ioutil.NopCloser(&buf) - } - return true - } - return false - }) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - old, err := kc.ScaleDeployment(testCase.spaceName, testCase.appName, testCase.envName, testCase.newReplicas) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - require.NotNil(t, old, "Previous replicas are nil") - require.Equal(t, testCase.oldReplicas, *old, "Wrong number of previous replicas") - } - - // Check we saw all expected PUT requests - require.Empty(t, testCase.expectPutURLs, "Not all PUT requests sent: %v", testCase.expectPutURLs) - }) - } -} - -func TestDeleteDeployment(t *testing.T) { - // DeleteOptions do not change - policy := metav1.DeletePropagationForeground - expectOpts := metav1.DeleteOptions{ - TypeMeta: metav1.TypeMeta{ - Kind: "DeleteOptions", - APIVersion: "v1", - }, - PropagationPolicy: &policy, - } - - testCases := []struct { - testName string - spaceName string - appName string - envName string - cassetteName string - expectDeleteURLs map[string]struct{} - shouldFail bool - errorChecker func(error) (bool, error) - }{ - { - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "Bad Environment", - spaceName: "mySpace", - appName: "myApp", - envName: "doesNotExist", - cassetteName: "deletedeployment", - expectDeleteURLs: map[string]struct{}{}, - shouldFail: true, - }, - { - // FIXME When our workaround is no longer needed, we should expect - // an error - testName: "Wrong Space", - spaceName: "otherSpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-wrongspace", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "No Routes", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-noroutes", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "List Routes Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-get-routes-error", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "Delete Routes Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-badroutes", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "No Services", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-noservices", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - }, - }, - { - testName: "List Services Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-get-svc-error", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - }, - }, - { - testName: "Delete Services Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-badservices", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - }, - { - testName: "No DeploymentConfig", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-nodc", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "Get DC Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-get-dc-error", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - }, - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - testName: "Delete DC Error", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-delete-dc-error", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy": {}, - }, - shouldFail: true, - errorChecker: errors.IsBadParameterError, - }, - { - // Tests failure to map application name to OpenShift resources - // falls back to app name - testName: "No Builds", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "deletedeployment-nobuilds", - expectDeleteURLs: map[string]struct{}{ - "http://api.myCluster/oapi/v1/namespaces/my-run/routes/myApp": {}, - "http://api.myCluster/api/v1/namespaces/my-run/services/myApp": {}, - "http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myApp": {}, - }, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - r.SetMatcher(func(actual *http.Request, expected cassette.Request) bool { - if cassette.DefaultMatcher(actual, expected) { - // Check request body when sending DELETE - if actual.Method == "DELETE" { - var buf bytes.Buffer - reqBody := actual.Body - _, err := buf.ReadFrom(reqBody) - require.NoError(t, err, "Error reading request body") - defer reqBody.Close() - - // Mark interaction as seen - reqURL := actual.URL.String() - _, pres := testCase.expectDeleteURLs[reqURL] - require.True(t, pres, "Unexpected DELETE request %s", reqURL) - delete(testCase.expectDeleteURLs, reqURL) - - // Check delete options are correct - var deleteOutput metav1.DeleteOptions - err = json.Unmarshal(buf.Bytes(), &deleteOutput) - require.NoError(t, err, "Request body must be DeleteOptions") - require.Equal(t, expectOpts, deleteOutput, "DeleteOptions do not match") - - // Replace body - actual.Body = ioutil.NopCloser(&buf) - } - return true - } - return false - }) - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - err = kc.DeleteDeployment(testCase.spaceName, testCase.appName, testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - } - - // Check we saw all expected DELETE requests - require.Empty(t, testCase.expectDeleteURLs, "Not all DELETE requests sent: %v", testCase.expectDeleteURLs) - }) - } -} - -func TestGetDeploymentStats(t *testing.T) { - testCases := []*deployStatsTestData{ - defaultDeployStatsTestData, - { - testName: "Bad Environment", - spaceName: "mySpace", - appName: "myApp", - envName: "doesNotExist", - cassetteName: "getdeployment", - metricsInput: defaultMetricsInput, - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - fixture.metricsInput = testCase.metricsInput - kc := getDefaultKubeClient(fixture, r.Transport, t) - - stats, err := kc.GetDeploymentStats(testCase.spaceName, testCase.appName, testCase.envName, testCase.startTime) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - - require.NotNil(t, stats, "GetDeploymentStats returned nil") - result := fixture.metrics - require.NotNil(t, result, "Metrics API not called") - - // Check each metric type - require.NotNil(t, stats.Attributes, "Stat attributes are nil") - verifyNumberTuple(testCase.metricsInput.cpu[0], stats.Attributes.Cores, t, "CPU") - verifyMetricsParams(testCase, result.cpuParams, t, "CPU metrics") - verifyNumberTuple(testCase.metricsInput.memory[0], stats.Attributes.Memory, t, "memory") - verifyMetricsParams(testCase, result.memParams, t, "Memory metrics") - verifyNumberTuple(testCase.metricsInput.netTx[0], stats.Attributes.NetTx, t, "network sent") - verifyMetricsParams(testCase, result.netTxParams, t, "Network sent metrics") - verifyNumberTuple(testCase.metricsInput.netRx[0], stats.Attributes.NetRx, t, "network received") - verifyMetricsParams(testCase, result.netRxParams, t, "Network received metrics") - } - }) - } -} - -func verifyNumberTuple(expected *app.TimedNumberTuple, actual *app.TimedNumberTuple, t *testing.T, metricName string) { - require.NotNil(t, actual, "%s metric is nil", metricName) - require.InDelta(t, *expected.Time, *actual.Time, fltDelta, "Incorrect %s timestamp", metricName) - require.InDelta(t, *expected.Value, *actual.Value, fltDelta, "Incorrect %s value", metricName) -} - -func TestGetDeploymentStatSeries(t *testing.T) { - testCases := []*deployStatsTestData{ - defaultDeployStatsTestData, - { - testName: "Bad Environment", - spaceName: "mySpace", - appName: "myApp", - envName: "doesNotExist", - metricsInput: defaultMetricsInput, - cassetteName: "getdeployment", - shouldFail: true, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - fixture.metricsInput = testCase.metricsInput - kc := getDefaultKubeClient(fixture, r.Transport, t) - - stats, err := kc.GetDeploymentStatSeries(testCase.spaceName, testCase.appName, testCase.envName, - testCase.startTime, testCase.endTime, testCase.limit) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - - require.NotNil(t, stats, "GetDeploymentStats returned nil") - result := fixture.metrics - require.NotNil(t, result, "Metrics API not called") - - // Check each metric type - verifyNumberTuples(testCase.metricsInput.cpu, stats.Cores, t, "CPU") - verifyMetricsParams(testCase, result.cpuParams, t, "CPU metrics") - verifyNumberTuples(testCase.metricsInput.memory, stats.Memory, t, "memory") - verifyMetricsParams(testCase, result.memParams, t, "Memory metrics") - verifyNumberTuples(testCase.metricsInput.netTx, stats.NetTx, t, "network sent") - verifyMetricsParams(testCase, result.netTxParams, t, "Network sent metrics") - verifyNumberTuples(testCase.metricsInput.netRx, stats.NetRx, t, "network received") - verifyMetricRangeParams(testCase, result.netRxParams, t, "Network received metrics") - - // Check time range - require.Equal(t, testCase.expectStart, int64(*stats.Start), "Incorrect start time") - require.Equal(t, testCase.expectEnd, int64(*stats.End), "Incorrect end time") - } - }) - } -} - -func verifyNumberTuples(expected []*app.TimedNumberTuple, actual []*app.TimedNumberTuple, t *testing.T, metricName string) { - require.Equal(t, len(expected), len(actual), "Wrong number of %s metrics", metricName) - for idx := range expected { - verifyNumberTuple(expected[idx], actual[idx], t, metricName) - } -} - -func verifyMetricsParams(testCase *deployStatsTestData, params *metricsHolder, t *testing.T, - metricName string) { - require.Equal(t, testCase.envNS, params.namespace, metricName+" called with wrong namespace") - require.Equal(t, testCase.startTime, params.startTime, metricName+" called with wrong start time") - - // Check each method called with expected pods - podUIDs := make([]string, len(params.pods)) - for idx, pod := range params.pods { - podUIDs[idx] = string(pod.UID) - } - require.ElementsMatch(t, testCase.expectPodUIDs, podUIDs, metricName+" called with unexpected pods") -} - -func verifyMetricRangeParams(testCase *deployStatsTestData, params *metricsHolder, t *testing.T, - metricName string) { - verifyMetricsParams(testCase, params, t, metricName) - require.Equal(t, testCase.endTime, params.endTime, metricName+" called with wrong end time") - require.Equal(t, testCase.limit, params.limit, metricName+" called with wrong limit") -} - -func verifyApplication(app *app.SimpleApp, testCase *appTestData, t *testing.T) { - require.NotNil(t, app, "Application is nil") - require.NotNil(t, app.Attributes, "Application attributes are nil") - require.Equal(t, testCase.appName, app.Attributes.Name, "Incorrect application name") - require.NotNil(t, app.Attributes.Deployments, "Deployments are nil") - require.Equal(t, len(testCase.deployTestData), len(app.Attributes.Deployments), "Wrong number of deployments") - for _, dep := range app.Attributes.Deployments { - var depInput *deployTestData - if dep != nil { - depInput = testCase.deployTestData[dep.Attributes.Name] - require.NotNil(t, depInput, "Unknown env: "+dep.Attributes.Name) - } - verifyDeployment(dep, depInput, t) - } -} - -func verifyDeployment(dep *app.SimpleDeployment, testCase *deployTestData, t *testing.T) { - require.NotNil(t, dep, "Deployment is nil") - require.NotNil(t, dep.Attributes, "Deployment attributes are nil") - require.Equal(t, testCase.envName, dep.Attributes.Name, "Incorrect deployment name") - require.NotNil(t, dep.Attributes.Version, "Deployments version is nil") - require.Equal(t, testCase.expectVersion, *dep.Attributes.Version, "Incorrect deployment version") - - // Check pod status and total - require.NotNil(t, dep.Attributes.Pods, "Pods are nil") - require.ElementsMatch(t, testCase.expectPodStatus, dep.Attributes.Pods, "Incorrect pod status %v", dep.Attributes.Pods) - require.NotNil(t, dep.Attributes.PodTotal, "Pod total is nil") - require.Equal(t, testCase.expectPodsTotal, *dep.Attributes.PodTotal, "Wrong number of total pods") - - // Check pod quota and total - require.NotNil(t, dep.Attributes.PodsQuota, "PodsQuota is nil") - require.NotNil(t, dep.Attributes.PodsQuota.Cpucores, "PodsQuota.Cpucores is nil") - require.NotNil(t, dep.Attributes.PodsQuota.Memory, "PodsQuota.Memory is nil") - - require.Equal(t, testCase.expectPodsQuotaCpucores, *dep.Attributes.PodsQuota.Cpucores, "Incorrect pods quota cpucores") - require.Equal(t, testCase.expectPodsQuotaMemory, *dep.Attributes.PodsQuota.Memory, "Incorrect pods quota cpucores") - - // Check related URLs - require.NotNil(t, dep.Links, "Related URLs are nil") - require.NotNil(t, dep.Links.Console, "Console URL is nil") - require.Equal(t, testCase.expectConsoleURL, *dep.Links.Console, "Console URL is incorrect") - if len(testCase.expectAppURL) == 0 { - require.Nil(t, dep.Links.Application, "Application URL is not nil") - } else { - require.NotNil(t, dep.Links.Application, "Application URL is nil") - require.Equal(t, testCase.expectAppURL, *dep.Links.Application, "Application URL is incorrect") - } - if len(testCase.expectLogURL) == 0 { - require.Nil(t, dep.Links.Application, "Logs URL is not nil") - } else { - require.NotNil(t, dep.Links.Logs, "Logs URL is nil") - require.Equal(t, testCase.expectLogURL, *dep.Links.Logs, "Logs URL is incorrect") - } -} - -func TestGetDeploymentPodQuota(t *testing.T) { - testCases := []struct { - testName string - spaceName string - appName string - envName string - cassetteName string - expectedCPU float64 - expectedMem float64 - errorChecker func(error) (bool, error) - shouldFail bool - }{ - { - testName: "Basic", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "podquota", - expectedCPU: 1, - expectedMem: 262144000, - }, - { - testName: "Bad Environment", - spaceName: "mySpace", - appName: "myApp", - envName: "doesNotExist", - cassetteName: "podquota", - shouldFail: true, - }, - { - testName: "Bad Deployment", - spaceName: "mySpace", - appName: "myApp", - envName: "stage", - cassetteName: "podquota", - shouldFail: true, - errorChecker: errors.IsNotFoundError, - }, - { - testName: "Multi Container", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "podquota-multicontainer", - expectedCPU: 1.7, - expectedMem: 799014912, - }, - { - testName: "No Resources", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "podquota-noresources", - expectedCPU: 1, - expectedMem: 536870912, - }, - { - testName: "Empty Resources", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "podquota-emptyresources", - expectedCPU: 1, - expectedMem: 536870912, - }, - { - testName: "Split Limit Range", - spaceName: "mySpace", - appName: "myApp", - envName: "run", - cassetteName: "podquota-split", - expectedCPU: 1, - expectedMem: 262144000, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestJSON + testCase.cassetteName) - require.NoError(t, err, "Failed to open cassette") - defer r.Stop() - - fixture := &testFixture{} - kc := getDefaultKubeClient(fixture, r.Transport, t) - - quota, err := kc.GetDeploymentPodQuota(testCase.spaceName, testCase.appName, testCase.envName) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - if testCase.errorChecker != nil { - matches, _ := testCase.errorChecker(err) - require.True(t, matches, "Error or cause must be the expected type") - } - } else { - require.NoError(t, err, "Unexpected error occurred") - require.NotNil(t, quota.Limits.Cpucores, "CPU limits must be non-nil") - require.InDelta(t, testCase.expectedCPU, *quota.Limits.Cpucores, fltDelta, "CPU limits are incorrect") - require.NotNil(t, quota.Limits.Memory, "Memory limits must be non-nil") - require.InDelta(t, testCase.expectedMem, *quota.Limits.Memory, fltDelta, "Memory limits are incorrect") - } - }) - } -} - -// code for test URL provider - -func (up *testURLProvider) GetAPIToken() (*string, error) { - return &up.apiToken, nil -} - -func (up *testURLProvider) GetMetricsToken(envNS string) (*string, error) { - return &up.clusterToken, nil -} - -func (up *testURLProvider) GetAPIURL() (*string, error) { - return &up.apiURL, nil -} - -func (up *testURLProvider) GetConsoleURL(envNS string) (*string, error) { - path := fmt.Sprintf("console/project/%s", envNS) - // Replace "api" prefix with "console" and append path - consoleURL, err := modifyURL(up.clusterURL, "console", path) - if err != nil { - return nil, err - } - consoleURLStr := consoleURL.String() - return &consoleURLStr, nil -} - -func (up *testURLProvider) GetLoggingURL(envNS string, deployName string) (*string, error) { - consoleURL, err := up.GetConsoleURL(envNS) - if err != nil { - return nil, err - } - logURL := fmt.Sprintf("%s/browse/rc/%s?tab=logs", *consoleURL, deployName) - return &logURL, nil -} - -func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { - metricsURL, err := modifyURL(up.clusterURL, "metrics", "") - if err != nil { - return nil, err - } - mu := metricsURL.String() - return &mu, nil -} - -func (up *testURLProvider) GetEnvironmentMapping() map[string]string { - return map[string]string{ - "user": "myNamespace", - "test": "myNamespace", - "run": "my-run", - "stage": "my-stage", - "che": "my-che", - "jenkins": "my-jenkins", - } -} - -func modifyURL(apiURLStr string, prefix string, path string) (*url.URL, error) { - // Parse as URL to give us easy access to the hostname - apiURL, err := url.Parse(apiURLStr) - if err != nil { - return nil, err - } - - // Get the hostname (without port) and replace api prefix with prefix arg - apiHostname := apiURL.Hostname() - if !strings.HasPrefix(apiHostname, "api") { - return nil, errs.Errorf("cluster URL does not begin with \"api\": %s", apiHostname) - } - newHostname := strings.Replace(apiHostname, "api", prefix, 1) - // Construct URL using just scheme from API URL, modified hostname and supplied path - newURL := &url.URL{ - Scheme: apiURL.Scheme, - Host: newHostname, - Path: path, - } - return newURL, nil -} - -// Types of namespaces where the user does not deploy applications -var internalNamespaceTypes = map[string]struct{}{"user": {}, "che": {}, "jenkins": {}} - -// CanDeploy returns true if the environment type provided can be deployed to as part of a pipeline -func (up *testURLProvider) CanDeploy(envType string) bool { - _, pres := internalNamespaceTypes[envType] - return !pres -} - -type testKube struct { - kubernetes.KubeRESTAPI // Allows us to only implement methods we'll use - getter *testKubeGetter - eventsHolder *testEvents - configMapHolder *testConfigMap -} - -type testKubeGetter struct { - result *testKube - eventsInput *eventsInput -} - -func (getter *testKubeGetter) GetKubeRESTAPI(config *kubernetes.KubeClientConfig) (kubernetes.KubeRESTAPI, error) { - mock := new(testKube) - // Doubly-linked for access by tests - mock.getter = getter - getter.result = mock - return mock, nil -} - -type eventsInput struct { - listInput *v1.EventList - watchInput *v1.EventList -} - -type testEvents struct { - corev1.EventInterface - namespace string - listInput *v1.EventList - watchInput *v1.EventList - watcher *watch.FakeWatcher -} - -func (tk *testKube) Events(ns string) corev1.EventInterface { - result := &testEvents{ - namespace: ns, - listInput: tk.getter.eventsInput.listInput, - watchInput: tk.getter.eventsInput.watchInput, - } - tk.eventsHolder = result - return result -} - -func (ev *testEvents) List(options metav1.ListOptions) (*v1.EventList, error) { - result := ev.listInput - return result, nil -} - -func (ev *testEvents) Watch(options metav1.ListOptions) (watch.Interface, error) { - result := watch.NewFake() - ev.watcher = result - - go func(watcher *watch.FakeWatcher) { - for _, item := range ev.watchInput.Items { - // Add is blocking so run in a go routine - go func(item v1.Event) { - watcher.Add(&item) - }(item) - } - }(result) - - return result, nil -} - -type testConfigMap struct { - corev1.ConfigMapInterface - input *configMapInput - namespace string - configMap *v1.ConfigMap -} - -type configMapInput struct { - data map[string]string - labels map[string]string -} - -func (tk *testKube) ConfigMaps(ns string) corev1.ConfigMapInterface { - input := defaultConfigMapInput - result := &testConfigMap{ - input: input, - namespace: ns, - } - tk.configMapHolder = result - return result -} - -var defaultConfigMapInput *configMapInput = &configMapInput{ - labels: map[string]string{"provider": "fabric8"}, - data: map[string]string{ - "run": "name: Run\nnamespace: my-run\norder: 1", - "stage": "name: Stage\nnamespace: my-stage\norder: 0", - }, -} - -func (cm *testConfigMap) Get(name string, options metav1.GetOptions) (*v1.ConfigMap, error) { - result := &v1.ConfigMap{ - Data: cm.input.data, - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Labels: cm.input.labels, - }, - } - cm.configMap = result - return result, nil -} - -func TestWatchEventsInNamespace(t *testing.T) { - testCases := []struct { - testName string - eventsInput *eventsInput - }{ - { - testName: "List Events", - eventsInput: &eventsInput{ - listInput: &v1.EventList{ - Items: []v1.Event{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-one", - ResourceVersion: "0", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-two", - ResourceVersion: "1", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-three", - ResourceVersion: "2", - }, - }, - }, - }, - watchInput: &v1.EventList{ - Items: []v1.Event{}, - }, - }, - }, - { - testName: "Watch Events", - eventsInput: &eventsInput{ - listInput: &v1.EventList{ - Items: []v1.Event{}, - }, - watchInput: &v1.EventList{ - Items: []v1.Event{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-one", - ResourceVersion: "3", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-two", - ResourceVersion: "4", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-three", - ResourceVersion: "5", - }, - }, - }, - }, - }, - }, - { - testName: "List and Watch Events", - eventsInput: &eventsInput{ - listInput: &v1.EventList{ - Items: []v1.Event{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-one", - ResourceVersion: "0", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-two", - ResourceVersion: "1", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "list-three", - ResourceVersion: "2", - }, - }, - }, - }, - watchInput: &v1.EventList{ - Items: []v1.Event{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-one", - ResourceVersion: "3", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-two", - ResourceVersion: "4", - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "watch-three", - ResourceVersion: "5", - }, - }, - }, - }, - }, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - kubeGetter := &testKubeGetter{} - kubeGetter.eventsInput = testCase.eventsInput - - config := &kubernetes.KubeClientConfig{ - BaseURLProvider: getDefaultURLProvider("http://api.myCluster", "myToken"), - UserNamespace: "myNamespace", - KubeRESTAPIGetter: kubeGetter, - } - - kc, err := kubernetes.NewKubeClient(config) - - require.NoError(t, err) - - store, stopCh := kc.WatchEventsInNamespace("test-namespace") - defer close(stopCh) - - validateEventsItems(t, testCase.eventsInput.listInput, store) - validateEventsItems(t, testCase.eventsInput.watchInput, store) - }) - } -} - -func checkEventItems(t *testing.T, eventList *v1.EventList, store *cache.FIFO) { - for _, item := range eventList.Items { - _, exists, _ := store.Get(item) - if !exists { - t.Fatalf("Expected %s but did not exist", item.ObjectMeta.Name) - } - } -} - -func validateEventsItems(t *testing.T, eventList *v1.EventList, store *cache.FIFO) { - // The kubernetes Reflector uses Store.Replace to set the list - // The kubernetes FIFO implementation does not guarantee the - // order of the results when using Replace - // For validation, just check that the recieved item exists in the list - // of expected items - - for range eventList.Items { - actualItem, err := store.Pop(cache.PopProcessFunc(func(item interface{}) error { - return nil - })) - if err != nil { - t.Fatalf(err.Error()) - } - item, ok := actualItem.(*v1.Event) - - if !ok { - t.Fatalf("Expected object of type *v1.Event but was %T", actualItem) - } - - found := false - for _, expectedItem := range eventList.Items { - if expectedItem.ObjectMeta.Name == item.ObjectMeta.Name { - found = true - } - } - - if !found { - t.Fatalf("Recieved %s but was not in the list of expected items", item.ObjectMeta.Name) - } - } -} diff --git a/kubernetes/deployments_kubeclient_whitebox_test.go b/kubernetes/deployments_kubeclient_whitebox_test.go deleted file mode 100644 index f479430e71..0000000000 --- a/kubernetes/deployments_kubeclient_whitebox_test.go +++ /dev/null @@ -1,312 +0,0 @@ -package kubernetes - -import ( - "net/http" - "reflect" - "testing" - "time" - - "github.com/dnaeon/go-vcr/recorder" - "github.com/stretchr/testify/require" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/pkg/api/v1" -) - -// Path to test resources -const pathToTestInput = "../test/kubernetes/" - -func TestGetMostRecentByDeploymentVersion(t *testing.T) { - testCases := []struct { - testName string - rcs map[string]*v1.ReplicationController - expectedRCName string - shouldFail bool - }{ - { - testName: "Basic", - rcs: map[string]*v1.ReplicationController{ - "world": createRC("world", "1"), - "hello": createRC("hello", "2"), - }, - expectedRCName: "hello", - }, - { - testName: "Empty", - rcs: map[string]*v1.ReplicationController{}, - }, - { - testName: "Version Not Number", - rcs: map[string]*v1.ReplicationController{ - "world": createRC("world", "1"), - "hello": createRC("hello", "Not a number"), - }, - shouldFail: true, - }, - { - testName: "First Without Version", - rcs: map[string]*v1.ReplicationController{ - "world": createRC("world", ""), - "hello": createRC("hello", "2"), - }, - expectedRCName: "hello", - }, - { - testName: "Second Without Version", - rcs: map[string]*v1.ReplicationController{ - "world": createRC("world", "1"), - "hello": createRC("hello", ""), - }, - expectedRCName: "world", - }, - { - testName: "Both Without Version", - rcs: map[string]*v1.ReplicationController{ - "hello": createRC("hello", ""), - "world": createRC("world", ""), - }, - expectedRCName: "world", - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - result, err := getMostRecentByDeploymentVersion(testCase.rcs) - if testCase.shouldFail { - require.Error(t, err, "Expected an error") - } else { - require.NoError(t, err, "Unexpected error occurred") - if len(testCase.expectedRCName) == 0 { - require.Nil(t, result, "Expected nil result") - } else { - require.NotNil(t, result, "Expected result to not be nil") - require.Equal(t, testCase.expectedRCName, result.Name) - } - } - }) - } -} - -func createRC(name string, version string) *v1.ReplicationController { - annotations := make(map[string]string) - if len(version) > 0 { - annotations["openshift.io/deployment-config.latest-version"] = version - } - return &v1.ReplicationController{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Annotations: annotations, - }, - } -} - -func TestGetKubeRESTAPI(t *testing.T) { - config := getKubeConfigWithTimeout() - getter := &defaultGetter{} - restAPI, err := getter.GetKubeRESTAPI(config) - require.NoError(t, err, "Error occurred getting Kubernetes REST API") - - // Get config from underlying kubeAPIClient struct - client, ok := restAPI.(*kubeAPIClient) - require.True(t, ok, "GetKubeRESTAPI returned %s instead of *kubeAPIClient", reflect.TypeOf(client)) - restConfig := client.restConfig - require.NotNil(t, restConfig, "rest.Config was not stored in kubeAPIClient") - apiURL, err := config.BaseURLProvider.GetAPIURL() - require.NoError(t, err, "Error getting API URL") - require.NotNil(t, apiURL) - apiToken, err := config.BaseURLProvider.GetAPIToken() - require.NoError(t, err, "Error getting API Token") - require.NotNil(t, apiToken) - require.Equal(t, *apiURL, restConfig.Host, "Host config is not set to cluster URL") - require.Equal(t, *apiToken, restConfig.BearerToken, "Bearer tokens do not match") - require.Equal(t, config.Timeout, restConfig.Timeout, "Timeouts do not match") - require.Equal(t, config.Transport, restConfig.Transport, "HTTP Transports do not match") -} - -func TestGetOpenShiftRESTAPI(t *testing.T) { - config := getKubeConfigWithTimeout() - getter := &defaultGetter{} - restAPI, err := getter.GetOpenShiftRESTAPI(config) - require.NoError(t, err, "Error occurred getting OpenShift REST API") - - // Check that fields are correct in underlying openShiftAPIClient struct - client, ok := restAPI.(*openShiftAPIClient) - require.True(t, ok, "GetOpenShiftRESTAPI returned %s instead of *openShiftAPIClient", reflect.TypeOf(client)) - require.Equal(t, config, client.config, "KubeClientConfig in OpenShift client does not match") - require.NotNil(t, client.httpClient, "No HTTP client present in OpenShift client") - require.Equal(t, config.Timeout, client.httpClient.Timeout, "Timeouts do not match") - require.Equal(t, config.Transport, client.httpClient.Transport, "HTTP Transports do not match") -} - -func TestGetDeploymentConfigNameForApp(t *testing.T) { - testCases := []struct { - testName string - appName string - expectedDCName string - shouldFail bool - }{ - { - testName: "Basic", - appName: "myApp", - expectedDCName: "myDeploy", - }, - { - testName: "Not Found", - appName: "notFound", - shouldFail: true, - }, - { - testName: "Wrong List", - appName: "badList", - shouldFail: true, - }, - { - testName: "No Items", - appName: "noItems", - shouldFail: true, - }, - { - testName: "Build Not Object", - appName: "badBuild", - shouldFail: true, - }, - { - testName: "No Metadata", - appName: "noMeta", - shouldFail: true, - }, - { - testName: "No Annotations", - appName: "noAnnotations", - }, - { - testName: "No Environment Services", - appName: "noEnvServices", - }, - { - testName: "Bad Environment Services", - appName: "badEnvServices", - }, - { - testName: "Environment Services Not YAML", - appName: "badYAML", - }, - { - testName: "No Deployment Versions", - appName: "noDepVer", - }, - { - testName: "Deployment Version Not String", - appName: "badDepVer", - }, - { - testName: "Multiple Builds", - appName: "manyBuilds", - expectedDCName: "myDeploy2", - }, - { - testName: "Missing Creation Timestamp", - appName: "noDate", - }, - { - testName: "Creation Timestamp Not Date", - appName: "badDate", - shouldFail: true, - }, - { - testName: "Empty Name", - appName: "emptyKey", - }, - } - - for _, testCase := range testCases { - t.Run(testCase.testName, func(t *testing.T) { - r, err := recorder.New(pathToTestInput + "get-dc-name-for-app") - require.NoError(t, err, "Failed to open cassette") - - urlProvider := getTestURLProvider("http://api.myCluster", "myToken") - config := &KubeClientConfig{ - BaseURLProvider: urlProvider, - UserNamespace: "myNamespace", - Transport: r.Transport, - } - kcInterface, err := NewKubeClient(config) - require.NoError(t, err, "Error occurred creating KubeClient") - kc, ok := kcInterface.(*kubeClient) - require.True(t, ok, "NewKubeClient should return *kubeClient type") - - dcName, err := kc.getDeploymentConfigNameForApp("my-run", testCase.appName, "mySpace") - if testCase.shouldFail { - require.Error(t, err, "Test case expects an error from getDeploymentConfigNameForApp") - } else { - require.NoError(t, err, "getDeploymentConfigNameForApp should return without error") - // Fallback is to use application name - expectedDCName := testCase.expectedDCName - if len(expectedDCName) == 0 { - expectedDCName = testCase.appName - } - require.Equal(t, expectedDCName, dcName, "getDeploymentConfigNameForApp returned incorrect name") - } - }) - } -} - -func getKubeConfigWithTimeout() *KubeClientConfig { - urlProvider := getTestURLProvider("http://api.myCluster", "myToken") - return &KubeClientConfig{ - BaseURLProvider: urlProvider, - UserNamespace: "myNamespace", - Timeout: 30 * time.Second, - Transport: &http.Transport{}, - } -} - -type testURLProvider struct { - apiURL string - apiToken string -} - -func getTestURLProvider(baseurl string, token string) BaseURLProvider { - return &testURLProvider{ - apiURL: baseurl, - apiToken: token, - } -} - -// code for test URL provider - -func (up *testURLProvider) GetAPIToken() (*string, error) { - return &up.apiToken, nil -} - -func (up *testURLProvider) GetMetricsToken(envNS string) (*string, error) { - return &up.apiToken, nil -} - -func (up *testURLProvider) GetAPIURL() (*string, error) { - return &up.apiURL, nil -} - -func (up *testURLProvider) GetConsoleURL(envNS string) (*string, error) { - return &up.apiURL, nil -} - -func (up *testURLProvider) GetLoggingURL(envNS string, deployName string) (*string, error) { - return &up.apiURL, nil -} - -func (up *testURLProvider) GetMetricsURL(envNS string) (*string, error) { - return &up.apiURL, nil -} - -func (up *testURLProvider) GetEnvironmentMapping() map[string]string { - return map[string]string{ - "test": "myNamespace", - "run": "my-run", - "stage": "my-stage", - } -} - -func (up *testURLProvider) CanDeploy(envType string) bool { - return true -} diff --git a/kubernetes/deployments_metrics.go b/kubernetes/deployments_metrics.go deleted file mode 100644 index 0ec2e982f1..0000000000 --- a/kubernetes/deployments_metrics.go +++ /dev/null @@ -1,307 +0,0 @@ -package kubernetes - -import ( - "strings" - "time" - - "github.com/fabric8-services/fabric8-wit/app" - hawkular "github.com/hawkular/hawkular-client-go/metrics" - errs "github.com/pkg/errors" - v1 "k8s.io/client-go/pkg/api/v1" -) - -// MetricsClientConfig holds configuration data needed to create a new MetricsInterface -// with kubernetes.NewMetricsClient -type MetricsClientConfig struct { - // URL to the Kubernetes cluster's metrics server - MetricsURL string - // An authorized token to access the cluster - BearerToken string - // Provides access to the underlying Hawkular API, uses default implementation if not set - HawkularGetter -} - -type metricsClient struct { - HawkularRESTAPI -} - -// HawkularGetter has a method to access the HawkularRESTAPI interface -type HawkularGetter interface { - GetHawkularRESTAPI(config *MetricsClientConfig) (HawkularRESTAPI, error) -} - -// Metrics provides methods to obtain performance metrics of a deployed application -type Metrics interface { - GetCPUMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) - GetCPUMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) - GetMemoryMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) - GetMemoryMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) - GetNetworkSentMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) - GetNetworkSentMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) - GetNetworkRecvMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) - GetNetworkRecvMetricsRange(pods []*v1.Pod, namespace string, startTime time.Time, endTime time.Time, - limit int) ([]*app.TimedNumberTuple, error) - Close() -} - -// HawkularRESTAPI collects methods that call out to the Hawkular metrics server over the network -type HawkularRESTAPI interface { - ReadBuckets(metricType hawkular.MetricType, namespace string, - modifiers ...hawkular.Modifier) ([]*hawkular.Bucketpoint, error) - Close() -} - -// Default receiver for HawkularRESTAPI methods -type hawkularHelper struct { - client *hawkular.Client -} - -const ( - descriptorTag string = "descriptor_name" - cpuDesc string = "cpu/usage_rate" - memDesc string = "memory/usage" - netSent string = "network/tx_rate" - netRecv string = "network/rx_rate" - typeTag string = "type" - typePod string = "pod" - podIDTag string = "pod_id" -) - -// Use 1 minute duration for buckets -const bucketDuration = 1 * time.Minute - -// CPU metrics are in millicores -// See: https://github.com/openshift/origin-web-console/blob/v3.6.0/app/scripts/services/metricsCharts.js#L15 -const millicoreToCoreScale = 0.001 -const noScale = 1 - -// ensure metricsClient implements Metrics -var _ Metrics = &metricsClient{} -var _ Metrics = (*metricsClient)(nil) - -// NewMetricsClient creates a Metrics object given a configuration -func NewMetricsClient(config *MetricsClientConfig) (Metrics, error) { - // Use default implementation if no HawkularGetter is specified - if config.HawkularGetter == nil { - config.HawkularGetter = &defaultGetter{} - } - helper, err := config.GetHawkularRESTAPI(config) - if err != nil { - return nil, err - } - mc := &metricsClient{ - HawkularRESTAPI: helper, - } - - return mc, nil -} - -func (*defaultGetter) GetHawkularRESTAPI(config *MetricsClientConfig) (HawkularRESTAPI, error) { - // Hawkular client uses a hard-coded timeout of 30s. See: - // https://github.com/hawkular/hawkular-client-go/blob/3ec6f27f0d339f9aee02ee4ad545581e52b40e19/metrics/client.go#L43 - params := hawkular.Parameters{ - Url: config.MetricsURL, - Token: config.BearerToken, - } - client, err := hawkular.NewHawkularClient(params) - if err != nil { - return nil, errs.WithStack(err) - } - - helper := &hawkularHelper{ - client: client, - } - return helper, nil -} - -func (mc *metricsClient) Close() { - mc.HawkularRESTAPI.Close() -} - -func (mc *metricsClient) GetCPUMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return mc.getBucketAverage(pods, namespace, cpuDesc, startTime, millicoreToCoreScale) -} - -func (mc *metricsClient) GetCPUMetricsRange(pods []*v1.Pod, namespace string, - startTime time.Time, endTime time.Time, limit int) ([]*app.TimedNumberTuple, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, cpuDesc, startTime, endTime, limit) - if err != nil { - return nil, errs.WithStack(err) - } - - results := bucketsToTuples(buckets, millicoreToCoreScale) - return results, nil -} - -func (mc *metricsClient) GetMemoryMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return mc.getBucketAverage(pods, namespace, memDesc, startTime, noScale) -} - -func (mc *metricsClient) GetMemoryMetricsRange(pods []*v1.Pod, namespace string, - startTime time.Time, endTime time.Time, limit int) ([]*app.TimedNumberTuple, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, memDesc, startTime, endTime, limit) - if err != nil { - return nil, errs.WithStack(err) - } - - results := bucketsToTuples(buckets, noScale) - return results, nil -} - -func (mc *metricsClient) GetNetworkSentMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return mc.getBucketAverage(pods, namespace, netSent, startTime, noScale) -} - -func (mc *metricsClient) GetNetworkSentMetricsRange(pods []*v1.Pod, namespace string, - startTime time.Time, endTime time.Time, limit int) ([]*app.TimedNumberTuple, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, netSent, startTime, endTime, limit) - if err != nil { - return nil, err - } - - results := bucketsToTuples(buckets, noScale) - return results, nil -} - -func (mc *metricsClient) GetNetworkRecvMetrics(pods []*v1.Pod, namespace string, startTime time.Time) (*app.TimedNumberTuple, error) { - return mc.getBucketAverage(pods, namespace, netRecv, startTime, noScale) -} - -func (mc *metricsClient) GetNetworkRecvMetricsRange(pods []*v1.Pod, namespace string, - startTime time.Time, endTime time.Time, limit int) ([]*app.TimedNumberTuple, error) { - buckets, err := mc.getBucketsInRange(pods, namespace, netRecv, startTime, endTime, limit) - if err != nil { - return nil, err - } - - results := bucketsToTuples(buckets, noScale) - return results, nil -} - -func bucketsToTuples(buckets []*hawkular.Bucketpoint, scale float64) []*app.TimedNumberTuple { - results := make([]*app.TimedNumberTuple, len(buckets)) - for idx, bucket := range buckets { - results[idx] = bucketToTuple(bucket, scale) - } - return results -} - -func bucketToTuple(bucket *hawkular.Bucketpoint, scale float64) *app.TimedNumberTuple { - // Use bucket start time as timestamp for data, which is what the OSO web console uses: - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/directives/deploymentMetrics.js#L250 - bucketTimeUnix := float64(convertToUnixMillis(bucket.Start)) - scaledAvg := bucket.Avg * scale - result := &app.TimedNumberTuple{ - Value: &scaledAvg, - Time: &bucketTimeUnix, - } - return result -} - -func convertToUnixMillis(t time.Time) int64 { - return hawkular.ToUnixMilli(t) -} - -func (mc *metricsClient) getBucketAverage(pods []*v1.Pod, namespace, descTag string, - startTime time.Time, scale float64) (*app.TimedNumberTuple, error) { - result, err := mc.getLatestBucket(pods, namespace, descTag, startTime) - if err != nil { - return nil, errs.WithStack(err) - } else if result == nil { - return nil, nil - } - - tuple := bucketToTuple(result, scale) - return tuple, err -} - -func (mc *metricsClient) getLatestBucket(pods []*v1.Pod, namespace string, descTag string, - startTime time.Time) (*hawkular.Bucketpoint, error) { - // Get one bucket after the specified start time - endTime := startTime.Add(bucketDuration) - buckets, err := mc.readBuckets(pods, namespace, descTag, hawkular.StartTimeFilter(startTime), - hawkular.EndTimeFilter(endTime), hawkular.BucketsFilter(1)) - if err != nil { - return nil, errs.WithStack(err) - } else if len(buckets) == 0 { // Should have gotten at most one bucket - return nil, nil - } - return buckets[0], nil -} - -func (mc *metricsClient) getBucketsInRange(pods []*v1.Pod, namespace string, descTag string, startTime time.Time, - endTime time.Time, limit int) ([]*hawkular.Bucketpoint, error) { - // Note: returned buckets are ordered by start time - // https://github.com/hawkular/hawkular-metrics/blob/0.28.3/core/metrics-model/src/main/java/org/hawkular/metrics/model/BucketPoint.java#L70 - buckets, err := mc.readBuckets(pods, namespace, descTag, hawkular.StartTimeFilter(startTime), - hawkular.EndTimeFilter(endTime), hawkular.BucketsDurationFilter(bucketDuration)) - if err != nil { - return nil, errs.WithStack(err) - } - - // Hawkular buckets may extend beyond the requested endpoint if - // (endTime - startTime) is not evenly divisible by the bucket duration. - // https://github.com/hawkular/hawkular-metrics/blob/0.28.3/core/metrics-model/src/main/java/org/hawkular/metrics/model/Buckets.java#L156 - // - // If the end time is in the future, this bucket may be empty or have fewer - // samples than other buckets. This may create outliers in our charts. So - // we drop any buckets whose end time is greater than the requested end time - // - // For comparison, the OSO web console unconditionally drops the last bucket: - // https://github.com/openshift/origin-web-console/blob/v3.7.0/app/scripts/directives/deploymentMetrics.js#L422 - numBuckets := len(buckets) - if numBuckets > 0 { - lastBucket := buckets[numBuckets-1] - if lastBucket.End.After(endTime) { - buckets = buckets[:numBuckets-1] - numBuckets-- // Later used for limit - } - - // If number of buckets is greater than requested limit n, take newest n buckets - if limit >= 0 && numBuckets > limit { - start := numBuckets - limit - buckets = buckets[start:] - } - } - - return buckets, nil -} - -func (mc *metricsClient) readBuckets(pods []*v1.Pod, namespace string, descTag string, - filters ...hawkular.Filter) ([]*hawkular.Bucketpoint, error) { - numPods := len(pods) - if numPods == 0 { - return nil, nil - } - - // Extract UIDs from pods - podUIDs := make([]string, numPods) - for idx, pod := range pods { - podUIDs[idx] = string(pod.UID) - } - // Build Hawkular tags for query - podsForTag := strings.Join(podUIDs, "|") - tags := map[string]string{ - descriptorTag: descTag, - typeTag: typePod, - podIDTag: podsForTag, - } - - // Append other filters to those provided - filters = append(filters, hawkular.TagsFilter(tags), hawkular.StackedFilter() /* Sum of each pod */) - return mc.ReadBuckets(hawkular.Gauge, namespace, hawkular.Filters(filters...)) -} - -func (helper *hawkularHelper) ReadBuckets(metricType hawkular.MetricType, namespace string, - modifiers ...hawkular.Modifier) ([]*hawkular.Bucketpoint, error) { - // Tenant should be set to OSO project name - helper.client.Tenant = namespace - return helper.client.ReadBuckets(metricType, modifiers...) -} - -func (helper *hawkularHelper) Close() { - helper.client.Close() -} diff --git a/kubernetes/deployments_metrics_blackbox_test.go b/kubernetes/deployments_metrics_blackbox_test.go deleted file mode 100644 index 48359328d3..0000000000 --- a/kubernetes/deployments_metrics_blackbox_test.go +++ /dev/null @@ -1,402 +0,0 @@ -package kubernetes_test - -import ( - "net/http" - "net/url" - "strconv" - "strings" - "testing" - "time" - - "github.com/fabric8-services/fabric8-wit/app" - "github.com/fabric8-services/fabric8-wit/kubernetes" - hawkular "github.com/hawkular/hawkular-client-go/metrics" - "github.com/stretchr/testify/require" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - v1 "k8s.io/client-go/pkg/api/v1" -) - -type testHawkular struct { - getter *testHawkularGetter - output *testMetricsOutput -} - -type testHawkularGetter struct { - result *testHawkular - input *testMetricsInput -} - -type testMetricsInput struct { - buckets []*hawkular.Bucketpoint - pods []*v1.Pod - namespace string - startTime time.Time - endTime time.Time - limit int -} - -type testMetricsOutput struct { - metricType hawkular.MetricType - namespace string - filters url.Values - closed bool -} - -func (getter *testHawkularGetter) GetHawkularRESTAPI(config *kubernetes.MetricsClientConfig) (kubernetes.HawkularRESTAPI, error) { - helper := &testHawkular{ - getter: getter, - output: &testMetricsOutput{}, - } - getter.result = helper - return helper, nil -} - -func (helper *testHawkular) ReadBuckets(metricType hawkular.MetricType, namespace string, - modifiers ...hawkular.Modifier) ([]*hawkular.Bucketpoint, error) { - // Run modifiers on a dummy request to determine which filters were applied - req := &http.Request{ - URL: &url.URL{}, - } - for _, modifier := range modifiers { - err := modifier(req) - if err != nil { - return nil, err - } - } - helper.output.metricType = metricType - helper.output.namespace = namespace - helper.output.filters = req.URL.Query() - - buckets := helper.getter.input.buckets - return buckets, nil -} - -func (helper *testHawkular) Close() { - helper.output.closed = true -} - -var singleMetricTestCases []*testMetricsInput = []*testMetricsInput{ - { // Basic test case - buckets: []*hawkular.Bucketpoint{ - { - Avg: 5.0, - Start: hawkular.FromUnixMilli(1516301818000), - End: hawkular.FromUnixMilli(1516301878000), - }, - }, - pods: []*v1.Pod{ - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("hello"), - }, - }, - }, - namespace: "test", - startTime: hawkular.FromUnixMilli(1516301818000), - }, - { // Multiple pods - buckets: []*hawkular.Bucketpoint{ - { - Avg: 5.0, - Start: hawkular.FromUnixMilli(1516301818000), - End: hawkular.FromUnixMilli(1516301878000), - }, - }, - pods: []*v1.Pod{ - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("hello"), - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("world"), - }, - }, - }, - namespace: "test", - startTime: hawkular.FromUnixMilli(1516301818000), - }, -} - -var metricRangeTestCases []*testMetricsInput = []*testMetricsInput{ - { // Basic test case - buckets: []*hawkular.Bucketpoint{ - { - Avg: 5.0, - Start: hawkular.FromUnixMilli(1516301758000), - End: hawkular.FromUnixMilli(1516301818000), - }, - { - Avg: 72.0, - Start: hawkular.FromUnixMilli(1516301818000), - End: hawkular.FromUnixMilli(1516301878000), - }, - }, - pods: []*v1.Pod{ - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("hello"), - }, - }, - }, - namespace: "test", - startTime: hawkular.FromUnixMilli(1516301758000), - endTime: hawkular.FromUnixMilli(1516301878000), - }, - { // Multiple pods - buckets: []*hawkular.Bucketpoint{ - { - Avg: 5.0, - Start: hawkular.FromUnixMilli(1516301758000), - End: hawkular.FromUnixMilli(1516301818000), - }, - { - Avg: 72.0, - Start: hawkular.FromUnixMilli(1516301818000), - End: hawkular.FromUnixMilli(1516301878000), - }, - }, - pods: []*v1.Pod{ - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("hello"), - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("world"), - }, - }, - }, - namespace: "test", - startTime: hawkular.FromUnixMilli(1516301758000), - endTime: hawkular.FromUnixMilli(1516301878000), - }, - { // Metrics limit - buckets: []*hawkular.Bucketpoint{ - { - Avg: 5.0, - Start: hawkular.FromUnixMilli(1516301758000), - End: hawkular.FromUnixMilli(1516301818000), - }, - { - Avg: 72.0, - Start: hawkular.FromUnixMilli(1516301818000), - End: hawkular.FromUnixMilli(1516301878000), - }, - }, - pods: []*v1.Pod{ - { - ObjectMeta: metav1.ObjectMeta{ - UID: types.UID("hello"), - }, - }, - }, - namespace: "test", - startTime: hawkular.FromUnixMilli(1516301758000), - endTime: hawkular.FromUnixMilli(1516301878000), - limit: 1, - }, -} - -func TestGetNetworkRecv(t *testing.T) { - testCases := singleMetricTestCases - test := &testHawkularGetter{} - config := &kubernetes.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetes.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - for _, testCase := range testCases { - test.input = testCase - metric, err := client.GetNetworkRecvMetrics(testCase.pods, testCase.namespace, testCase.startTime) - require.NoError(t, err, "Getting network metrics failed") - require.NotNil(t, metric, "Nil result from network metrics") - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - metrics := []*app.TimedNumberTuple{metric} - output := test.result.output - verifyMetrics(metrics, testCase, output, "network/rx_rate", t) - - // Verify the remaining filters - verifySingleMetricFilters(testCase, output.filters, t) - } -} - -func TestGetNetworkRecvRange(t *testing.T) { - testCases := metricRangeTestCases - test := &testHawkularGetter{} - config := &kubernetes.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetes.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - for _, testCase := range testCases { - test.input = testCase - metrics, err := client.GetNetworkRecvMetricsRange(testCase.pods, testCase.namespace, testCase.startTime, - testCase.endTime, testCase.limit) - require.NoError(t, err, "Getting network metrics failed") - require.NotNil(t, metrics, "Nil result from network metrics") - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - output := test.result.output - verifyMetrics(metrics, testCase, output, "network/rx_rate", t) - - // Verify the remaining filters - verifyMetricRangeFilters(testCase, output.filters, t) - } -} - -func TestGetNetworkSent(t *testing.T) { - testCases := singleMetricTestCases - test := &testHawkularGetter{} - config := &kubernetes.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetes.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - for _, testCase := range testCases { - test.input = testCase - metric, err := client.GetNetworkSentMetrics(testCase.pods, testCase.namespace, testCase.startTime) - require.NoError(t, err, "Getting network metrics failed") - require.NotNil(t, metric, "Nil result from network metrics") - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - metrics := []*app.TimedNumberTuple{metric} - output := test.result.output - verifyMetrics(metrics, testCase, output, "network/tx_rate", t) - - // Verify the remaining filters - verifySingleMetricFilters(testCase, output.filters, t) - } -} - -func TestGetNetworkSentRange(t *testing.T) { - testCases := metricRangeTestCases - test := &testHawkularGetter{} - config := &kubernetes.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetes.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - for _, testCase := range testCases { - test.input = testCase - metrics, err := client.GetNetworkSentMetricsRange(testCase.pods, testCase.namespace, testCase.startTime, - testCase.endTime, testCase.limit) - require.NoError(t, err, "Getting network metrics failed") - require.NotNil(t, metrics, "Nil result from network metrics") - - // Check that the result has the correct value and timestamp and that the Hawkular API was called - // with the expected values - output := test.result.output - verifyMetrics(metrics, testCase, output, "network/tx_rate", t) - - // Verify the remaining filters - verifyMetricRangeFilters(testCase, output.filters, t) - } -} - -func TestCloseHawkular(t *testing.T) { - test := &testHawkularGetter{} - config := &kubernetes.MetricsClientConfig{ - MetricsURL: "myMetricsServer", - BearerToken: "token", - HawkularGetter: test, - } - client, err := kubernetes.NewMetricsClient(config) - require.NoError(t, err, "Failed to create metrics client") - - // Check that MetricsInterface.Close invokes Hawkular's Client.Close - client.Close() - require.True(t, test.result.output.closed, "Hawkular client not closed") -} - -func verifyMetrics(metrics []*app.TimedNumberTuple, testCase *testMetricsInput, result *testMetricsOutput, - gaugeDesc string, t *testing.T) { - // If limit is specified, check that the number of metrics doesn't exceed that limit - numMetrics := len(metrics) - if testCase.limit > 0 { - require.True(t, numMetrics <= testCase.limit, "Too many metrics returned") - } - - // Check that the result has the correct values and timestamps - require.True(t, numMetrics <= len(testCase.buckets), "More metrics than buckets") // Sanity check - for i := 0; i < numMetrics; i++ { - // Iterate backwards since earlier buckets may have been discarded due to limit parameter - metric := metrics[numMetrics-1-i] - bucket := testCase.buckets[len(testCase.buckets)-1-i] - require.NotNil(t, metric.Value, "Nil value in network metric") - require.InDelta(t, bucket.Avg, *metric.Value, fltDelta, "Incorrect value in network metric") - require.NotNil(t, metric.Time, "Nil time in network metric") - require.InDelta(t, hawkular.ToUnixMilli(bucket.Start), *metric.Time, fltDelta, "Incorrect time in network metric") - } - - // Check that ReadBuckets was called with the correct inputs - require.Equal(t, testCase.namespace, result.namespace, "ReadBuckets called with incorrect namespace") - require.Equal(t, hawkular.Gauge, result.metricType, "Incorrect Hawkular metric type") - - // Check that the tags used in the Hawkular query are correct - uids := make([]string, len(testCase.pods)) - for idx := range testCase.pods { - uids[idx] = string(testCase.pods[idx].UID) - } - expectedPodTag := strings.Join(uids, "|") - expectedTags := map[string]string{ - "descriptor_name": gaugeDesc, - "type": "pod", - "pod_id": expectedPodTag, - } - tags := tagsToMap(result.filters.Get("tags"), t) - if t.Failed() { - return - } - for key, value := range expectedTags { - require.Equal(t, value, tags[key], "Tag mismatch") - } -} - -func verifySingleMetricFilters(testCase *testMetricsInput, filters url.Values, t *testing.T) { - require.Equal(t, "1", filters.Get("buckets"), "Buckets parameter missing or incorrect") - require.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime), 10), - filters.Get("start"), "Start parameter missing or incorrect") - require.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime.Add(time.Minute)), 10), - filters.Get("end"), "End parameter missing or incorrect") - require.Equal(t, "true", filters.Get("stacked"), "Stacked parameter missing or incorrect") -} - -func verifyMetricRangeFilters(testCase *testMetricsInput, filters url.Values, t *testing.T) { - require.Equal(t, "60000ms", filters.Get("bucketDuration"), "BucketDuration parameter missing or incorrect") - require.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.startTime), 10), - filters.Get("start"), "Start parameter missing or incorrect") - require.Equal(t, strconv.FormatInt(hawkular.ToUnixMilli(testCase.endTime), 10), - filters.Get("end"), "End parameter missing or incorrect") - require.Equal(t, "true", filters.Get("stacked"), "Stacked parameter missing or incorrect") -} - -func tagsToMap(tagsParam string, t *testing.T) map[string]string { - tags := strings.Split(tagsParam, ",") - tagMap := make(map[string]string) - for _, tag := range tags { - tagSplit := strings.SplitN(tag, ":", 2) - require.Len(t, tagSplit, 2, "Tag in wrong format") - tagMap[tagSplit[0]] = tagSplit[1] - } - return tagMap -} diff --git a/main.go b/main.go index 394fb0a44f..9aaba4224a 100755 --- a/main.go +++ b/main.go @@ -322,10 +322,6 @@ func main() { userServiceCtrl.ShowTenant = account.NewShowTenant(config) app.MountUserServiceController(service, userServiceCtrl) - // Mount "deployments" controller - deploymentsCtrl := controller.NewDeploymentsController(service, config) - app.MountDeploymentsController(service, deploymentsCtrl) - // Mount "search" controller searchCtrl := controller.NewSearchController(service, appDB, config) app.MountSearchController(service, searchCtrl) diff --git a/test/kubernetes/can-i-all-groups-resource.yaml b/test/kubernetes/can-i-all-groups-resource.yaml deleted file mode 100644 index 8b11c30e0a..0000000000 --- a/test/kubernetes/can-i-all-groups-resource.yaml +++ /dev/null @@ -1,703 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-all-groups.yaml b/test/kubernetes/can-i-all-groups.yaml deleted file mode 100644 index 020d0d730b..0000000000 --- a/test/kubernetes/can-i-all-groups.yaml +++ /dev/null @@ -1,703 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "*" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-all-resource.yaml b/test/kubernetes/can-i-all-resource.yaml deleted file mode 100644 index 872cd2f95a..0000000000 --- a/test/kubernetes/can-i-all-resource.yaml +++ /dev/null @@ -1,703 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "*" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-bad-resource.yaml b/test/kubernetes/can-i-bad-resource.yaml deleted file mode 100644 index fa6420a1b6..0000000000 --- a/test/kubernetes/can-i-bad-resource.yaml +++ /dev/null @@ -1,692 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs", - ["bad", "resource"] - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-bad-rule.yaml b/test/kubernetes/can-i-bad-rule.yaml deleted file mode 100644 index 809fed8a54..0000000000 --- a/test/kubernetes/can-i-bad-rule.yaml +++ /dev/null @@ -1,692 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - [ "bad", "rule" ], - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-bad-verbs.yaml b/test/kubernetes/can-i-bad-verbs.yaml deleted file mode 100644 index dde544d526..0000000000 --- a/test/kubernetes/can-i-bad-verbs.yaml +++ /dev/null @@ -1,692 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - ["bad", "verbs"], - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-empty-group.yaml b/test/kubernetes/can-i-empty-group.yaml deleted file mode 100644 index 4073c40393..0000000000 --- a/test/kubernetes/can-i-empty-group.yaml +++ /dev/null @@ -1,689 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-no-builds.yaml b/test/kubernetes/can-i-no-builds.yaml deleted file mode 100644 index c159a22577..0000000000 --- a/test/kubernetes/can-i-no-builds.yaml +++ /dev/null @@ -1,690 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-no-dc.yaml b/test/kubernetes/can-i-no-dc.yaml deleted file mode 100644 index 20fca2cfcc..0000000000 --- a/test/kubernetes/can-i-no-dc.yaml +++ /dev/null @@ -1,690 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-no-quotas.yaml b/test/kubernetes/can-i-no-quotas.yaml deleted file mode 100644 index 81f66c8d56..0000000000 --- a/test/kubernetes/can-i-no-quotas.yaml +++ /dev/null @@ -1,690 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-no-rules.yaml b/test/kubernetes/can-i-no-rules.yaml deleted file mode 100644 index 5cf9b496e5..0000000000 --- a/test/kubernetes/can-i-no-rules.yaml +++ /dev/null @@ -1,85 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": {} - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": {} - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": {} - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i-no-status.yaml b/test/kubernetes/can-i-no-status.yaml deleted file mode 100644 index c7ad70714c..0000000000 --- a/test/kubernetes/can-i-no-status.yaml +++ /dev/null @@ -1,82 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/can-i.yaml b/test/kubernetes/can-i.yaml deleted file mode 100644 index 91958c297a..0000000000 --- a/test/kubernetes/can-i.yaml +++ /dev/null @@ -1,691 +0,0 @@ ---- -version: 1 -interactions: - # Self Subject Rules Reviews -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1" - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/selfsubjectrulesreviews - method: POST - response: - body: | - { - "kind": "SelfSubjectRulesReview", - "apiVersion": "v1", - "spec": { - "scopes": null - }, - "status": { - "rules": [ - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "buildconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "builds" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "deploymentconfigs/scale" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "events" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ] - }, - { - "verbs": [ - "get", - "list", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "routes" - ] - }, - { - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ], - "attributeRestrictions": null, - "apiGroups": [ - "" - ], - "resources": [ - "services" - ] - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-badroutes.yaml b/test/kubernetes/deletedeployment-badroutes.yaml deleted file mode 100644 index 84d3885d50..0000000000 --- a/test/kubernetes/deletedeployment-badroutes.yaml +++ /dev/null @@ -1,853 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 418 I'm a teapot - code: 418 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-badservices.yaml b/test/kubernetes/deletedeployment-badservices.yaml deleted file mode 100644 index 94aa4602c6..0000000000 --- a/test/kubernetes/deletedeployment-badservices.yaml +++ /dev/null @@ -1,853 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 418 I'm a teapot - code: 418 diff --git a/test/kubernetes/deletedeployment-delete-dc-error.yaml b/test/kubernetes/deletedeployment-delete-dc-error.yaml deleted file mode 100644 index 5b6c5559b3..0000000000 --- a/test/kubernetes/deletedeployment-delete-dc-error.yaml +++ /dev/null @@ -1,703 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-delete-routes-error.yaml b/test/kubernetes/deletedeployment-delete-routes-error.yaml deleted file mode 100644 index 3da7e75a36..0000000000 --- a/test/kubernetes/deletedeployment-delete-routes-error.yaml +++ /dev/null @@ -1,848 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-delete-svc-error.yaml b/test/kubernetes/deletedeployment-delete-svc-error.yaml deleted file mode 100644 index 079a3c436e..0000000000 --- a/test/kubernetes/deletedeployment-delete-svc-error.yaml +++ /dev/null @@ -1,845 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 diff --git a/test/kubernetes/deletedeployment-get-dc-error.yaml b/test/kubernetes/deletedeployment-get-dc-error.yaml deleted file mode 100644 index cfdfc2cec5..0000000000 --- a/test/kubernetes/deletedeployment-get-dc-error.yaml +++ /dev/null @@ -1,703 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-get-routes-error.yaml b/test/kubernetes/deletedeployment-get-routes-error.yaml deleted file mode 100644 index d1f6bed3b9..0000000000 --- a/test/kubernetes/deletedeployment-get-routes-error.yaml +++ /dev/null @@ -1,848 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-get-svc-error.yaml b/test/kubernetes/deletedeployment-get-svc-error.yaml deleted file mode 100644 index feaeb28e93..0000000000 --- a/test/kubernetes/deletedeployment-get-svc-error.yaml +++ /dev/null @@ -1,845 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-nobuilds.yaml b/test/kubernetes/deletedeployment-nobuilds.yaml deleted file mode 100644 index 1b70cb45f4..0000000000 --- a/test/kubernetes/deletedeployment-nobuilds.yaml +++ /dev/null @@ -1,770 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myApp - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myApp\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myApp", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myApp\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp" - }, - "creationTimestamp": null, - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myApp", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myApp" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myApp:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myApp-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myApp - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myApp\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myApp", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myApp\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp" - }, - "creationTimestamp": null, - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myApp", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myApp" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myApp:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myApp@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myApp-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyApp - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myApp", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myApp - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myApp", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyApp - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myApp", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myApp - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myApp/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myApp", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myApp", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-nodc.yaml b/test/kubernetes/deletedeployment-nodc.yaml deleted file mode 100644 index 42d664d199..0000000000 --- a/test/kubernetes/deletedeployment-nodc.yaml +++ /dev/null @@ -1,649 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: "" - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-noroutes.yaml b/test/kubernetes/deletedeployment-noroutes.yaml deleted file mode 100644 index eae8d83efc..0000000000 --- a/test/kubernetes/deletedeployment-noroutes.yaml +++ /dev/null @@ -1,728 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-noservices.yaml b/test/kubernetes/deletedeployment-noservices.yaml deleted file mode 100644 index 526e7197cd..0000000000 --- a/test/kubernetes/deletedeployment-noservices.yaml +++ /dev/null @@ -1,722 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment-wrongspace.yaml b/test/kubernetes/deletedeployment-wrongspace.yaml deleted file mode 100644 index df4df9274e..0000000000 --- a/test/kubernetes/deletedeployment-wrongspace.yaml +++ /dev/null @@ -1,853 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DotherSpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/deletedeployment.yaml b/test/kubernetes/deletedeployment.yaml deleted file mode 100644 index 3fe9c042cf..0000000000 --- a/test/kubernetes/deletedeployment.yaml +++ /dev/null @@ -1,853 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services?labelSelector=app%3DmyDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services/myDeploy - method: DELETE - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/get-dc-name-for-app.yaml b/test/kubernetes/get-dc-name-for-app.yaml deleted file mode 100644 index 5afc3c1a5d..0000000000 --- a/test/kubernetes/get-dc-name-for-app.yaml +++ /dev/null @@ -1,1494 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnotFound%2Cspace%3DmySpace - method: GET - response: - body: "" - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadList%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BadList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoItems%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadBuild%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildList", - "items": [ - "bad" - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoMeta%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoAnnotations%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoEnvServices%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "annotations": { - "openshift.io/build-config.name": "myApp" - }, - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadEnvServices%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "annotations": { - "environment.services.fabric8.io/my-run": {}, - "environment.services.fabric8.io/my-stage": {} - }, - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadYAML%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "annotations": { - "environment.services.fabric8.io/my-run": "hello", - "environment.services.fabric8.io/my-stage": "world" - }, - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoDepVer%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\nnotDeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\nnotDeploymentVersions:\n myDeploy: \"1.0.3\"\n" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadDepVer%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n 0.5: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n 0.5: \"1.0.3\"\n" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmanyBuilds%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - }, - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy2: \"http://myDeploy2-my-run.example.com\"\ndeploymentVersions:\n myDeploy2: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy2: \"http://myDeploy2-my-stage.example.com\"\ndeploymentVersions:\n myDeploy2: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "2", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-2\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-2\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-2\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-2 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-2\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-2\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-2 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-19T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-2", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-2", - "uid": "a7b9a247-b48a-4dac-9f5d-da076a1cf075" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-19T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-19T21:43:41Z" - } - }, - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "3" - }, - "creationTimestamp": "2018-04-20T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-3", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-3", - "uid": "a7b9a247-b48a-4dac-9f5d-da076a1cf075" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "New", - "startTimestamp": "2018-04-20T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DnoDate%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DbadDate%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "not a date", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DemptyKey%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n ~: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n ~: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getapplication-nopods.yaml b/test/kubernetes/getapplication-nopods.yaml deleted file mode 100644 index c865e6af49..0000000000 --- a/test/kubernetes/getapplication-nopods.yaml +++ /dev/null @@ -1,1422 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyOtherApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-run.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-stage.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myOtherApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myOtherApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myOtherApp", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myOtherApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myOtherApp-1", - "uid": "7c563b97-8865-47b6-a9cc-d2bfbf05ecd9" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myOtherApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - }, - "spec": { - "replicas": 1, - "revisionHistoryLimit": 2, - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myOtherDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myOtherDeploy:1.0.1", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 1, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myOtherDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 1, - "replicas": 1, - "unavailableReplicas": 0, - "updatedReplicas": 1 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myOtherDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myOtherApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - }, - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myOtherDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myOtherDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myOtherDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myOtherDeploy:1.0.1\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myOtherDeploy\",\"image\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myOtherDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myOtherDeploy-1", - "uid": "51fbc77a-cca1-4fc7-8c13-b9a51753d5f6" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.name": "myOtherDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getapplication.yaml b/test/kubernetes/getapplication.yaml deleted file mode 100644 index 26a324f472..0000000000 --- a/test/kubernetes/getapplication.yaml +++ /dev/null @@ -1,2156 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - }, - "name": "myDeploy", - "namespace": "my-stage", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.3", - "namespace": "my-stage" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "deletionTimestamp": "2018-01-26T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-build-error.yaml b/test/kubernetes/getdeployment-build-error.yaml deleted file mode 100644 index 96551cc228..0000000000 --- a/test/kubernetes/getdeployment-build-error.yaml +++ /dev/null @@ -1,1223 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-dc-error.yaml b/test/kubernetes/getdeployment-dc-error.yaml deleted file mode 100644 index 40dcca95dd..0000000000 --- a/test/kubernetes/getdeployment-dc-error.yaml +++ /dev/null @@ -1,1110 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-nospace.yaml b/test/kubernetes/getdeployment-nospace.yaml deleted file mode 100644 index 54767b9206..0000000000 --- a/test/kubernetes/getdeployment-nospace.yaml +++ /dev/null @@ -1,1224 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-pod-error.yaml b/test/kubernetes/getdeployment-pod-error.yaml deleted file mode 100644 index cd977b8fc0..0000000000 --- a/test/kubernetes/getdeployment-pod-error.yaml +++ /dev/null @@ -1,871 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-rc-error.yaml b/test/kubernetes/getdeployment-rc-error.yaml deleted file mode 100644 index 3bfcb71baa..0000000000 --- a/test/kubernetes/getdeployment-rc-error.yaml +++ /dev/null @@ -1,1143 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-route-error.yaml b/test/kubernetes/getdeployment-route-error.yaml deleted file mode 100644 index e3cb835827..0000000000 --- a/test/kubernetes/getdeployment-route-error.yaml +++ /dev/null @@ -1,1205 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-scaled-down.yaml b/test/kubernetes/getdeployment-scaled-down.yaml deleted file mode 100644 index 9b3bb6b6e8..0000000000 --- a/test/kubernetes/getdeployment-scaled-down.yaml +++ /dev/null @@ -1,1558 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-24T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - }, - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "2", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "0", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-2", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-2", - "uid": "f3e4c398-9e17-4758-bf2a-f8f8ce61bf5f" - }, - "spec": { - "replicas": 0, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-2", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "2", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-2" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-2", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 0, - "fullyLabeledReplicas": 0, - "observedGeneration": 3, - "readyReplicas": 0, - "replicas": 0 - } - }, - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "3", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Failed", - "openshift.io/deployment.replicas": "0", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-23T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-3", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-3", - "uid": "b3be15cb-2353-43be-ae86-947ab885adfe" - }, - "spec": { - "replicas": 1, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-3", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "3", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-3" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-3", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 0, - "fullyLabeledReplicas": 0, - "observedGeneration": 3, - "readyReplicas": 0, - "replicas": 0 - } - } - - - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment-svc-error.yaml b/test/kubernetes/getdeployment-svc-error.yaml deleted file mode 100644 index b3bf81a2ae..0000000000 --- a/test/kubernetes/getdeployment-svc-error.yaml +++ /dev/null @@ -1,1199 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 diff --git a/test/kubernetes/getdeployment-wrongspace.yaml b/test/kubernetes/getdeployment-wrongspace.yaml deleted file mode 100644 index 7f085f3682..0000000000 --- a/test/kubernetes/getdeployment-wrongspace.yaml +++ /dev/null @@ -1,1260 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmyWrongSpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getdeployment.yaml b/test/kubernetes/getdeployment.yaml deleted file mode 100644 index 030018db42..0000000000 --- a/test/kubernetes/getdeployment.yaml +++ /dev/null @@ -1,1260 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherApp", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherApp-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherApp", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherApp-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherApp-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherApp/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherApp", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherApp", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherApp", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherApp", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherApp", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherApp", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherApp", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironment-all-objects.yaml b/test/kubernetes/getenvironment-all-objects.yaml deleted file mode 100644 index 318ff59d9c..0000000000 --- a/test/kubernetes/getenvironment-all-objects.yaml +++ /dev/null @@ -1,105 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "488m", - "limits.memory": "250Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "pods": "40", - "replicationcontrollers": "25", - "resourcequotas": "3", - "services": "5", - "secrets": "20", - "configmaps": "10", - "persistentvolumeclaims": "1", - "openshift.io/imagestreams": "15" - } - }, - "status": { - "hard": { - "pods": "40", - "replicationcontrollers": "25", - "resourcequotas": "3", - "services": "5", - "secrets": "20", - "configmaps": "10", - "persistentvolumeclaims": "1", - "openshift.io/imagestreams": "15" - }, - "used": { - "pods": "31", - "replicationcontrollers": "19", - "resourcequotas": "2", - "services": "4", - "secrets": "17", - "configmaps": "9", - "persistentvolumeclaims": "0", - "openshift.io/imagestreams": "14" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironment-no-compute.yaml b/test/kubernetes/getenvironment-no-compute.yaml deleted file mode 100644 index 0a00c3c247..0000000000 --- a/test/kubernetes/getenvironment-no-compute.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "2", - "secrets": "11", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironment-no-cpu.yaml b/test/kubernetes/getenvironment-no-cpu.yaml deleted file mode 100644 index 0f5f9358e7..0000000000 --- a/test/kubernetes/getenvironment-no-cpu.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.memory": "1Gi" - }, - "used": { - "limits.memory": "250Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "2", - "secrets": "11", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironment-no-mem.yaml b/test/kubernetes/getenvironment-no-mem.yaml deleted file mode 100644 index 7a6e16d15f..0000000000 --- a/test/kubernetes/getenvironment-no-mem.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.cpu": "2" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2" - }, - "used": { - "limits.cpu": "488m" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "2", - "secrets": "11", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironment-no-objects.yaml b/test/kubernetes/getenvironment-no-objects.yaml deleted file mode 100644 index 2d6649ec87..0000000000 --- a/test/kubernetes/getenvironment-no-objects.yaml +++ /dev/null @@ -1,59 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "488m", - "limits.memory": "250Mi" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironments-rq-error.yaml b/test/kubernetes/getenvironments-rq-error.yaml deleted file mode 100644 index ac6be75c4f..0000000000 --- a/test/kubernetes/getenvironments-rq-error.yaml +++ /dev/null @@ -1,207 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "the server doesn't have a resource type "resourcequota", - "reason": "NotFound", - "details": {}, - "code": 404 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:15Z", - "name": "compute-resources", - "namespace": "my-stage", - "resourceVersion": "1066766807", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/compute-resources", - "uid": "b72ae154-730d-470d-b610-d34a6a7d271c" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "1488m", - "limits.memory": "762Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-stage", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/object-counts", - "uid": "74ad59a6-3071-454b-a719-7c07a3a8e7df" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "5", - "secrets": "9", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "compute-resources", - "namespace": "myNamespace", - "resourceVersion": "682306837", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/compute-resources", - "uid": "4a83f394-7081-4a54-ac01-7c9ea16e4ac5" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "0", - "limits.memory": "0" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "myNamespace", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/object-counts", - "uid": "2928ac2c-d240-4582-a4fb-a0edf65c8069" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "1", - "secrets": "12", - "services": "1" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getenvironments.yaml b/test/kubernetes/getenvironments.yaml deleted file mode 100644 index 6ab4fc8d82..0000000000 --- a/test/kubernetes/getenvironments.yaml +++ /dev/null @@ -1,271 +0,0 @@ ---- -version: 1 -interactions: - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "488m", - "limits.memory": "250Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "2", - "secrets": "11", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:15Z", - "name": "compute-resources", - "namespace": "my-stage", - "resourceVersion": "1066766807", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/compute-resources", - "uid": "b72ae154-730d-470d-b610-d34a6a7d271c" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "1488m", - "limits.memory": "762Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-stage", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/object-counts", - "uid": "74ad59a6-3071-454b-a719-7c07a3a8e7df" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "5", - "secrets": "9", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "compute-resources", - "namespace": "myNamespace", - "resourceVersion": "682306837", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/compute-resources", - "uid": "4a83f394-7081-4a54-ac01-7c9ea16e4ac5" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "0", - "limits.memory": "0" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "myNamespace", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/object-counts", - "uid": "2928ac2c-d240-4582-a4fb-a0edf65c8069" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "1", - "secrets": "12", - "services": "1" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-bc-error.yaml b/test/kubernetes/getspace-bc-error.yaml deleted file mode 100644 index aff13aa632..0000000000 --- a/test/kubernetes/getspace-bc-error.yaml +++ /dev/null @@ -1,1330 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-empty-bc.yaml b/test/kubernetes/getspace-empty-bc.yaml deleted file mode 100644 index 74ac1225b6..0000000000 --- a/test/kubernetes/getspace-empty-bc.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-no-items.yaml b/test/kubernetes/getspace-no-items.yaml deleted file mode 100644 index 5d13c9c534..0000000000 --- a/test/kubernetes/getspace-no-items.yaml +++ /dev/null @@ -1,26 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-no-metadata.yaml b/test/kubernetes/getspace-no-metadata.yaml deleted file mode 100644 index 1c956ba663..0000000000 --- a/test/kubernetes/getspace-no-metadata.yaml +++ /dev/null @@ -1,71 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-no-name.yaml b/test/kubernetes/getspace-no-name.yaml deleted file mode 100644 index e2da8d0bb8..0000000000 --- a/test/kubernetes/getspace-no-name.yaml +++ /dev/null @@ -1,87 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-not-object.yaml b/test/kubernetes/getspace-not-object.yaml deleted file mode 100644 index e1c99215df..0000000000 --- a/test/kubernetes/getspace-not-object.yaml +++ /dev/null @@ -1,29 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - [] - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-two-apps-one-deploy.yaml b/test/kubernetes/getspace-two-apps-one-deploy.yaml deleted file mode 100644 index 632e2d7c4b..0000000000 --- a/test/kubernetes/getspace-two-apps-one-deploy.yaml +++ /dev/null @@ -1,1553 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - }, - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myOtherApp/master" - }, - "creationTimestamp": "2018-01-17T19:06:47Z", - "labels": { - "space": "mySpace" - }, - "name": "myOtherApp", - "namespace": "myNamespace", - "resourceVersion": "815711585", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 2 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyOtherApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-run.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-stage.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myOtherApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myOtherApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myOtherApp", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myOtherApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myOtherApp-1", - "uid": "7c563b97-8865-47b6-a9cc-d2bfbf05ecd9" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myOtherApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myOtherDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myOtherApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-two-apps-two-deploy.yaml b/test/kubernetes/getspace-two-apps-two-deploy.yaml deleted file mode 100644 index bddbeea2b0..0000000000 --- a/test/kubernetes/getspace-two-apps-two-deploy.yaml +++ /dev/null @@ -1,3033 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - }, - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myOtherApp/master" - }, - "creationTimestamp": "2018-01-17T19:06:47Z", - "labels": { - "space": "mySpace" - }, - "name": "myOtherApp", - "namespace": "myNamespace", - "resourceVersion": "815711585", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 2 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyOtherApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-run.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-stage.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myOtherApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myOtherApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myOtherApp", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myOtherApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myOtherApp-1", - "uid": "7c563b97-8865-47b6-a9cc-d2bfbf05ecd9" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myOtherApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - }, - "name": "myDeploy", - "namespace": "my-stage", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.3", - "namespace": "my-stage" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - }, - "spec": { - "replicas": 1, - "revisionHistoryLimit": 2, - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myOtherDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myOtherDeploy:1.0.1", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 1, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myOtherDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 1, - "replicas": 1, - "unavailableReplicas": 0, - "updatedReplicas": 1 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myOtherDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myOtherApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - }, - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myOtherDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myOtherDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myOtherDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myOtherDeploy:1.0.1\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myOtherDeploy\",\"image\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myOtherDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myOtherDeploy-1", - "uid": "51fbc77a-cca1-4fc7-8c13-b9a51753d5f6" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.name": "myOtherDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myOtherDeploy-1\",\"uid\":\"51fbc77a-cca1-4fc7-8c13-b9a51753d5f6\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myOtherDeploy; cpu limit for container myOtherDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.name": "myOtherDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myOtherDeploy-1-", - "labels": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.1" - }, - "name": "myOtherDeploy-1-67kvt", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myOtherDeploy-1", - "uid": "51fbc77a-cca1-4fc7-8c13-b9a51753d5f6" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myOtherDeploy-1-67kvt", - "uid": "97a6923d-c0b1-4262-8f87-31c1a4153400" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://1f2946e2fd7d0be6c4295c1ed828f0ff4aec21e89df898f9efbaddbe445c5c7c", - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myOtherDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.12", - "phase": "Running", - "podIP": "127.0.0.13", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "deletionTimestamp": "2018-01-26T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace-wrong-list.yaml b/test/kubernetes/getspace-wrong-list.yaml deleted file mode 100644 index d859e52220..0000000000 --- a/test/kubernetes/getspace-wrong-list.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "NotBuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspace.yaml b/test/kubernetes/getspace.yaml deleted file mode 100644 index 922b7a2f3a..0000000000 --- a/test/kubernetes/getspace.yaml +++ /dev/null @@ -1,1345 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspaceandotherenvironmentusage-rq-error.yaml b/test/kubernetes/getspaceandotherenvironmentusage-rq-error.yaml deleted file mode 100644 index b62a8c2128..0000000000 --- a/test/kubernetes/getspaceandotherenvironmentusage-rq-error.yaml +++ /dev/null @@ -1,1549 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "the server doesn't have a resource type "resourcequota", - "reason": "NotFound", - "details": {}, - "code": 404 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:15Z", - "name": "compute-resources", - "namespace": "my-stage", - "resourceVersion": "1066766807", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/compute-resources", - "uid": "b72ae154-730d-470d-b610-d34a6a7d271c" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "1488m", - "limits.memory": "762Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-stage", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/object-counts", - "uid": "74ad59a6-3071-454b-a719-7c07a3a8e7df" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "5", - "secrets": "9", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "compute-resources", - "namespace": "myNamespace", - "resourceVersion": "682306837", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/compute-resources", - "uid": "4a83f394-7081-4a54-ac01-7c9ea16e4ac5" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "0", - "limits.memory": "0" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "myNamespace", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/object-counts", - "uid": "2928ac2c-d240-4582-a4fb-a0edf65c8069" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "1", - "secrets": "12", - "services": "1" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/getspaceandotherenvironmentusage.yaml b/test/kubernetes/getspaceandotherenvironmentusage.yaml deleted file mode 100644 index 69f0fe968f..0000000000 --- a/test/kubernetes/getspaceandotherenvironmentusage.yaml +++ /dev/null @@ -1,3301 +0,0 @@ ---- -version: 1 -interactions: - # Build Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/buildconfigs?labelSelector=space%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "BuildConfigList", - "items": [ - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myApp/master" - }, - "creationTimestamp": "2018-01-17T20:23:30Z", - "labels": { - "space": "mySpace" - }, - "name": "myApp", - "namespace": "myNamespace", - "resourceVersion": "828221505", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 4 - } - }, - { - "apiVersion": "v1", - "kind": "BuildConfig", - "metadata": { - "annotations": { - "che.fabric8.io/stack": "java-centos", - "jenkins.openshift.org/disable-sync-create-on": "jenkins", - "jenkins.openshift.org/generated-by": "jenkins", - "jenkins.openshift.org/job-path": "myUser/myOtherApp/master" - }, - "creationTimestamp": "2018-01-17T19:06:47Z", - "labels": { - "space": "mySpace" - }, - "name": "myOtherApp", - "namespace": "myNamespace", - "resourceVersion": "815711585", - "selfLink": "/oapi/v1/namespaces/myNamespace/buildconfigs/myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - }, - "spec": { - "failedBuildsHistoryLimit": 5, - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "runPolicy": "Serial", - "source": { - "git": { - "ref": "master", - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "successfulBuildsHistoryLimit": 5, - "triggers": [ - { - "generic": { - "secret": "mySecret" - }, - "type": "Generic" - } - ] - }, - "status": { - "lastVersion": 2 - } - } - ], - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyOtherApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-run.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myOtherDeploy: \"http://myOtherDeploy-my-stage.example.com\"\ndeploymentVersions:\n myOtherDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myOtherDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myOtherApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myOtherApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myOtherApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myOtherApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myOtherDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myOtherApp", - "openshift.io/build-config.name": "myOtherApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myOtherApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myOtherApp", - "uid": "50e57129-618d-48c4-8ac6-f04f852170d4" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myOtherApp-1", - "uid": "7c563b97-8865-47b6-a9cc-d2bfbf05ecd9" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myOtherApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myOtherApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - }, - "name": "myDeploy", - "namespace": "my-stage", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.3" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.3", - "namespace": "my-stage" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - }, - "spec": { - "replicas": 1, - "revisionHistoryLimit": 2, - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myOtherDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myOtherDeploy:1.0.1", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 1, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myOtherDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 1, - "replicas": 1, - "unavailableReplicas": 0, - "updatedReplicas": 1 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myOtherDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/deploymentconfigs/myOtherApp - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Routes -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:29:33Z", - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351613", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myOtherDeploy", - "uid": "ba127f7e-c735-4470-a96f-e3462a050d0a" - }, - "spec": { - "host": "myOtherDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myOtherDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:29:33Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myOtherDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - }, - { - "apiVersion": "v1", - "kind": "Route", - "metadata": { - "annotations": { - "openshift.io/host.generated": "true" - }, - "creationTimestamp": "2018-01-25T16:33:08Z", - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362360", - "selfLink": "/oapi/v1/namespaces/my-run/routes/myDeploy", - "uid": "d727601d-8c5a-4271-bd1b-90929461c947" - }, - "spec": { - "host": "myDeploy-my-run.example.com", - "port": { - "targetPort": 8080 - }, - "to": { - "kind": "Service", - "name": "myDeploy", - "weight": 100 - }, - "wildcardPolicy": "None" - }, - "status": { - "ingress": [ - { - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:09Z", - "status": "True", - "type": "Admitted" - } - ], - "host": "myDeploy-my-run.example.com", - "routerCanonicalHostname": "router.example.com", - "routerName": "router", - "wildcardPolicy": "None" - } - ] - } - } - ], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/routes - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "RouteList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Replication Controllers -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - }, - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myOtherDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myOtherDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myOtherDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myOtherDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myOtherDeploy:1.0.1\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myOtherDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.1\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myOtherDeploy/master-1.0.1\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\\u0026var-version=1.0.1\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myOtherDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myOtherDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myOtherDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myOtherDeploy\",\"image\":\"127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myOtherDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myOtherDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myOtherDeploy", - "uid": "60914dbe-fff9-47a0-86a3-9fb71822aba4" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myOtherDeploy-1", - "uid": "51fbc77a-cca1-4fc7-8c13-b9a51753d5f6" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.name": "myOtherDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/replicationcontrollers - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ReplicationController", - "metadata": { - "annotations": { - "openshift.io/deployer-pod.completed-at": "2018-01-25 16:33:26 +0000 UTC", - "openshift.io/deployer-pod.created-at": "2018-01-25 16:33:03 +0000 UTC", - "openshift.io/deployer-pod.name": "myDeploy-1-deploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.phase": "Complete", - "openshift.io/deployment.replicas": "1", - "openshift.io/deployment.status-reason": "config change", - "openshift.io/encoded-deployment-config": "{\"kind\":\"DeploymentConfig\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"myDeploy\",\"namespace\":\"my-run\",\"selfLink\":\"/apis/apps.openshift.io/v1/namespaces/my-run/deploymentconfigs/myDeploy\",\"uid\":\"8db1c9ba-91b5-46c6-be99-576245f42b3b\",\"resourceVersion\":\"837362058\",\"generation\":2,\"creationTimestamp\":\"2018-01-25T16:33:02Z\",\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"strategy\":{\"type\":\"Rolling\",\"rollingParams\":{\"updatePeriodSeconds\":1,\"intervalSeconds\":1,\"timeoutSeconds\":3600,\"maxUnavailable\":\"25%\",\"maxSurge\":\"25%\"},\"resources\":{},\"activeDeadlineSeconds\":21600},\"triggers\":[{\"type\":\"ConfigChange\"},{\"type\":\"ImageChange\",\"imageChangeParams\":{\"automatic\":true,\"containerNames\":[\"myDeploy\"],\"from\":{\"kind\":\"ImageStreamTag\",\"namespace\":\"my-run\",\"name\":\"myDeploy:1.0.2\"},\"lastTriggeredImage\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\"}}],\"replicas\":1,\"revisionHistoryLimit\":2,\"test\":false,\"selector\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"myDeploy\",\"group\":\"myGroup\",\"provider\":\"fabric8\",\"space\":\"mySpace\",\"version\":\"1.0.2\"},\"annotations\":{\"fabric8.io/git-branch\":\"myUser/myDeploy/master-1.0.2\",\"fabric8.io/git-commit\":\"55ca6286e3e4f4fba5d0448333fa99fc5a404a73\",\"fabric8.io/iconUrl\":\"img/icon.svg\",\"fabric8.io/metrics-path\":\"dashboard/file/kubernetes-pods.json/?var-project=myDeploy\\u0026var-version=1.0.2\",\"fabric8.io/scm-con-url\":\"scm:git:https://example.com/myDeploy\",\"fabric8.io/scm-devcon-url\":\"scm:git:git:@example.com/myDeploy\",\"fabric8.io/scm-tag\":\"myTag\",\"fabric8.io/scm-url\":\"https://example.com/myDeploy\"}},\"spec\":{\"containers\":[{\"name\":\"myDeploy\",\"image\":\"127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4\",\"ports\":[{\"name\":\"http\",\"containerPort\":8080,\"protocol\":\"TCP\"},{\"name\":\"prometheus\",\"containerPort\":9779,\"protocol\":\"TCP\"},{\"name\":\"jolokia\",\"containerPort\":8778,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"KUBERNETES_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"apiVersion\":\"v1\",\"fieldPath\":\"metadata.namespace\"}}}],\"resources\":{\"limits\":{\"memory\":\"250Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":180,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":8080,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":10,\"timeoutSeconds\":1,\"periodSeconds\":10,\"successThreshold\":1,\"failureThreshold\":3},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"imagePullPolicy\":\"IfNotPresent\",\"securityContext\":{\"privileged\":false}}],\"restartPolicy\":\"Always\",\"terminationGracePeriodSeconds\":30,\"dnsPolicy\":\"ClusterFirst\",\"securityContext\":{},\"schedulerName\":\"default-scheduler\"}}},\"status\":{\"latestVersion\":1,\"observedGeneration\":2,\"replicas\":0,\"updatedReplicas\":0,\"availableReplicas\":0,\"unavailableReplicas\":0,\"details\":{\"message\":\"config change\",\"causes\":[{\"type\":\"ConfigChange\"}]},\"conditions\":[{\"type\":\"Available\",\"status\":\"False\",\"lastUpdateTime\":\"2018-01-25T16:33:02Z\",\"lastTransitionTime\":\"2018-01-25T16:33:02Z\",\"message\":\"Deployment config does not have minimum availability.\"}]}}\n" - }, - "creationTimestamp": "2018-01-25T16:33:03Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "openshift.io/deployment-config.name": "myDeploy", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy-1", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "apps.openshift.io/v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "DeploymentConfig", - "name": "myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - } - ], - "resourceVersion": "838024576", - "selfLink": "/api/v1/namespaces/my-run/replicationcontrollers/myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - }, - "spec": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - } - }, - "status": { - "availableReplicas": 2, - "fullyLabeledReplicas": 2, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2 - } - } - ], - "kind": "ReplicationControllerList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Pods -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.2" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myOtherDeploy\u0026var-version=1.0.1", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-run\",\"name\":\"myOtherDeploy-1\",\"uid\":\"51fbc77a-cca1-4fc7-8c13-b9a51753d5f6\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myOtherDeploy; cpu limit for container myOtherDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myOtherDeploy", - "openshift.io/deployment.name": "myOtherDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "generateName": "myOtherDeploy-1-", - "labels": { - "app": "myOtherDeploy", - "deployment": "myOtherDeploy-1", - "deploymentconfig": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.1" - }, - "name": "myOtherDeploy-1-67kvt", - "namespace": "my-run", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myOtherDeploy-1", - "uid": "51fbc77a-cca1-4fc7-8c13-b9a51753d5f6" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-run/pods/myOtherDeploy-1-67kvt", - "uid": "97a6923d-c0b1-4262-8f87-31c1a4153400" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myOtherDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://1f2946e2fd7d0be6c4295c1ed828f0ff4aec21e89df898f9efbaddbe445c5c7c", - "image": "127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-run/myOtherDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myOtherDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.12", - "phase": "Running", - "podIP": "127.0.0.13", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/pods - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"838023666\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T20:40:05Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-nfs9w", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "838024574", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-nfs9w", - "uid": "f04e8f3b-5c4a-4ffd-94ec-0e8bcbc7b468" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:25Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T20:40:05Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://f425202d2f8e1758bd3e5fb681afeab5f4fdd4da93e57a0ea3b6819e40d6d39c", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T20:40:07Z" - } - } - } - ], - "hostIP": "127.0.0.4", - "phase": "Running", - "podIP": "127.0.0.5", - "qosClass": "Burstable", - "startTime": "2018-01-25T20:40:05Z" - } - }, - { - "apiVersion": "v1", - "kind": "Pod", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.3", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.3", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicationController\",\"namespace\":\"my-stage\",\"name\":\"myDeploy-1\",\"uid\":\"b780baac-ca27-4742-8649-e7af7b46fbb8\",\"apiVersion\":\"v1\",\"resourceVersion\":\"837362212\"}}\n", - "kubernetes.io/limit-ranger": "LimitRanger plugin set: cpu request for container myDeploy; cpu limit for container myDeploy", - "openshift.io/deployment-config.latest-version": "1", - "openshift.io/deployment-config.name": "myDeploy", - "openshift.io/deployment.name": "myDeploy-1", - "openshift.io/scc": "restricted" - }, - "creationTimestamp": "2018-01-25T16:33:06Z", - "deletionTimestamp": "2018-01-26T16:33:06Z", - "generateName": "myDeploy-1-", - "labels": { - "app": "myDeploy", - "deployment": "myDeploy-1", - "deploymentconfig": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "myspace", - "version": "1.0.3" - }, - "name": "myDeploy-1-sdmzq", - "namespace": "my-stage", - "ownerReferences": [ - { - "apiVersion": "v1", - "blockOwnerDeletion": true, - "controller": true, - "kind": "ReplicationController", - "name": "myDeploy-1", - "uid": "b780baac-ca27-4742-8649-e7af7b46fbb8" - } - ], - "resourceVersion": "837363149", - "selfLink": "/api/v1/namespaces/my-stage/pods/myDeploy-1-sdmzq", - "uid": "447b7d6f-7072-4e9a-8cba-7e29c2f53761" - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "Always", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpu": "488m", - "memory": "250Mi" - }, - "requests": { - "cpu": "29m", - "memory": "150Mi" - } - }, - "securityContext": { - "capabilities": { - "drop": [ - "KILL", - "MKNOD", - "NET_RAW", - "SETGID", - "SETUID" - ] - }, - "privileged": false, - "runAsUser": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File", - "volumeMounts": [ - { - "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", - "name": "default-token-jzp5t", - "readOnly": true - } - ] - } - ], - "dnsPolicy": "ClusterFirst", - "imagePullSecrets": [ - { - "name": "default-dockercfg-k77kj" - } - ], - "nodeName": "my.node", - "nodeSelector": { - "type": "compute" - }, - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": { - "fsGroup": 123456, - "seLinuxOptions": { - "level": "s0:c123,c456" - } - }, - "serviceAccount": "default", - "serviceAccountName": "default", - "terminationGracePeriodSeconds": 30, - "volumes": [ - { - "name": "default-token-jzp5t", - "secret": { - "defaultMode": 420, - "secretName": "default-token-jzp5t" - } - } - ] - }, - "status": { - "conditions": [ - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "Initialized" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:26Z", - "status": "True", - "type": "Ready" - }, - { - "lastProbeTime": null, - "lastTransitionTime": "2018-01-25T16:33:06Z", - "status": "True", - "type": "PodScheduled" - } - ], - "containerStatuses": [ - { - "containerID": "docker://e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317", - "image": "127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imageID": "docker-pullable://127.0.0.1:5000/my-stage/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "lastState": {}, - "name": "myDeploy", - "ready": true, - "restartCount": 0, - "state": { - "running": { - "startedAt": "2018-01-25T16:33:08Z" - } - } - } - ], - "hostIP": "127.0.0.2", - "phase": "Running", - "podIP": "127.0.0.3", - "qosClass": "Burstable", - "startTime": "2018-01-25T16:33:06Z" - } - } - ], - "kind": "PodList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Services -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myOtherDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myOtherDeploy/master-1.0.1", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myOtherDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myOtherDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myOtherDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:29:24Z", - "labels": { - "app": "myOtherDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.1" - }, - "name": "myOtherDeploy", - "namespace": "my-run", - "resourceVersion": "837351634", - "selfLink": "/api/v1/namespaces/my-run/services/myOtherDeploy", - "uid": "b8a09642-a164-4491-a3b5-9e990e977bab" - }, - "spec": { - "clusterIP": "127.0.0.102", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myOtherDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - }, - { - "apiVersion": "v1", - "kind": "Service", - "metadata": { - "annotations": { - "fabric8.io/exposeUrl": "http://myDeploy-my-run.example.com", - "fabric8.io/git-branch": "ebaron/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com/myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy", - "prometheus.io/port": "9779", - "prometheus.io/scrape": "true" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "labels": { - "app": "myDeploy", - "expose": "true", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "837362353", - "selfLink": "/api/v1/namespaces/my-run/services/myDeploy", - "uid": "f4e6e2b2-f86d-4e78-94e5-079bb3f0b05d" - }, - "spec": { - "clusterIP": "127.0.0.101", - "ports": [ - { - "name": "http", - "port": 8080, - "protocol": "TCP", - "targetPort": 8080 - } - ], - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "sessionAffinity": "None", - "type": "ClusterIP" - }, - "status": { - "loadBalancer": {} - } - } - ], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/services - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [], - "kind": "ServiceList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Resource Quotas -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:14Z", - "name": "compute-resources", - "namespace": "my-run", - "resourceVersion": "1048952505", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/compute-resources", - "uid": "d87810f4-fe36-4d39-9df0-43f08e676c1e" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "1.9", - "limits.memory": "950Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-run", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-run/resourcequotas/object-counts", - "uid": "4921ce39-c361-43b2-81bd-f3cc066e1f0d" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "2", - "secrets": "11", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-stage/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:15Z", - "name": "compute-resources", - "namespace": "my-stage", - "resourceVersion": "1066766807", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/compute-resources", - "uid": "b72ae154-730d-470d-b610-d34a6a7d271c" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "976m", - "limits.memory": "500Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "my-stage", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/my-stage/resourcequotas/object-counts", - "uid": "74ad59a6-3071-454b-a719-7c07a3a8e7df" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "5", - "secrets": "9", - "services": "2" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/resourcequotas - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "compute-resources", - "namespace": "myNamespace", - "resourceVersion": "682306837", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/compute-resources", - "uid": "4a83f394-7081-4a54-ac01-7c9ea16e4ac5" - }, - "spec": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "scopes": [ - "NotTerminating" - ] - }, - "status": { - "hard": { - "limits.cpu": "2", - "limits.memory": "1Gi" - }, - "used": { - "limits.cpu": "0.2", - "limits.memory": "250Mi" - } - } - }, - { - "apiVersion": "v1", - "kind": "ResourceQuota", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "object-counts", - "namespace": "myNamespace", - "resourceVersion": "1117398667", - "selfLink": "/api/v1/namespaces/myNamespace/resourcequotas/object-counts", - "uid": "2928ac2c-d240-4582-a4fb-a0edf65c8069" - }, - "spec": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - } - }, - "status": { - "hard": { - "persistentvolumeclaims": "1", - "replicationcontrollers": "20", - "secrets": "20", - "services": "5" - }, - "used": { - "persistentvolumeclaims": "0", - "replicationcontrollers": "1", - "secrets": "12", - "services": "1" - } - } - } - ], - "kind": "ResourceQuotaList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/newkubeclient-statuserror.yaml b/test/kubernetes/newkubeclient-statuserror.yaml deleted file mode 100644 index 2ce0939c2e..0000000000 --- a/test/kubernetes/newkubeclient-statuserror.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "configmaps \"fabric8-environments\" not found", - "reason": "NotFound", - "details": { - "name": "fabric8-environments", - "kind": "configmaps" - }, - "code": 404 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 diff --git a/test/kubernetes/podquota-emptyresources.yaml b/test/kubernetes/podquota-emptyresources.yaml deleted file mode 100644 index a806694cdc..0000000000 --- a/test/kubernetes/podquota-emptyresources.yaml +++ /dev/null @@ -1,397 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": {}, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Limit Ranges -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/limitranges/resource-limits - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "LimitRange", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "resource-limits", - "namespace": "my-run", - "resourceVersion": "1214680542", - "selfLink": "/api/v1/namespaces/my-run/limitranges/resource-limits", - "uid": "7fcbb12d-d3fe-4e35-8d89-55605c488276" - }, - "spec": { - "limits": [ - { - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Pod" - }, - { - "default": { - "cpu": "1", - "memory": "512Mi" - }, - "defaultRequest": { - "cpu": "20m", - "memory": "256Mi" - }, - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Container" - }, - { - "max": { - "storage": "1Gi" - }, - "min": { - "storage": "1Gi" - }, - "type": "PersistentVolumeClaim" - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 \ No newline at end of file diff --git a/test/kubernetes/podquota-multicontainer.yaml b/test/kubernetes/podquota-multicontainer.yaml deleted file mode 100644 index 3be058202a..0000000000 --- a/test/kubernetes/podquota-multicontainer.yaml +++ /dev/null @@ -1,468 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - }, - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "cpucores": "700m" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Limit Ranges -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/limitranges/resource-limits - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "LimitRange", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "resource-limits", - "namespace": "my-run", - "resourceVersion": "1214680542", - "selfLink": "/api/v1/namespaces/my-run/limitranges/resource-limits", - "uid": "7fcbb12d-d3fe-4e35-8d89-55605c488276" - }, - "spec": { - "limits": [ - { - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Pod" - }, - { - "default": { - "cpu": "1", - "memory": "512Mi" - }, - "defaultRequest": { - "cpu": "20m", - "memory": "256Mi" - }, - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Container" - }, - { - "max": { - "storage": "1Gi" - }, - "min": { - "storage": "1Gi" - }, - "type": "PersistentVolumeClaim" - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 \ No newline at end of file diff --git a/test/kubernetes/podquota-noresources.yaml b/test/kubernetes/podquota-noresources.yaml deleted file mode 100644 index 55a074559c..0000000000 --- a/test/kubernetes/podquota-noresources.yaml +++ /dev/null @@ -1,396 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Limit Ranges -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/limitranges/resource-limits - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "LimitRange", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "resource-limits", - "namespace": "my-run", - "resourceVersion": "1214680542", - "selfLink": "/api/v1/namespaces/my-run/limitranges/resource-limits", - "uid": "7fcbb12d-d3fe-4e35-8d89-55605c488276" - }, - "spec": { - "limits": [ - { - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Pod" - }, - { - "default": { - "cpu": "1", - "memory": "512Mi" - }, - "defaultRequest": { - "cpu": "20m", - "memory": "256Mi" - }, - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Container" - }, - { - "max": { - "storage": "1Gi" - }, - "min": { - "storage": "1Gi" - }, - "type": "PersistentVolumeClaim" - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 \ No newline at end of file diff --git a/test/kubernetes/podquota-split.yaml b/test/kubernetes/podquota-split.yaml deleted file mode 100644 index 21ac220656..0000000000 --- a/test/kubernetes/podquota-split.yaml +++ /dev/null @@ -1,406 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Limit Ranges -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/limitranges/resource-limits - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "LimitRange", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "resource-limits", - "namespace": "my-run", - "resourceVersion": "1214680542", - "selfLink": "/api/v1/namespaces/my-run/limitranges/resource-limits", - "uid": "7fcbb12d-d3fe-4e35-8d89-55605c488276" - }, - "spec": { - "limits": [ - { - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Pod" - }, - { - "default": { - "cpu": "1" - }, - "defaultRequest": { - "cpu": "20m", - "memory": "256Mi" - }, - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Container" - }, - { - "default": { - "memory": "512Mi" - }, - "type": "Container" - }, - { - "max": { - "storage": "1Gi" - }, - "min": { - "storage": "1Gi" - }, - "type": "PersistentVolumeClaim" - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 \ No newline at end of file diff --git a/test/kubernetes/podquota.yaml b/test/kubernetes/podquota.yaml deleted file mode 100644 index 522db325a9..0000000000 --- a/test/kubernetes/podquota.yaml +++ /dev/null @@ -1,415 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-stage/deploymentconfigs/myDeploy - method: GET - response: - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 404 Not Found - code: 404 - # Limit Ranges -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/my-run/limitranges/resource-limits - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "LimitRange", - "metadata": { - "creationTimestamp": "2017-05-10T20:06:06Z", - "name": "resource-limits", - "namespace": "my-run", - "resourceVersion": "1214680542", - "selfLink": "/api/v1/namespaces/my-run/limitranges/resource-limits", - "uid": "7fcbb12d-d3fe-4e35-8d89-55605c488276" - }, - "spec": { - "limits": [ - { - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Pod" - }, - { - "default": { - "cpu": "1", - "memory": "512Mi" - }, - "defaultRequest": { - "cpu": "20m", - "memory": "256Mi" - }, - "max": { - "cpu": "2", - "memory": "1Gi" - }, - "min": { - "cpu": "7m", - "memory": "100Mi" - }, - "type": "Container" - }, - { - "max": { - "storage": "1Gi" - }, - "min": { - "storage": "1Gi" - }, - "type": "PersistentVolumeClaim" - } - ] - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 \ No newline at end of file diff --git a/test/kubernetes/scaledeployment-get-error.yaml b/test/kubernetes/scaledeployment-get-error.yaml deleted file mode 100644 index 32b1708360..0000000000 --- a/test/kubernetes/scaledeployment-get-error.yaml +++ /dev/null @@ -1,463 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -# Deployment Config Scale -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: GET - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 -- request: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 3 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: PUT - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 3 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/scaledeployment-put-error.yaml b/test/kubernetes/scaledeployment-put-error.yaml deleted file mode 100644 index deb5a3b2d2..0000000000 --- a/test/kubernetes/scaledeployment-put-error.yaml +++ /dev/null @@ -1,463 +0,0 @@ ---- -version: 1 -interactions: - # Environments ConfigMap -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/api/v1/namespaces/myNamespace/configmaps/fabric8-environments - method: GET - response: - body: | - { - "apiVersion": "v1", - "data": { - "run": "name: Run\nnamespace: my-run\norder: 2", - "stage": "name: Stage\nnamespace: my-stage\norder: 1", - "test": "name: Test\nnamespace: myNamespace\norder: 0" - }, - "kind": "ConfigMap", - "metadata": { - "annotations": { - "description": "Defines the environments used by your Continuous Delivery pipelines.", - "fabric8.console/iconUrl": "https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg", - "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"run\":\"name: Run\\nnamespace: my-run\\norder: 2\",\"stage\":\"name: Stage\\nnamespace: my-stage\\norder: 1\",\"test\":\"name: Test\\nnamespace: myNamespace\\norder: 0\"},\"kind\":\"ConfigMap\",\"metadata\":{\"annotations\":{\"description\":\"Defines the environments used by your Continuous Delivery pipelines.\",\"fabric8.console/iconUrl\":\"https://cdn.rawgit.com/fabric8io/fabric8-console/master/app-kubernetes/src/main/fabric8/icon.svg\"},\"labels\":{\"app\":\"fabric8-tenant-team\",\"group\":\"io.fabric8.tenant.packages\",\"kind\":\"environments\",\"provider\":\"fabric8\",\"version\":\"2.0.11\"},\"name\":\"fabric8-environments\",\"namespace\":\"myNamespace\"}}\n" - }, - "creationTimestamp": "2018-02-26T18:00:45Z", - "labels": { - "app": "fabric8-tenant-team", - "group": "io.fabric8.tenant.packages", - "kind": "environments", - "provider": "fabric8", - "version": "2.0.11" - }, - "name": "fabric8-environments", - "namespace": "myNamespace", - "resourceVersion": "996068051", - "selfLink": "/api/v1/namespaces/myNamespace/configmaps/fabric8-environments", - "uid": "f808e2e2-1b1e-11e8-ae91-0233cba325d9" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -# Deployment Config Scale -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: GET - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 2 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 3 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: PUT - response: - body: | - { - "kind": "Status", - "apiVersion": "v1", - "metadata": {}, - "status": "Failure", - "message": "some error", - "reason": "BadRequest", - "code": 400 - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 400 Bad Request - code: 400 diff --git a/test/kubernetes/scaledeployment-zero.yaml b/test/kubernetes/scaledeployment-zero.yaml deleted file mode 100644 index c039b0487c..0000000000 --- a/test/kubernetes/scaledeployment-zero.yaml +++ /dev/null @@ -1,428 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -# Deployment Config Scale -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: GET - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": {}, - "status": { - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 1 - }, - "status": { - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: PUT - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 1 - }, - "status": { - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/scaledeployment.yaml b/test/kubernetes/scaledeployment.yaml deleted file mode 100644 index 101f2363cb..0000000000 --- a/test/kubernetes/scaledeployment.yaml +++ /dev/null @@ -1,433 +0,0 @@ ---- -version: 1 -interactions: - # Builds -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/myNamespace/builds?labelSelector=openshift.io%2Fbuild-config.name%3DmyApp%2Cspace%3DmySpace - method: GET - response: - body: | - { - "apiVersion": "v1", - "items": [ - { - "apiVersion": "v1", - "kind": "Build", - "metadata": { - "annotations": { - "environment.services.fabric8.io/my-run": "---\nenvironmentName: \"Run\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-run.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "environment.services.fabric8.io/my-stage": "---\nenvironmentName: \"Stage\"\nserviceUrls:\n myDeploy: \"http://myDeploy-my-stage.example.com\"\ndeploymentVersions:\n myDeploy: \"1.0.3\"\n", - "fabric8.io/bayesian.analysisUrl": "https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc", - "fabric8.io/jenkins.testReportUrl": "nulltestReport", - "fabric8.io/version": "1.0.3", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.number": "1", - "openshift.io/jenkins-build-uri": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/", - "openshift.io/jenkins-log-url": "https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/consoleText", - "openshift.io/jenkins-namespace": "my-jenkins", - "openshift.io/jenkins-pending-input-actions-json": "[{\"id\":\"Proceed\",\"proceedText\":\"Proceed\",\"message\":\"\\nWould you like to promote version 1.0.3 to the next environment?\\n\",\"inputs\":[],\"proceedUrl\":\"//job/myUser/job/myDeploy/job/master/3/wfapi/inputSubmit?inputId=Proceed\",\"abortUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/Proceed/abort\",\"redirectApprovalUrl\":\"//job/myUser/job/myDeploy/job/master/3/input/\"}]", - "openshift.io/jenkins-status-json": "{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/wfapi/describe\"},\"changesets\":null,\"pendingInputActions\":null,\"nextPendingInputAction\":null,\"artifacts\":null},\"id\":\"3\",\"name\":\"#3\",\"status\":\"SUCCESS\",\"startTimeMillis\":1524087821807,\"endTimeMillis\":1524088260580,\"durationMillis\":438773,\"queueDurationMillis\":1,\"pauseDurationMillis\":0,\"stages\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/20/wfapi/describe\"},\"log\":null},\"id\":\"20\",\"name\":\"Build Release\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087895667,\"durationMillis\":313263,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/21/wfapi/describe\"},\"log\":null},\"id\":\"21\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898053,\"durationMillis\":277,\"pauseDurationMillis\":0,\"parentNodes\":[\"20\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/22/wfapi/describe\"},\"log\":null},\"id\":\"22\",\"name\":\"Read a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"pom.xml\",\"startTimeMillis\":1524087898330,\"durationMillis\":46,\"pauseDurationMillis\":0,\"parentNodes\":[\"21\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/23/wfapi/describe\"},\"log\":null},\"id\":\"23\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"patching maven plugin for fabric8-maven-plugin v3.5.38\",\"startTimeMillis\":1524087898376,\"durationMillis\":11,\"pauseDurationMillis\":0,\"parentNodes\":[\"22\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/24/wfapi/describe\"},\"log\":null},\"id\":\"24\",\"name\":\"Write a maven project file.\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524087898387,\"durationMillis\":1213,\"pauseDurationMillis\":0,\"parentNodes\":[\"23\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/25/wfapi/describe\"},\"log\":null},\"id\":\"25\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -U -DnewVersion=1.0.3\",\"startTimeMillis\":1524087899600,\"durationMillis\":23026,\"pauseDurationMillis\":0,\"parentNodes\":[\"24\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/26/wfapi/describe\"},\"log\":null},\"id\":\"26\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn clean -B -e -U deploy -Dmaven.test.skip=false -P openshift\",\"startTimeMillis\":1524087922626,\"durationMillis\":270944,\"pauseDurationMillis\":0,\"parentNodes\":[\"25\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/27/wfapi/describe\"},\"log\":null},\"id\":\"27\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/surefire-reports/*.xml\",\"startTimeMillis\":1524088193570,\"durationMillis\":202,\"pauseDurationMillis\":0,\"parentNodes\":[\"26\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/28/wfapi/describe\"},\"log\":null},\"id\":\"28\",\"name\":\"Publish JUnit test result report\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088193772,\"durationMillis\":1583,\"pauseDurationMillis\":0,\"parentNodes\":[\"27\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/29/wfapi/describe\"},\"log\":null},\"id\":\"29\",\"name\":\"Find files in the workspace\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"**/failsafe-reports/*.xml\",\"startTimeMillis\":1524088195355,\"durationMillis\":843,\"pauseDurationMillis\":0,\"parentNodes\":[\"28\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/30/wfapi/describe\"},\"log\":null},\"id\":\"30\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196198,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"29\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/31/wfapi/describe\"},\"log\":null},\"id\":\"31\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088196199,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"30\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/32/wfapi/describe\"},\"log\":null},\"id\":\"32\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/jenkins.testReportUrl: nulltestReport' to Build myApp-1\",\"startTimeMillis\":1524088196200,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"31\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/33/wfapi/describe\"},\"log\":null},\"id\":\"33\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088196201,\"durationMillis\":1302,\"pauseDurationMillis\":0,\"parentNodes\":[\"32\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/34/wfapi/describe\"},\"log\":null},\"id\":\"34\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking bayesian-link exists\",\"startTimeMillis\":1524088197503,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"33\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/35/wfapi/describe\"},\"log\":null},\"id\":\"35\",\"name\":\"Shell Script\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn io.github.stackinfo:stackinfo-maven-plugin:0.2:prepare\",\"startTimeMillis\":1524088197504,\"durationMillis\":9508,\"pauseDurationMillis\":0,\"parentNodes\":[\"34\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/38/wfapi/describe\"},\"log\":null},\"id\":\"38\",\"name\":\"Bayesian Analysis\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"https://bayesian-link\",\"startTimeMillis\":1524088207019,\"durationMillis\":800,\"pauseDurationMillis\":0,\"parentNodes\":[\"37\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/39/wfapi/describe\"},\"log\":null},\"id\":\"39\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Looking for matching Build myApp-1\",\"startTimeMillis\":1524088207819,\"durationMillis\":2,\"pauseDurationMillis\":0,\"parentNodes\":[\"38\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/40/wfapi/describe\"},\"log\":null},\"id\":\"40\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Adding annotation 'fabric8.io/bayesian.analysisUrl: https://recommender.api.openshift.io/api/v1/stack-analyses/8f35139bef364d51bb97c0ea92ad01bc' to Build myApp-1\",\"startTimeMillis\":1524088207821,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"39\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/41/wfapi/describe\"},\"log\":null},\"id\":\"41\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"looking for myApp-1 in namespace myNamespace\",\"startTimeMillis\":1524088207822,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"40\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/44/wfapi/describe\"},\"log\":null},\"id\":\"44\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking sonarqube exists\",\"startTimeMillis\":1524088208189,\"durationMillis\":66,\"pauseDurationMillis\":0,\"parentNodes\":[\"43\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/45/wfapi/describe\"},\"log\":null},\"id\":\"45\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Code validation service: sonarqube not available\",\"startTimeMillis\":1524088208255,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"44\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/46/wfapi/describe\"},\"log\":null},\"id\":\"46\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"s2i mode: true\",\"startTimeMillis\":1524088208256,\"durationMillis\":121,\"pauseDurationMillis\":0,\"parentNodes\":[\"45\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/47/wfapi/describe\"},\"log\":null},\"id\":\"47\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Checking content-repository exists\",\"startTimeMillis\":1524088208377,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"46\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/48/wfapi/describe\"},\"log\":null},\"id\":\"48\",\"name\":\"Print Message\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"mvn site disabled\",\"startTimeMillis\":1524088208378,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"47\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/49/wfapi/describe\"},\"log\":null},\"id\":\"49\",\"name\":\"Stash some files to be used later in the build\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088208379,\"durationMillis\":547,\"pauseDurationMillis\":0,\"parentNodes\":[\"48\"]}],\"allChildNodeIds\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/62/wfapi/describe\"},\"log\":null},\"id\":\"62\",\"name\":\"Rollout to Stage\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209074,\"durationMillis\":6811,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/63/wfapi/describe\"},\"log\":null},\"id\":\"63\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088209080,\"durationMillis\":6801,\"pauseDurationMillis\":0,\"parentNodes\":[\"62\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/64/wfapi/describe\"},\"log\":null},\"id\":\"64\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-stage\",\"startTimeMillis\":1524088215881,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"63\"]}],\"allChildNodeIds\":[\"63\",\"64\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/68/wfapi/describe\"},\"log\":null},\"id\":\"68\",\"name\":\"Approve\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215896,\"durationMillis\":38155,\"pauseDurationMillis\":38033,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/69/wfapi/describe\"},\"log\":null},\"id\":\"69\",\"name\":\"Sends a message with proceed/abort instructions to a hubot chat room for a project\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088215985,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"68\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/70/wfapi/describe\"},\"log\":null},\"id\":\"70\",\"name\":\"Creates an Approve requested event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"Stage\",\"startTimeMillis\":1524088215986,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"69\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/73/wfapi/describe\"},\"log\":null},\"id\":\"73\",\"name\":\"Wait for interactive input\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088216000,\"durationMillis\":38032,\"pauseDurationMillis\":38032,\"parentNodes\":[\"72\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/76/wfapi/describe\"},\"log\":null},\"id\":\"76\",\"name\":\"Updates an Approve event in Elasticsearch\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"true\",\"startTimeMillis\":1524088254047,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"75\"]}],\"allChildNodeIds\":[\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/80/wfapi/describe\"},\"log\":null},\"id\":\"80\",\"name\":\"Rollout to Run\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254060,\"durationMillis\":6492,\"pauseDurationMillis\":0,\"stageFlowNodes\":[{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/81/wfapi/describe\"},\"log\":null},\"id\":\"81\",\"name\":\"Restore files previously stashed\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":null,\"startTimeMillis\":1524088254066,\"durationMillis\":6481,\"pauseDurationMillis\":0,\"parentNodes\":[\"80\"]},{\"_links\":{\"self\":{\"href\":\"https://jenkins.openshift.io/job/myUser/job/myDeploy/job/master/3/execution/node/82/wfapi/describe\"},\"log\":null},\"id\":\"82\",\"name\":\"Apply resources to Kubernetes, lazily creating environments and routes\",\"execNode\":\"\",\"status\":\"SUCCESS\",\"error\":null,\"parameterDescription\":\"my-run\",\"startTimeMillis\":1524088260547,\"durationMillis\":1,\"pauseDurationMillis\":0,\"parentNodes\":[\"81\"]}],\"allChildNodeIds\":[\"81\",\"82\"]}]}" - }, - "creationTimestamp": "2018-04-18T21:28:24Z", - "labels": { - "buildconfig": "myApp", - "openshift.io/build-config.name": "myApp", - "openshift.io/build.start-policy": "Serial", - "space": "mySpace" - }, - "name": "myApp-1", - "namespace": "myNamespace", - "ownerReferences": [ - { - "apiVersion": "build.openshift.io/v1", - "controller": true, - "kind": "BuildConfig", - "name": "myApp", - "uid": "b4bde2cd-fc5c-4e1d-9c37-8fb07ee6c30f" - } - ], - "resourceVersion": "1083508128", - "selfLink": "/oapi/v1/namespaces/myNamespace/builds/myApp-1", - "uid": "cc39e185-f392-40fe-9862-d7f559d17e3b" - }, - "spec": { - "nodeSelector": {}, - "output": {}, - "postCommit": {}, - "resources": {}, - "serviceAccount": "builder", - "source": { - "git": { - "uri": "https://example.com/myApp.git" - }, - "type": "Git" - }, - "strategy": { - "jenkinsPipelineStrategy": { - "env": [ - { - "name": "FABRIC8_SPACE", - "value": "mySpace" - } - ], - "jenkinsfilePath": "Jenkinsfile" - }, - "type": "JenkinsPipeline" - }, - "triggeredBy": [ - { - "message": "Forge triggered" - } - ] - }, - "status": { - "completionTimestamp": "2018-04-18T21:51:00Z", - "config": { - "kind": "BuildConfig", - "name": "myApp", - "namespace": "myNamespace" - }, - "output": {}, - "phase": "Complete", - "startTimestamp": "2018-04-18T21:43:41Z" - } - } - ], - "kind": "BuildList", - "metadata": {}, - "resourceVersion": "", - "selfLink": "" - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 - # Deployment Configs -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy - method: GET - response: - body: | - { - "apiVersion": "v1", - "kind": "DeploymentConfig", - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": "2018-01-25T16:33:02Z", - "generation": 3, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - }, - "name": "myDeploy", - "namespace": "my-run", - "resourceVersion": "838024578", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b" - }, - "spec": { - "replicas": 2, - "revisionHistoryLimit": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "strategy": { - "activeDeadlineSeconds": 21600, - "resources": {}, - "rollingParams": { - "intervalSeconds": 1, - "maxSurge": "25%", - "maxUnavailable": "25%", - "timeoutSeconds": 3600, - "updatePeriodSeconds": 1 - }, - "type": "Rolling" - }, - "template": { - "metadata": { - "annotations": { - "fabric8.io/git-branch": "myUser/myDeploy/master-1.0.2", - "fabric8.io/git-commit": "55ca6286e3e4f4fba5d0448333fa99fc5a404a73", - "fabric8.io/iconUrl": "img/icon.svg", - "fabric8.io/metrics-path": "dashboard/file/kubernetes-pods.json/?var-project=myDeploy\u0026var-version=1.0.2", - "fabric8.io/scm-con-url": "scm:git:https://example.com/myDeploy", - "fabric8.io/scm-devcon-url": "scm:git:git:@example.com:myDeploy", - "fabric8.io/scm-tag": "myTag", - "fabric8.io/scm-url": "https://example.com/myDeploy" - }, - "creationTimestamp": null, - "labels": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8", - "space": "mySpace", - "version": "1.0.2" - } - }, - "spec": { - "containers": [ - { - "env": [ - { - "name": "KUBERNETES_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "image": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4", - "imagePullPolicy": "IfNotPresent", - "livenessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 180, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "name": "myDeploy", - "ports": [ - { - "containerPort": 8080, - "name": "http", - "protocol": "TCP" - }, - { - "containerPort": 9779, - "name": "prometheus", - "protocol": "TCP" - }, - { - "containerPort": 8778, - "name": "jolokia", - "protocol": "TCP" - } - ], - "readinessProbe": { - "failureThreshold": 3, - "httpGet": { - "path": "/", - "port": 8080, - "scheme": "HTTP" - }, - "initialDelaySeconds": 10, - "periodSeconds": 10, - "successThreshold": 1, - "timeoutSeconds": 1 - }, - "resources": { - "limits": { - "memory": "250Mi" - } - }, - "securityContext": { - "privileged": false - }, - "terminationMessagePath": "/dev/termination-log", - "terminationMessagePolicy": "File" - } - ], - "dnsPolicy": "ClusterFirst", - "restartPolicy": "Always", - "schedulerName": "default-scheduler", - "securityContext": {}, - "terminationGracePeriodSeconds": 30 - } - }, - "test": false, - "triggers": [ - { - "type": "ConfigChange" - }, - { - "imageChangeParams": { - "automatic": true, - "containerNames": [ - "myDeploy" - ], - "from": { - "kind": "ImageStreamTag", - "name": "myDeploy:1.0.2", - "namespace": "my-run" - }, - "lastTriggeredImage": "127.0.0.1:5000/my-run/myDeploy@sha256:98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4" - }, - "type": "ImageChange" - } - ] - }, - "status": { - "availableReplicas": 2, - "conditions": [ - { - "lastTransitionTime": "2018-01-25T16:33:06Z", - "lastUpdateTime": "2018-01-25T16:33:27Z", - "message": "replication controller \"myDeploy-1\" successfully rolled out", - "reason": "NewReplicationControllerAvailable", - "status": "True", - "type": "Progressing" - }, - { - "lastTransitionTime": "2018-01-25T20:40:25Z", - "lastUpdateTime": "2018-01-25T20:40:25Z", - "message": "Deployment config has minimum availability.", - "status": "True", - "type": "Available" - } - ], - "details": { - "causes": [ - { - "type": "ConfigChange" - } - ], - "message": "config change" - }, - "latestVersion": 1, - "observedGeneration": 3, - "readyReplicas": 2, - "replicas": 2, - "unavailableReplicas": 0, - "updatedReplicas": 2 - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -# Deployment Config Scale -- request: - body: "" - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: GET - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 2 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 -- request: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 3 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - form: {} - headers: - Content-Type: - - application/json - url: http://api.myCluster/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale - method: PUT - response: - body: | - { - "kind": "Scale", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "myDeploy", - "namespace": "my-run", - "selfLink": "/oapi/v1/namespaces/my-run/deploymentconfigs/myDeploy/scale", - "uid": "8db1c9ba-91b5-46c6-be99-576245f42b3b", - "resourceVersion": "838024578", - "creationTimestamp": "2018-01-25T16:33:02Z" - }, - "spec": { - "replicas": 3 - }, - "status": { - "replicas": 2, - "selector": { - "app": "myDeploy", - "group": "myGroup", - "provider": "fabric8" - }, - "targetSelector": "app=myDeploy,group=myGroup,provider=fabric8" - } - } - headers: - Content-Type: - - application/json;charset=UTF-8 - status: 200 OK - code: 200 diff --git a/test/kubernetes/urlprovider-tenant-default.json b/test/kubernetes/urlprovider-tenant-default.json deleted file mode 100644 index 87eba6910b..0000000000 --- a/test/kubernetes/urlprovider-tenant-default.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "id": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes": { - "email": "user@domain.tld", - "profile": "", - "namespaces": [ - { - "name": "myDefaultNS", - "type": "", - "_valid_type_values": "user|che|jenkins|stage|test|run", - "state": "Running", - "cluster-app-domain" : "", - "cluster-console-url" : "https://cnsl.host1.com/ccc", - "cluster-logging-url" : "https://lgging.host2.com/lll", - "cluster-metrics-url" : "https://mtrcs.host3.com/mmm", - "cluster-url" : "https://api.hostname/api" - }, - { - "name": "someEnvNS2", - "type": "", - "_valid_type_values": "user|che|jenkins|stage|test|run", - "state": "Running", - "cluster-app-domain" : "", - "cluster-console-url" : "https://cnsl.junk1.com/ccc", - "cluster-logging-url" : "https://lgging.junk2.com/lll", - "cluster-metrics-url" : "https://mtrcs.junk3.com/mmm", - "cluster-url" : "https://api.hostname2/api" - } - ] - } -} \ No newline at end of file diff --git a/test/kubernetes/urlprovider-tenant-malformed.json b/test/kubernetes/urlprovider-tenant-malformed.json deleted file mode 100644 index 3db0b95d7c..0000000000 --- a/test/kubernetes/urlprovider-tenant-malformed.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "notanid": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes": { - "email": "user@domain.tld", - "profile": "", - "namespaces": [ - { - "name": "someEnvNS", - "type": "", - "_valid_type_values": "user|che|jenkins|stage|test|run", - "state": "Running", - "cluster-app-domain" : "", - "cluster-url" : "https://api.somehost/api" - } - ] - } -} \ No newline at end of file diff --git a/test/kubernetes/urlprovider-tenant-missingurls.json b/test/kubernetes/urlprovider-tenant-missingurls.json deleted file mode 100644 index 654b3b66ae..0000000000 --- a/test/kubernetes/urlprovider-tenant-missingurls.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "id": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes": { - "email": "user@domain.tld", - "profile": "", - "namespaces": [ - { - "name": "myDefaultNS", - "type": "", - "_valid_type_values": "user|che|jenkins|stage|test|run", - "state": "Running", - "cluster-app-domain" : "", - "cluster-url" : "https://api.somehost/api" - } - ] - } -} \ No newline at end of file diff --git a/test/kubernetes/urlprovider-user-services-empty-type.json b/test/kubernetes/urlprovider-user-services-empty-type.json deleted file mode 100644 index 5213977c99..0000000000 --- a/test/kubernetes/urlprovider-user-services-empty-type.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "id": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes":{ - "email": "user@domain.tld", - "profile": "", - "namespaces":[ - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.808462Z", - "name":"theuser", - "state":"created", - "type":"user", - "updated-at":"2018-01-17T14:56:24.808462Z", - "version":"1.0.91" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.913676Z", - "name":"theuser-stage", - "state":"created", - "type":"", - "updated-at":"2018-01-17T14:56:24.913676Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.081509Z", - "name":"theuser-run", - "state":"created", - "type":"run", - "updated-at":"2018-01-17T14:56:25.081509Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.131629Z", - "name":"theuser-che", - "state":"created", - "type":"che", - "updated-at":"2018-01-17T14:56:25.131629Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.145606Z", - "name":"theuser-jenkins", - "state":"created", - "type":"jenkins", - "updated-at":"2018-01-17T14:56:25.145606Z", - "version":"2.0.8" - } - ] - } - } \ No newline at end of file diff --git a/test/kubernetes/urlprovider-user-services-no-type.json b/test/kubernetes/urlprovider-user-services-no-type.json deleted file mode 100644 index 0c1b50b01c..0000000000 --- a/test/kubernetes/urlprovider-user-services-no-type.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "id": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes":{ - "email": "user@domain.tld", - "profile": "", - "namespaces":[ - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.808462Z", - "name":"theuser", - "state":"created", - "type":"user", - "updated-at":"2018-01-17T14:56:24.808462Z", - "version":"1.0.91" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.913676Z", - "name":"theuser-stage", - "state":"created", - "updated-at":"2018-01-17T14:56:24.913676Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.081509Z", - "name":"theuser-run", - "state":"created", - "type":"run", - "updated-at":"2018-01-17T14:56:25.081509Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.131629Z", - "name":"theuser-che", - "state":"created", - "type":"che", - "updated-at":"2018-01-17T14:56:25.131629Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.145606Z", - "name":"theuser-jenkins", - "state":"created", - "type":"jenkins", - "updated-at":"2018-01-17T14:56:25.145606Z", - "version":"2.0.8" - } - ] - } - } \ No newline at end of file diff --git a/test/kubernetes/urlprovider-user-services.json b/test/kubernetes/urlprovider-user-services.json deleted file mode 100644 index 28a6d2b6de..0000000000 --- a/test/kubernetes/urlprovider-user-services.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "id": "240dd5ce-23b8-11e8-95d6-507b9dac9ad3", - "type": "tenant", - "attributes":{ - "email": "user@domain.tld", - "profile": "", - "namespaces":[ - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.808462Z", - "name":"theuser", - "state":"created", - "type":"user", - "updated-at":"2018-01-17T14:56:24.808462Z", - "version":"1.0.91" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:24.913676Z", - "name":"theuser-stage", - "state":"created", - "type":"stage", - "updated-at":"2018-01-17T14:56:24.913676Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.081509Z", - "name":"theuser-run", - "state":"created", - "type":"run", - "updated-at":"2018-01-17T14:56:25.081509Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.131629Z", - "name":"theuser-che", - "state":"created", - "type":"che", - "updated-at":"2018-01-17T14:56:25.131629Z", - "version":"2.0.8" - }, - { - "cluster-app-domain":"1b7d.free-stg.openshiftapps.com", - "cluster-console-url":"https://console.free-stg.openshift.com/console/", - "cluster-logging-url":"https://console.free-stg.openshift.com/console/", - "cluster-metrics-url":"https://metrics.free-stg.openshift.com/", - "cluster-url":"https://api.free-stg.openshift.com/", - "created-at":"2018-01-17T14:56:25.145606Z", - "name":"theuser-jenkins", - "state":"created", - "type":"jenkins", - "updated-at":"2018-01-17T14:56:25.145606Z", - "version":"2.0.8" - } - ] - } - } \ No newline at end of file